操作系統(tǒng)常見體系結(jié)構(gòu)
簡單體系結(jié)構(gòu)計算機操作系統(tǒng)誕生初期,其體系結(jié)構(gòu)就屬于簡單體系結(jié)構(gòu),由于當時各式各樣影響因素的作用,如硬件性能、平臺、軟件水平等方面的限制,使得當時的計算機操作系統(tǒng)結(jié)構(gòu)呈現(xiàn)出一種混亂且結(jié)構(gòu)模糊的狀態(tài),其操作系統(tǒng)的用戶應用程序和其內(nèi)核程序魚龍混雜,甚至其運行的地址和空間都是一致的。這種操作系統(tǒng)實際上就是一系列過程和項目的簡單組合,使用的模塊方法也相對較為粗糙,因此導致其結(jié)構(gòu)宏觀上非常模糊。
單體內(nèi)核結(jié)構(gòu)隨著科學技術(shù)的不斷發(fā)展和進步,硬件及其平臺的水平和性能得到了很大程度的提高,其數(shù)量和種類也與日俱增,操作系統(tǒng)的復雜性也逐漸加深,其具備的功能以及性能越來越多,在此背景下,單體內(nèi)核結(jié)構(gòu)的操作系統(tǒng)誕生并得到了應用,例如UNIX操作系統(tǒng)、windows NT/XP等。一般情況下,單體內(nèi)核結(jié)構(gòu)的操作系統(tǒng)主要具備以下幾種功能,分別是文件及內(nèi)存管理、設(shè)備驅(qū)動、CPU調(diào)度以及網(wǎng)絡(luò)協(xié)議處理等。由于內(nèi)核的復雜性不斷加深,相關(guān)的開發(fā)設(shè)計人員為了實現(xiàn)對其良好的控制,逐漸開始使用了一些較為成熟的模塊化方法,并根據(jù)其不同的功能將其進行結(jié)構(gòu)化,進而將其劃分為諸多的模塊,例如文件及內(nèi)存管理模塊、驅(qū)動模塊、CPU調(diào)度模塊及網(wǎng)絡(luò)協(xié)議處理等。這些模塊所使用的地址和空間與內(nèi)核使用的完全一致,其以函數(shù)調(diào)用的方式構(gòu)建了用于通訊的結(jié)構(gòu)來實現(xiàn)各個模塊之間的通訊。在使用模塊化的方法以后,只要其通訊接口沒有發(fā)生明顯的變化,即使整個結(jié)構(gòu)中的任何一個模塊發(fā)生變化也不會對結(jié)構(gòu)中的其他模塊造成任何的影響,為其系統(tǒng)的維護和改良擴充提供了便利。雖然單體內(nèi)核結(jié)構(gòu)的計算機操作系統(tǒng)經(jīng)過了模塊化的處理,但是其中的全部模塊仍然是在硬件之上、應用軟件之下的操作系統(tǒng)核心中運轉(zhuǎn)和工作。模塊與模塊之間活動的層次沒有任何的差別。 [1]
層次式結(jié)構(gòu)層次式結(jié)構(gòu)的計算機操作系統(tǒng)是為了減少以往操作系統(tǒng)中各個模塊之間由于聯(lián)系緊密而帶來的各種問題而誕生的,其可以做大程度的減少甚至是避免循環(huán)調(diào)用現(xiàn)象的發(fā)生,確保調(diào)用有序,為操作系統(tǒng)設(shè)計目標的實現(xiàn)奠定了堅實的基礎(chǔ)。在層次式結(jié)構(gòu)的計算機操作系統(tǒng)之中,其是由諸多系統(tǒng)分為若干個層次的,其最底層是硬件技術(shù),其他每一個層級均是建立在其下一層級之上的。在設(shè)計其計算機操作系統(tǒng)內(nèi)核時,主要采用與抽象數(shù)據(jù)類型十分類似的設(shè)計方法進行的,在系統(tǒng)中的每一個層級均包含著多種數(shù)據(jù)和操作,且每一個的數(shù)據(jù)和操作是其他層不可見的,在每一層當中都配備了用于其他層使用的一操作接口,同時每一層發(fā)生的訪問行為只能針對其下層進行,不能訪問其上層的數(shù)據(jù)和服務,嚴格遵守了調(diào)用規(guī)則,在很大程度上避免了其他層次對某一層次的干擾和破壞。對于理想的層次式計算機系統(tǒng)體系結(jié)構(gòu)來說,其之間的聯(lián)系不僅僅是單向依賴性的,同時各個層級之間也要具備相互的獨立性,且只能對低層次的模塊和功能進行調(diào)用,例如THE系統(tǒng)。但是這種理想的全序?qū)哟问接嬎銠C操作系統(tǒng)在現(xiàn)實中建成是較為困難的,其無法完全避免模塊之間循環(huán)調(diào)用現(xiàn)象的出現(xiàn),某個層級之間仍舊存在某種循環(huán)關(guān)系,這種層次式結(jié)構(gòu)又被叫作半序?qū)哟问接嬎銠C操作系統(tǒng),例如SUE操作系統(tǒng)。 [1]
微內(nèi)核結(jié)構(gòu)微內(nèi)核計算機操作系統(tǒng)體系結(jié)構(gòu)又可以被叫作客戶機結(jié)構(gòu)或者服務器結(jié)構(gòu),其實際上就是一種將系統(tǒng)中的代碼轉(zhuǎn)移到更高層次當中,盡可能地減少操作系統(tǒng)中的東西,僅僅保留一個小體積的內(nèi)核,一般情況下其使用的主要方法就是通過用戶進程來實現(xiàn)操作系統(tǒng)所具備的各項功能,具體來說就是用戶進程可以將相關(guān)的請求和要求發(fā)送到服務器當中,然后由服務器完成相關(guān)的操作以后在通過某種渠道反饋到用戶進程當中。在微內(nèi)核結(jié)構(gòu)中,操作系統(tǒng)的內(nèi)核主要工作就是對客戶端和服務器之間的通信進行處理,在系統(tǒng)中包括許多部分,每一個部分均具備某一方面的功能,例如文件服務、進程服務、終端服務等,這樣的部分相對較小,相關(guān)的管理工作也較為便利。這種機構(gòu)的服務的運行都是以用戶進程的形式呈現(xiàn)的,既不在核心中運行,也不直接地對硬件進行訪問,這樣一來即使服務器發(fā)生錯誤或受到破壞也不會對系統(tǒng)造成影響,僅僅只是會造成相對應服務器的崩潰。 [1]
外核結(jié)構(gòu)外核結(jié)構(gòu)的計算機操作系統(tǒng)本質(zhì)上就是為了獲得更高的性能和靈活性而設(shè)計出來的,在系統(tǒng)中,操作系統(tǒng)接口處于硬件層,在內(nèi)核中提出全部由以往操作系統(tǒng)帶來的抽象,并將重點和關(guān)鍵放在了更多硬件資源的復用方面。在操作系統(tǒng)的外核結(jié)構(gòu)中,內(nèi)核負責的主要工作僅僅為簡單的申請操作以及釋放和復用硬件資源,其由以往操作系統(tǒng)提供的抽象全部在用戶空間當中運行。 [1] 一般情況下,外核結(jié)構(gòu)中的內(nèi)核主要有三大方面的工作,分別是對資源的所有權(quán)進行跟蹤、為操作系統(tǒng)的安全提供保護以及撤銷對資源的訪問行為。在核外,基本上所有的操作系統(tǒng)中的抽象都是以庫的形式呈現(xiàn)出來的,而用戶在訪問硬件資源時也是通過庫的調(diào)用來完成的。