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