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