操作系統(tǒng)的基本功能
操作系統(tǒng)有兩個(gè)基本的任務(wù):
創(chuàng)建一個(gè)有多自治抽象組件的虛擬機(jī)環(huán)境,其中的大多數(shù)組件可以并發(fā)運(yùn)行。例如,操作系統(tǒng)使用多道程序設(shè)計(jì)來為每個(gè)進(jìn)程創(chuàng)建一個(gè)虛擬機(jī)。根據(jù)計(jì)算機(jī)管理員的策略來協(xié)調(diào)組件的使用。例如,調(diào)度器決定什么時(shí)機(jī)、選擇什么進(jìn)程為它分配處理器。操作系統(tǒng)的創(chuàng)建部分提供了程序員使用的各種抽象資源(如進(jìn)程、線程和資源)。協(xié)調(diào)部分管理這些資源的并發(fā)使用,并使得一組進(jìn)程可以協(xié)同工作。
大家在提供操作系統(tǒng)所需的功能集合上意見有分歧。每類操作系統(tǒng)都根據(jù)工程和市場(chǎng)策略來提供相應(yīng)的功能集。我們的目標(biāo)就是要學(xué)習(xí)操作系統(tǒng)功能后面的基本原理,并將這此原理應(yīng)用到特定操作系統(tǒng)的實(shí)驗(yàn)中去。操作系統(tǒng)功能可以
分為以下4類:
我們將使用這些一般化的特征作為框架來考慮詳細(xì)需求、設(shè)計(jì)問題、體系結(jié)構(gòu)和實(shí)現(xiàn)。我們首先來考慮這些操作系統(tǒng)組件的一般化描述。
設(shè)備管理
操作系統(tǒng)根據(jù)設(shè)計(jì)者或系統(tǒng)管理員選擇的策略,來管理設(shè)備的分配、隔離以及共享使用。甚至不支持多道程序設(shè)計(jì)的操作系統(tǒng)也采取了設(shè)備管理策略。大多數(shù)的操作系統(tǒng)都使用相同的管理方法來管理如磁盤、磁帶、終端以及打印機(jī)等不同設(shè)備分析系統(tǒng)基本功能,而對(duì)處理器和內(nèi)存則采用特殊的管理方法。設(shè)備管理指的是一般設(shè)備的處理方法。
設(shè)備管理包括廠設(shè)備相關(guān)部分和設(shè)備無關(guān)部分。設(shè)備相關(guān)部分,也稱作設(shè)備驅(qū)動(dòng)程序(),實(shí)現(xiàn)了具體設(shè)備的設(shè)備管理方法。例如,當(dāng)鍵盤上的某個(gè)鍵被按下時(shí),鍵盤設(shè)備驅(qū)動(dòng)程序能用來探測(cè)來自鍵盤的擊鍵。
設(shè)備管理的無關(guān)部分定義了一個(gè)設(shè)備相關(guān)驅(qū)動(dòng)程序可以執(zhí)行的軟件環(huán)境。例如,無關(guān)部分包括了系統(tǒng)調(diào)用接口并能將調(diào)用導(dǎo)向特定的設(shè)備驅(qū)動(dòng)程序。設(shè)備管理系統(tǒng)的設(shè)備無關(guān)部分相對(duì)來說比較小,大部分功能是在一組設(shè)備驅(qū)動(dòng)程序中實(shí)現(xiàn)的。
使得在計(jì)算機(jī)上增加設(shè)備得到了簡(jiǎn)化。首先,操作系統(tǒng)設(shè)計(jì)者需將設(shè)備管理分成要知道哪些部分是設(shè)備相關(guān)的,哪些部分是設(shè)備無關(guān)的。無關(guān)的部分在操作系統(tǒng)內(nèi)部實(shí)現(xiàn)(它們能與所有的設(shè)備打交道),相關(guān)部分是在具體設(shè)備的設(shè)備驅(qū)動(dòng)程序中實(shí)現(xiàn)的。這意味著設(shè)備管理的無關(guān)部分可以使用系統(tǒng)調(diào)用來讀寫任何設(shè)備。打印機(jī)設(shè)備驅(qū)動(dòng)程序包含了具體打印機(jī)(如打印機(jī))的所有軟件。因?yàn)闊o關(guān)部分是所有設(shè)備的一層抽象并內(nèi)嵌在操作系統(tǒng)中,所以設(shè)計(jì)者隨時(shí)可以為新設(shè)備添加設(shè)備驅(qū)動(dòng)程序到操作系統(tǒng)。
2.進(jìn)程、線程和資源管理
進(jìn)程和線程是程序員所定義的計(jì)算的基本運(yùn)行單位,而(抽象)資源是進(jìn)程執(zhí)行所需要的計(jì)算環(huán)境中的元素。操作系統(tǒng)的這一部分軟件在硬件之上實(shí)現(xiàn)了虛擬機(jī),它創(chuàng)建了進(jìn)程、線程和資源的抽象。操作系統(tǒng)的這部分軟件負(fù)責(zé)管理硬件處理器資源和各種抽象資源(如消息)。與存儲(chǔ)管理部分一起擔(dān)負(fù)部分內(nèi)存管理的工作。
進(jìn)程管理、線程管理和資源管理可以分成獨(dú)立的邏輯單元,但是大部分操作系統(tǒng)將它們組合成一個(gè)單獨(dú)的模塊,因?yàn)樗鼈円黄鸲x了虛擬機(jī)環(huán)境的基本部分。
3.存儲(chǔ)管理
存儲(chǔ)管理器通過與進(jìn)程管理器協(xié)作來管理內(nèi)存資源的分配和使用。每個(gè)進(jìn)程會(huì)根據(jù)它的程序定義請(qǐng)求和使用內(nèi)存存儲(chǔ)管理器根據(jù)特定的策略來為進(jìn)程分配內(nèi)存,并且加強(qiáng)共享限制。一個(gè)允許共享的策略與沒有共享的策略相比,前者的設(shè)計(jì)要復(fù)雜得多,所以,在隔離機(jī)制存在的情況下,允許存儲(chǔ)管理器采取塊共享的機(jī)制來實(shí)現(xiàn)資源共享。
現(xiàn)代存儲(chǔ)管理器提供了虛擬存儲(chǔ)器( )擴(kuò)展功能,因而虛擬機(jī)的內(nèi)存似乎比機(jī)器的物理內(nèi)存大得多,它是通過集成了計(jì)算機(jī)的主存和輔存來實(shí)現(xiàn)的,這樣允許進(jìn)程訪問在輔存設(shè)備上的存儲(chǔ)內(nèi)容,如同它存儲(chǔ)在主存中一樣。虛擬存儲(chǔ)器的管理要求與傳統(tǒng)的不同,即系統(tǒng)要管理一個(gè)抽象資源一一虛擬存儲(chǔ)空間,它必須結(jié)合物理存儲(chǔ)空間的管理方案來管理主存和輔存。
現(xiàn)代存儲(chǔ)管理器可以使得一個(gè)機(jī)器上的線程可以訪問和共享關(guān)機(jī)器的物理存儲(chǔ)器,通過互連網(wǎng)傳遞和接收消息,提供了一個(gè)分布式的共享存儲(chǔ)器抽象。在這種情形下,存儲(chǔ)管理器結(jié)合了它的“本地”存儲(chǔ)管理功能和網(wǎng)絡(luò)設(shè)備的功能。
4.文件管理
文件是一個(gè)存儲(chǔ)設(shè)備的抽象。當(dāng)進(jìn)程釋放所使用的內(nèi)存時(shí),存儲(chǔ)在內(nèi)存中的信息將會(huì)被覆蓋重寫,信息必須被保存到如光盤或磁盤等永久存儲(chǔ)設(shè)備中。文件管理器通過與設(shè)備管理器和存儲(chǔ)管理器進(jìn)行交互來實(shí)現(xiàn)了這種抽象。
根據(jù)需求,不同的文件管理器對(duì)存儲(chǔ)設(shè)備提供了不同的抽象,有的將文件作為簡(jiǎn)單的字節(jié)流的模型,有的將文件作為可索引記錄的模型。
在現(xiàn)代操作系統(tǒng)中,文件系統(tǒng)是分布式的分析系統(tǒng)基本功能,因此,一個(gè)機(jī)器上的進(jìn)程可以讀寫存儲(chǔ)在它的本地系統(tǒng)中的文件,也可以通過網(wǎng)絡(luò)讀寫在其他機(jī)器存儲(chǔ)設(shè)備中的文件。