我覺得學(xué)習(xí)某樣知識的最大原動力在于,當(dāng)你覺得現(xiàn)有知識不足以解決當(dāng)前問題的時候的求知欲。為了徹底與系統(tǒng)底層做個了斷。今天開始全面復(fù)習(xí)系統(tǒng)底層知識,從操作系統(tǒng)開始吧,到UNIX,再到虛擬機(jī)。我希望自己能把一件事情的本質(zhì),用自己的話講出來。
一、操作系統(tǒng)是什么計算機(jī)是什么?說白了,硬件加軟件的集合。操作系統(tǒng)是什么?是操作最底層硬件的那層軟件。有了操作系統(tǒng),我們就無需外部輸入1010這樣的二進(jìn)制信息讓計算機(jī)處理了,這么說吧,計算機(jī)硬件是一組資源,操作系統(tǒng)把這些資源都封裝了,讓你可以更方便的使用它。
對于計算機(jī)的資源,可以分為4類,按照教科書上的說法,就是處理器、存儲器、I/O設(shè)備以及信息(數(shù)據(jù)和程序),說白了,指的就是CPU、內(nèi)存、輸入輸出設(shè)備(鼠標(biāo)、鍵盤、顯示器等等)、硬盤和硬盤上的軟件。操作系統(tǒng)封裝了計算機(jī)硬件系統(tǒng),并且管理計算機(jī)的4種資源,這就是操作系統(tǒng)的功能。很容易理解吧。
二、操作系統(tǒng)發(fā)展歷程操作系統(tǒng)的發(fā)展歷程很重要,它可以讓我們意識到,技術(shù)改進(jìn)最重要的作用,就是改變目前最迫切需要改變的東西。
這里三言兩語介紹一下操作系統(tǒng)的發(fā)展歷程。
(1) 人工操作方式。傳說中的紙帶操作。把程序和數(shù)據(jù)用最簡單的紙帶記錄下來,然后通過紙帶輸入(I/O)進(jìn)計算機(jī)(內(nèi)存),然后計算機(jī)運行。這時候我們可以看到,計算機(jī)I/O和信息(硬盤程序、數(shù)據(jù))都是通過簡單的紙帶來存儲并傳送的。速度當(dāng)然慢。
(2) 脫機(jī)輸入/輸出方式。這個跟紙帶也脫不了關(guān)系,不過是將紙帶信息預(yù)先裝進(jìn)磁帶上,然后計算機(jī)運行的時候,程序和信息從磁帶調(diào)入內(nèi)存。這樣的速度當(dāng)然大大提升了。我們可以看到,這種方式,說白了就是給計算機(jī)增加了一個簡單的硬盤,程序和數(shù)據(jù)放在硬盤上,而不是紙帶上。
(3) 單批道處理系統(tǒng)。這是最早的操作系統(tǒng)了。CPU控制“監(jiān)督程序”將磁帶上的一個作業(yè)(程序和數(shù)據(jù))調(diào)入內(nèi)存,然后運行它,然后調(diào)用下一個作業(yè)入內(nèi)存,再運行它。這樣依次運行完磁帶上的所有作業(yè)。系統(tǒng)內(nèi)存中一個時刻只有一道程序在運行,CPU也只是單線程的處理完IO再處理程序這樣循環(huán)。
(4) 多道批處理系統(tǒng)。這是效率非常高的一種操作系統(tǒng)。用戶提交的作業(yè)在硬盤上并排成一個隊列,然后調(diào)度程序把若干作業(yè)放進(jìn)內(nèi)存。某個作業(yè)執(zhí)行的時候,遇到IO請求,不阻塞,不讓CPU空閑,而是讓CPU去執(zhí)行內(nèi)存中的另一個作業(yè)。這樣各個作業(yè)輪流執(zhí)行,CPU等系統(tǒng)資源盡可能的保持占用。
(5) 分時系統(tǒng)。這是一種多用戶系統(tǒng),主要特點就是多用戶同時使用,每個用戶都有自己的終端對計算機(jī)進(jìn)行操作。分時系統(tǒng)采用了非常經(jīng)典的時間片,即每個用戶、每個作業(yè)在一個時間片內(nèi),都依次運行,并只運行一個很短的時間,這樣看上去好像每個用戶都獨占了整個計算機(jī)一樣。分時系統(tǒng)主要用于查詢系統(tǒng)。
(6)實時系統(tǒng)。實時系統(tǒng)可以看作是一種面向內(nèi)部的要求更高更精確的分時系統(tǒng)。不過這種“分時”不一定通過時間片來控制,也可能是通過一個設(shè)定的截止時間來控制。系統(tǒng)內(nèi)部是對多項實時任務(wù)的采集和控制。說白了,就是一種精確的多任務(wù)系統(tǒng)。
(7)微機(jī)操作系統(tǒng)。這個就很簡單啦,分別有單用戶單任務(wù)操作系統(tǒng)(CP/M、MS-DOS等)、單用戶多任務(wù)操作系統(tǒng)(Windows95、XP等)、多用戶多任務(wù)操作系統(tǒng)(UNIX OS等)。
三、操作系統(tǒng)的結(jié)構(gòu)(1)無結(jié)構(gòu)OS(第一代)這是最早期的操作系統(tǒng),僅僅追求功能和實現(xiàn),無需深究。
(2)模塊化結(jié)構(gòu)的OS(第二代)將OS劃分為若干各自獨立的模塊,如進(jìn)程管理模塊、存儲器管理模塊、文件管理模塊等,并將各模塊劃分為各自的子模塊,這樣不斷細(xì)分,系統(tǒng)就有比較清晰的模塊化結(jié)構(gòu)。不過由于模塊化結(jié)構(gòu)設(shè)計中,各個模塊的設(shè)計齊頭并進(jìn),沒有可靠的“決定順序”,這種設(shè)計又被稱為“無序模塊法”。這一代OS在第一代的基礎(chǔ)上加上了模塊的劃分,便前進(jìn)了一大步。
(3)分層式結(jié)構(gòu)的OS(第三代)自底向上的分層設(shè)計,最底層只面向硬件,功能單一而正確,此后每層看待下層都是透明的,功能不斷豐富、往高層不斷抽象,高層只依賴于它的底層。這也是面向?qū)ο笏枷氲捏w現(xiàn)。這種結(jié)構(gòu)與我們熟知的網(wǎng)絡(luò)協(xié)議體系結(jié)構(gòu)非常類似。這種結(jié)構(gòu)在軟件設(shè)計上是非常常見的。簡單說就是按層劃分、不斷抽象,每層只操作下一層。
(4)微內(nèi)核結(jié)構(gòu)的OS(現(xiàn)代結(jié)構(gòu)OS)微內(nèi)核結(jié)構(gòu)的OS將系統(tǒng)劃分為兩大部分:微內(nèi)核和多個系統(tǒng)服務(wù)器。微內(nèi)核指的是足夠小的、能實現(xiàn)現(xiàn)代OS最基本功能的部分。它負(fù)責(zé)于硬件最基本的聯(lián)系、與外層系統(tǒng)服務(wù)器通信這兩大基本功能。外層系統(tǒng)服務(wù)器指的是操作系統(tǒng)內(nèi)部的,將各種系統(tǒng)服務(wù)都抽象為一種模塊化的服務(wù)器結(jié)構(gòu),用一個進(jìn)程來表示,如文件服務(wù)器、進(jìn)程服務(wù)器等。我們都知道,服務(wù)器的本質(zhì)就是對消息的請求和響應(yīng),這十分適用于當(dāng)今系統(tǒng)所要求的分布式處理。用一個足夠簡單和高效率的微內(nèi)核來對各個服務(wù)器進(jìn)行實際的處理,各個服務(wù)器是總體而言是模塊化的,而服務(wù)器本身是建立在分層次的OS上的,這種設(shè)計模式不但可靠,而且擴(kuò)展性和性能都非常優(yōu)越。這種設(shè)計實在是優(yōu)雅。
新聞熱點
疑難解答