3.主存儲器管理
主存儲器是現(xiàn)代計算機(jī)系統(tǒng)運(yùn)行的核心。主存儲器是由字或字節(jié)組成的大型隊列,每個字或字節(jié)都有它自己的地址。主存儲器是CPU 和I/O 設(shè)備共享的大容量快速存儲器。中央處理器在取指令周期中從主存儲器中讀取指令,而且在取數(shù)據(jù)周期中從主存儲器中讀/寫數(shù)據(jù)。通過DMA(動態(tài)內(nèi)存存取),I/O操作也實現(xiàn)了對主存儲器的數(shù)據(jù)讀/寫。通常主存儲器是CPU唯一能夠直接尋址和訪問的大容量存儲空間。例如,CPU要處理磁盤中的數(shù)據(jù),那么CPU首先發(fā)出I/O調(diào)用將這些數(shù)據(jù)傳送到主存儲器中。同樣,指令必須在存儲器中才能夠由CPU執(zhí)行。
必須要把程序映射到絕對地址并載入內(nèi)存中才可以執(zhí)行。在程序運(yùn)行時,它通過產(chǎn)生絕對地址來從內(nèi)存中訪問程序指令和數(shù)據(jù)。最后,程序結(jié)束,釋放所占的內(nèi)存空間,方便下一個程序載入。
為了提高CPU利用率和計算機(jī)響應(yīng)速度,必須在內(nèi)存中保留多個程序。有許多不同的內(nèi)存管理策略,而且不同算法的效率取決于具體的環(huán)境。為具體的系統(tǒng)選擇內(nèi)存管理策略要考慮許多因素——尤其是系統(tǒng)的硬件設(shè)計。每種算法都需要自己的硬件支持。
操作系統(tǒng)要負(fù)責(zé)下列與內(nèi)存管理相關(guān)的工作:
跟蹤內(nèi)存使用情況,明確哪一部分正在使用和為誰所用;
在內(nèi)存空間有效時決定將哪個進(jìn)程載入內(nèi)存;
根據(jù)需要分配和釋放內(nèi)存空間。
4.文件管理
文件管理是操作系統(tǒng)中可視性最強(qiáng)的組件之一。計算機(jī)能夠?qū)?shù)據(jù)存儲在各種類型的物理介質(zhì)上。磁帶、磁盤和光盤是最常用的介質(zhì)。每種介質(zhì)都有自己的特性和物理結(jié)構(gòu)。每個存儲媒體由一個驅(qū)動器控制(如磁盤驅(qū)動器或磁帶驅(qū)動器),這種驅(qū)動器也有自己的獨(dú)有特性。這些特性包括訪問速度、容量、數(shù)據(jù)傳輸率和存取方式(順序的或隨機(jī)的)。
為了便于使用計算機(jī)系統(tǒng),操作系統(tǒng)提供了一個計算機(jī)系統(tǒng)的整體邏輯層面。操作系統(tǒng)把存儲設(shè)備的物理屬性抽象定義為一個邏輯存儲單元——文件。文件被映像到物理媒介中,通過存儲設(shè)備來訪問這些文件。
文件是由其創(chuàng)建者定義的相關(guān)信息的集合。一般的文件表現(xiàn)為程序(源程序和目標(biāo)代碼)和數(shù)據(jù)。數(shù)據(jù)文件可能是數(shù)字的、字母的或二者混合的。文件可能是形式自由的(如文本文件),也可能有嚴(yán)格定義的格式(如固定字段)。由字、字節(jié)、行或記錄組成的文件結(jié)構(gòu)是其創(chuàng)建者定義的。文件概念具有相當(dāng)廣泛的含義。
操作系統(tǒng)通過管理大容量存儲體(如由驅(qū)動器控制的磁盤和磁帶)實現(xiàn)了文件的抽象概念。另外,為了更簡易地使用文件,通常將他們組織到目錄中。最后,如果有多個用戶訪問文件,可能需要控制誰以什么樣的方式訪問(例如:讀、寫、追加)。
操作系統(tǒng)要負(fù)責(zé)下列與文件管理相關(guān)的工作:
創(chuàng)建和刪除文件;
創(chuàng)建和刪除目錄;
將文件映像到輔助存儲器中;
將文件備份到永久(非易失性)存儲體中。
5.I/O系統(tǒng)管理
操作系統(tǒng)的目的之一就是要向用戶隱藏具體的硬件特性。例如,在UNIX 中,通過I/O 子系統(tǒng)向操作系統(tǒng)隱藏了I/O設(shè)備的特性。I/O子系統(tǒng)由以下幾個方面組成:
一個內(nèi)存管理模塊,這包括Buffering、Caching 和SPOOLing;
一個通用設(shè)備驅(qū)動程序接口;
針對具體硬件設(shè)備的驅(qū)動程序。
6.輔助存儲器管理
操作系統(tǒng)的主要目的是執(zhí)行程序。這些程序在運(yùn)行時(以及它們要訪問的數(shù)據(jù))都必須在主存儲器中。因為主存儲器的容量太小不能存儲所有的程序和數(shù)據(jù),而且掉電后會丟失所有的存儲信息,所以計算機(jī)系統(tǒng)必須要提供輔助存儲器作為主存儲器的后備。大多數(shù)現(xiàn)代計算機(jī)系統(tǒng)使用磁盤作為存儲程序和數(shù)據(jù)的主要聯(lián)機(jī)存儲體。大多數(shù)程序(包括編譯程序、匯編程序、排列程序、編輯程序和格式化程序)在載入內(nèi)存之前存儲在磁盤上,并且在運(yùn)行時利用磁盤存儲它們所處理的源文件和目標(biāo)文件。因此,合理的磁盤管理對一個計算機(jī)系統(tǒng)來說是至關(guān)重要的。
操作系統(tǒng)要負(fù)責(zé)下列與輔助存儲器管理相關(guān)的工作:
空閑空間管理;
空間分配;
磁盤調(diào)度。
因為頻繁地使用輔助存儲器,所以必須要能夠高效運(yùn)行。而且計算機(jī)的整體運(yùn)行速度取決于磁盤子系統(tǒng)的速度和該子系統(tǒng)實現(xiàn)算法的效率。
7.網(wǎng)絡(luò)管理
分布式系統(tǒng)是一個處理機(jī)的集合,這些處理機(jī)既不共享內(nèi)存和外圍設(shè)備,也不共享時鐘。而是每個處理機(jī)擁有自己的本地內(nèi)存和時鐘,并且這些處理機(jī)可以通過各種通信線路(如高速總線或網(wǎng)絡(luò))進(jìn)行通信。一個分布式系統(tǒng)中的處理機(jī)在規(guī)模和功能上有所不同,其中可能包括小型微處理器、工作站、小型機(jī)和大型通用計算機(jī)。
在(分布式)系統(tǒng)中,處理機(jī)通過通信網(wǎng)絡(luò)相連接,有多種不同的方法可以配置該網(wǎng)絡(luò)。這種網(wǎng)絡(luò)可以完全或部分地連接。通信網(wǎng)絡(luò)的設(shè)計必須要考慮報文路由選擇和連接策略,以及爭用和安全的問題。
分布式系統(tǒng)將物理上相互獨(dú)立的可能不同種類的系統(tǒng)集合成為一個獨(dú)立相連的系統(tǒng),它具有向用戶提供訪問由系統(tǒng)維護(hù)的各種資源的能力。對共享資源的訪問加快了計算速度、增強(qiáng)了系統(tǒng)功能、提高了數(shù)據(jù)的可用性并加強(qiáng)了可靠性。操作系統(tǒng)把網(wǎng)絡(luò)細(xì)節(jié)包含在了網(wǎng)絡(luò)接口設(shè)備驅(qū)動程序中,于是將網(wǎng)絡(luò)訪問泛化為一種文件訪問的形式。因此,分布式系統(tǒng)所使用的協(xié)議在很大程度上影響到系統(tǒng)的效率和普及。
8.系統(tǒng)保護(hù)
如果一個計算機(jī)系統(tǒng)有多個用戶并允許并行執(zhí)行多個進(jìn)程,那么必須要保護(hù)各個進(jìn)程免受其他進(jìn)程的侵?jǐn)_。為此,需要提供一種機(jī)制來保證只有那些從操作系統(tǒng)獲取了合適權(quán)限的進(jìn)程能夠操作文件、存儲段、CPU和其他資源。
例如,內(nèi)存尋址硬件確保了一個進(jìn)程只能在自己的地址空間內(nèi)執(zhí)行,計時器確保進(jìn)程最終能夠放棄對CPU的控制,用戶不能夠訪問設(shè)備控制寄存器;這樣,就保護(hù)了各種外圍設(shè)備的完整性。
保護(hù)是操作系統(tǒng)定義的控制程序,是進(jìn)程或用戶訪問的機(jī)制。這個機(jī)制必須要提供一種方法來描述要施加的控制,以及強(qiáng)制執(zhí)行的方法。
通過檢測子系統(tǒng)接口中潛伏的錯誤,保護(hù)能夠增強(qiáng)系統(tǒng)的可靠性。對接口錯誤的早期檢測常常能夠阻止一個子系統(tǒng)故障波及到其他正常的子系統(tǒng)。一個未受保護(hù)的資源難以防止未授權(quán)或不適當(dāng)?shù)挠脩舻氖褂?或誤用)。一個面向保護(hù)的系統(tǒng)提供了一種區(qū)分授權(quán)的和未授權(quán)的使用方法。
9.操作系統(tǒng)服務(wù)
操作系統(tǒng)提供了程序運(yùn)行的環(huán)境。它為程序和程序用戶提供了特定的服務(wù)。當(dāng)然,不同的操作系統(tǒng)提供的具體服務(wù)不同,但是我們能夠找出其共同部分。提供的這些操作系統(tǒng)服務(wù)是為了便于程序員設(shè)計程序。具體如下。
程序執(zhí)行:系統(tǒng)必須能夠?qū)⒊绦蜉d入內(nèi)存并運(yùn)行它。程序必須能夠正常地或異常地(指示錯誤)結(jié)束運(yùn)行。
I/O 操作:一個正在運(yùn)行的程序可能要請求I/O 操作。這可能會涉及文件或I/O 設(shè)備。針對具體的設(shè)備,需要特定的功能(如倒卷一個磁帶驅(qū)動器或清空一個CRT屏幕顯示)。出于系統(tǒng)效率和保護(hù)的原因,用戶通常不能夠直接控制I/O 設(shè)備。因此,操作系統(tǒng)必須要提供一種I/O 運(yùn)行機(jī)制。
文件系統(tǒng)處理:文件系統(tǒng)相當(dāng)有意思。顯然,程序需要能夠讀寫文件,也要能夠創(chuàng)建和刪除文件。
通信:在很多情況下,一個進(jìn)程需要與另外一個進(jìn)程交換信息。通信有兩種主要的方式。第一種方式是在運(yùn)行在同一臺計算機(jī)上的進(jìn)程間通信;另外一種方式是運(yùn)行在由一個計算機(jī)網(wǎng)絡(luò)連接的不同的計算機(jī)系統(tǒng)上的進(jìn)程間通信?梢酝ㄟ^共享存儲器或報文傳送(這種方式中,操作系統(tǒng)在進(jìn)程之間將信息打包移動)的方式實現(xiàn)進(jìn)程間的通信。
錯誤檢測:操作系統(tǒng)需要經(jīng)常注意可能發(fā)生的錯誤。錯誤可能發(fā)生在CPU、內(nèi)存(如存儲錯誤或電源故障)、I/O 設(shè)備(如磁帶奇偶檢驗錯誤、連結(jié)網(wǎng)絡(luò)失敗或打印機(jī)缺紙)及用戶程序(如運(yùn)算溢出、試圖訪問非法存儲器地址或過多占用CPU 時間)中。對于每種類型的錯誤,操作系統(tǒng)應(yīng)該能夠采取針對性措施以確保計算的正確性和相容性。
另外,操作系統(tǒng)還存在另外一些功能,它們不是為了幫助用戶工作,而是為了確保系統(tǒng)本身的高效運(yùn)行。如:
資源分配:當(dāng)多個用戶登錄到系統(tǒng)中或同時有多個作業(yè)運(yùn)行時,必須要在它們之間分配資源。操作系統(tǒng)管理許多不同類型的資源。有些資源(如CPU 周期、主存儲器和外存儲器)可能有專用的分配代碼,而其他的(如I/O 設(shè)備)可能有更通用的請求和釋放代碼。例如,在決定如何最好地使用CPU 的問題上,操作系統(tǒng)的CPU 調(diào)度程序要考慮CPU 速度、必須要執(zhí)行的作業(yè)、有效的寄存器數(shù)量和其他的一些因素;
賬戶管理:我們希望跟蹤記錄每個用戶使用哪些類型的計算機(jī)資源和用了多少。這個記錄保持可能用于記賬(以便用戶付賬)或簡單地用于累加使用率統(tǒng)計。對于研究者來說,使用率統(tǒng)計可能是個有效的工具。利用使用率統(tǒng)計,研究者可以重新配制系統(tǒng)以改善計算服務(wù);
保護(hù):存儲在多用戶計算機(jī)系統(tǒng)上的信息的所有者希望能夠控制對該信息的使用。當(dāng)多個不相關(guān)的進(jìn)程并發(fā)執(zhí)行時,一個進(jìn)程不應(yīng)該能夠干擾其他進(jìn)程或操作系統(tǒng)本身。保護(hù)包括了監(jiān)控所有對系統(tǒng)資源的訪問。對來自外界的系統(tǒng)安全檢測(security)也是非常重要的。這種保護(hù)往往通過密碼的方式,用戶向系統(tǒng)驗證口令才能訪問資源。它也包括了保護(hù)外部I/O 設(shè)備(包括調(diào)制解調(diào)器和網(wǎng)絡(luò)適配器)免于非法的訪問企圖和記錄所有這樣的非法闖入。如果一個系統(tǒng)受到保護(hù)并且是安全的,那么就必須要建立預(yù)防措施。一般,系統(tǒng)的安全強(qiáng)度與其最薄弱的一個環(huán)節(jié)密切相關(guān)。