早期的計(jì)算機(jī)系統(tǒng)其實(shí)是沒有操作系統(tǒng)的,因?yàn)椴僮飨到y(tǒng)本身也是靠計(jì)算機(jī)硬件執(zhí)行的一種程序。因此,操作系統(tǒng)就是一種可以提供給其他程序編寫并運(yùn)行的程序。由程序來運(yùn)行程序,而不是由程序自己來運(yùn)行,這是操作系統(tǒng)提供的一種虛擬化表現(xiàn)。
1.早期計(jì)算機(jī)單任務(wù)模式
早期計(jì)算機(jī)只允許同一時(shí)間執(zhí)行一個(gè)任務(wù)。比如開機(jī),從軟盤或者其他介質(zhì)上執(zhí)行程序,直到執(zhí)行完畢或者人為中斷。執(zhí)行完后拿出介質(zhì),再插入另一張介質(zhì),重新載入執(zhí)行另一個(gè)新的程序。在執(zhí)行程序的過程中,一旦意外終止,就要重新運(yùn)行。
如果有10個(gè)人要用一臺計(jì)算機(jī)來執(zhí)行程序,第一個(gè)人拿著他的軟盤,上面有一個(gè)數(shù)學(xué)題計(jì)算程序,他插入軟盤,然后靛啟機(jī)器,掃描器從軟盤特定的扇區(qū)載入程序代碼執(zhí)行。結(jié)果顯示在顯示器上,比如這個(gè)程序2個(gè)小時(shí)運(yùn)行完畢,第一個(gè)人從顯示器上抄下結(jié)果.走了。后面有9個(gè)人在排隊(duì)等待用計(jì)算機(jī)。然后第二個(gè)人同樣拿著他的軟盤,插入軟驅(qū),重啟……每次更換程序,都需要重新啟動機(jī)器,簡直就是夢魘。再者,如果某個(gè)程序運(yùn)行期間。會有空閑狀態(tài),則其他程序也仍然需要等待,CPU只能在那里空振蕩。
2.操作系統(tǒng)的多任務(wù)模式
操作系統(tǒng)的出現(xiàn)解決了這兩個(gè)問題。操作系統(tǒng)本身也是一段程序,計(jì)算機(jī)加電之后,首先運(yùn)行操作系統(tǒng),隨時(shí)可以載入其他程序執(zhí)行,也就是說它可以隨時(shí)從軟盤上讀取其他程序的代碼,并切換到這段代碼上讓CPU執(zhí)行,執(zhí)行完畢后則立即切換回操作系統(tǒng)本身。但是每次也總是要等待這個(gè)程序執(zhí)行完畢,才能接著載入下一個(gè)程序執(zhí)行。當(dāng)被載入的程序執(zhí)行的時(shí)候,不能做任何其他的事情,包括操作系統(tǒng)本身的程序模塊,任何產(chǎn)生中斷的事件,都會中斷正在運(yùn)行的程序。
程序執(zhí)行完畢之后,會將CPU使用權(quán)歸還操作系統(tǒng),從而繼續(xù)操作系統(tǒng)本身的運(yùn)行。這種操作系統(tǒng)稱為單任務(wù)操作系統(tǒng),典型代表就是DOS。
一絲在 DOS中載入一個(gè)程序執(zhí)行,如果沒有任何中斷事件發(fā)生,則這個(gè)程序就獨(dú)占CPU,執(zhí)行完畢之后,回到DOS操作系統(tǒng),接著可以繼續(xù)執(zhí)行另外一個(gè)程序。經(jīng)過這樣的解決,執(zhí)行多個(gè)程序,期間就再也不用重新啟動機(jī)器了。
在這個(gè)基礎(chǔ)上,操作系統(tǒng)又將多個(gè)程序一個(gè)接一個(gè)的排列起來,成批的執(zhí)行,中途省掉了人為載入程序的過程,這個(gè)叫做批處理。批處理操作系統(tǒng),相對于單任務(wù)操作系統(tǒng)來說,可以順序的、無須人上千預(yù)的批量執(zhí)行程序,比簡單的單任務(wù)操作系統(tǒng)又進(jìn)了一步,但是其本質(zhì)還是單任務(wù)性,即一段時(shí)間之內(nèi),仍然只會觀察到一個(gè)應(yīng)用程序在運(yùn)行,仍然只是一個(gè)程序獨(dú)占資源。
再后來,操作系統(tǒng)針對系統(tǒng)時(shí)鐘中斷,開發(fā)了專門的中斷服務(wù)程序,也就是多任務(wù)操作系統(tǒng)中的調(diào)度程序。時(shí)鐘中斷到來的時(shí)候,CPU根據(jù)中斷向量表的內(nèi)容,指向調(diào)度程序所在的內(nèi)存地址入口,執(zhí)行調(diào)度程序的代碼,調(diào)度程序所作的就是將CPU的執(zhí)行跳轉(zhuǎn)到各個(gè)應(yīng)用程序所在的內(nèi)存地址入口。每次中斷,調(diào)度程序以一定的優(yōu)先級,指向不同程序的入口。這樣就能做到極細(xì)粒度的應(yīng)用程序入口切換,如果遇到某個(gè)程序還沒有執(zhí)行完畢就被切出了,則操作系統(tǒng)會自動將這個(gè)程序的運(yùn)行狀態(tài)保存起來,待下次輪到的時(shí)候,提取出來繼續(xù)執(zhí)行。比如每10ms中斷一次,那么也就是說每個(gè)應(yīng)用程序,,可以運(yùn)行10ms的時(shí)間。然后CPU運(yùn)行下一個(gè)程序,這樣依次輪回。微觀上,每個(gè)程序運(yùn)行的時(shí)候,還是獨(dú)占CPU,但是這個(gè)獨(dú)占的時(shí)間非常小,通常10ms,那么一秒就可以在宏觀上同時(shí)運(yùn)行100個(gè)程序。這就是多任務(wù)操作系統(tǒng)。多任務(wù)操作系統(tǒng)的關(guān)鍵,就是具有多任務(wù)調(diào)度程序。
通過這樣的虛擬化,運(yùn)行在操作系統(tǒng)之上的所有程序都會認(rèn)為自己是獨(dú)占一臺計(jì)算機(jī)的硬件運(yùn)行。
3.虛擬化的好處
上面說了計(jì)算機(jī)硬件以及操作系統(tǒng),其實(shí)計(jì)算機(jī)系統(tǒng)從誕生的那一天開始,就在不斷地進(jìn)行著虛擬化過程,時(shí)至今日,計(jì)算機(jī)虛擬化進(jìn)程依然在壇快發(fā)展著。
硬件邏輯被虛擬化成匯編語句,匯編語句再次被封裝,虛擬化成高級語言的語句。高級語言的語句,再次被封裝,形成一個(gè)特定目的的程序,或者稱為函數(shù),然后這些函數(shù),再通過互相調(diào)用,生成更復(fù)雜的函數(shù),再將這些函數(shù)組合起來,就形成了最終的應(yīng)用程序。程序再被操作系統(tǒng)虛擬成一個(gè)可執(zhí)行文件。其實(shí)這個(gè)文件代表廠什么呢?到了底層,其實(shí)就是一次一次的對CPU的電路信號刺激。也就是說,硬件電路邏輯,一層層的被虛擬化,最終虛擬成一個(gè)程序。程序就是對底層電路上下文邏輯的另種表達(dá)形式。
虛擬化的好處顯而易見,虛擬化將下層的復(fù)雜邏輯,轉(zhuǎn)變?yōu)樯蠈拥暮唵芜壿,方便人類讀懂,也就是說“科技。以人為本”。任何技術(shù),部是為了將上層邏輯變得更加簡單,而不是越變越復(fù)雜。當(dāng)然使上層越簡單,下層就要做更多的工作,就越復(fù)雜。
整個(gè)計(jì)算機(jī)技術(shù),從開始到現(xiàn)在,就是一個(gè)不斷的抽象、封裝、虛擬、映射的過程,一直到現(xiàn)在還在不斷抽象封裝著,比如Java等比C抽象封裝度更高的高級語言,當(dāng)然使用起來也比C方便和簡單多了,但是隨之而來的,其下層就要復(fù)雜一些,所以Java代碼一般運(yùn)行速度慢,耗費(fèi)資源也大,但是對于現(xiàn)在飛速發(fā)展的硬件能力,是不成問題的。
同樣,CPU也不僅僅只是一味地增加晶體管數(shù)量這么簡單。CPU制造者也在想盡辦法將一些功能封裝到CPU的邏輯電路中,從而出現(xiàn)了更多的指令集,這些指令集就像程序函數(shù)一樣,不必理解它內(nèi)部到底怎么實(shí)現(xiàn)的,只需要發(fā)給CPU, CPU就會啟動邏輯電路計(jì)算。所以CPU的設(shè)計(jì)除了提高主頻之外,更重要的是內(nèi)部邏輯的優(yōu)化,集成度的提高,更多的抽象和封裝。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:操作系統(tǒng)與虛擬化
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112188675.html