第九章操作系統(tǒng)_第1頁
第九章操作系統(tǒng)_第2頁
第九章操作系統(tǒng)_第3頁
第九章操作系統(tǒng)_第4頁
第九章操作系統(tǒng)_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第九章操作系統(tǒng)支持返回第九章操作系統(tǒng)支持 操作系統(tǒng)是管理計算機(jī)資源并為用戶提供服務(wù)的系統(tǒng)軟件,作為硬件與應(yīng)用軟件之間的接口,操作系統(tǒng)起著承上啟下的作用。了解操作系統(tǒng)與硬件之間的相互關(guān)系有助于理解計算機(jī)系統(tǒng)的整體工作過程。本章僅就操作系統(tǒng)與硬件關(guān)系最密切的處理機(jī)調(diào)度與存儲管理問題進(jìn)行討論。9.1操作系統(tǒng)概述一、操作系統(tǒng)的概念計算機(jī)系統(tǒng)大體上可以分為三個部分:硬件、系統(tǒng)軟件和應(yīng)用軟件。硬件是所有軟件運行的物質(zhì)基礎(chǔ)。操作系統(tǒng)(簡稱OS)則是最重要的系統(tǒng)軟件,是管理計算機(jī)系統(tǒng)資源、控制程序執(zhí)行的系統(tǒng)軟件。操作系統(tǒng)作為計算機(jī)用戶與計算機(jī)硬件之間的接口程序,向用戶和應(yīng)用軟件提供各種服務(wù),合理組織計算機(jī)工作

2、流程,并為用戶使用計算機(jī)提供良好運行環(huán)境。操作系統(tǒng)已經(jīng)成為現(xiàn)代計算機(jī)系統(tǒng)不可分割的重要組成部分。操作系統(tǒng)依托計算機(jī)硬件并在其基礎(chǔ)上提供許多新的服務(wù)和功能,從而使用戶能夠方便、可靠、安全、高效地操縱計算機(jī)硬件并運行應(yīng)用程序。9.1操作系統(tǒng)概述二、操作系統(tǒng)的主要目標(biāo)歸結(jié)為以下幾點:管理系統(tǒng)資源:操作系統(tǒng)能有效管理系統(tǒng)中的所有硬件資源和軟件資源,使資源得到充分利用。提高系統(tǒng)效率:操作系統(tǒng)能合理地組織計算機(jī)的工作流程,改進(jìn)系統(tǒng)性能,提高系統(tǒng)效率。方便用戶使用:通過向用戶提供友好的用戶界面,操作系統(tǒng)能讓用戶更方便、更輕松地使用計算機(jī)系統(tǒng)。增強(qiáng)機(jī)器功能:操作系統(tǒng)能通過擴(kuò)充改造硬件部件并提供新的服務(wù)來增強(qiáng)機(jī)

3、器功能。構(gòu)筑開放環(huán)境:操作系統(tǒng)通過遵循相關(guān)技術(shù)標(biāo)準(zhǔn)的方式支持體系結(jié)構(gòu)的可伸縮性和可擴(kuò)展性,支持應(yīng)用程序在不同平臺上的移植和互操作。9.1.2操作系統(tǒng)的功能操作系統(tǒng)的核心任務(wù):管理計算機(jī)系統(tǒng)中的資源。從資源管理的角度來看,作為資源管理器的操作系統(tǒng)對計算機(jī)硬件資源的管理主要體現(xiàn)在以下三個方面:處理器管理存儲器管理設(shè)備管理9.1.2操作系統(tǒng)的功能處理機(jī)管理:處理機(jī)是最重要的硬件資源,因為所有軟件的執(zhí)行和系統(tǒng)功能的實現(xiàn)都依賴于處理機(jī)。因此,能否充分發(fā)揮處理機(jī)的效能,是系統(tǒng)功能和性能的關(guān)鍵。早期的計算機(jī)系統(tǒng)是單用戶、單任務(wù)系統(tǒng),處理機(jī)僅為一個用戶的一個任務(wù)服務(wù)見圖所示。演示9.1.2操作系統(tǒng)的功能現(xiàn)代的

4、計算機(jī)系統(tǒng)廣泛采用多任務(wù)機(jī)制支持多個程序或多個用戶并行使用計算機(jī)。在引入多任務(wù)機(jī)制后,當(dāng)一個作業(yè)需等待I/O操作等外部條件滿足時,處理機(jī)轉(zhuǎn)去執(zhí)行另一個作業(yè),從而實現(xiàn)多任務(wù)的并行執(zhí)行。操作系統(tǒng)負(fù)責(zé)組織多個任務(wù)的并行執(zhí)行,并負(fù)責(zé)解決處理機(jī)的調(diào)度、分配和回收等問題。多務(wù)系統(tǒng)運行兩道程序時處理機(jī)的使用效率見圖演示9.1.2操作系統(tǒng)的功能存儲管理:按照馮諾依曼體系結(jié)構(gòu),無論是指令還是操作數(shù),都存儲在內(nèi)存儲器中。因此存儲系統(tǒng)的性能對系統(tǒng)整體性能的影響非常大。隨著現(xiàn)代計算機(jī)系統(tǒng)的存儲系統(tǒng)層次結(jié)構(gòu)的復(fù)雜化,操作系統(tǒng)擔(dān)負(fù)的存儲管理任務(wù)也越來越繁雜。尤其在多任務(wù)系統(tǒng)中。(1)存儲分配:即根據(jù)程序的需要為其分配存儲

5、器資源,在方便存儲器使用的同時又要保證存儲器的高利用率。(2)存儲共享:允許主存中的多個任務(wù)或多個用戶程序共享存儲器資源,這一方面可以提高存儲器的利用率,另一方面又便于多任務(wù)間的數(shù)據(jù)交換。(3)存儲保護(hù):確保用戶程序不會有意或無意地訪問或破壞操作系統(tǒng)的關(guān)鍵代碼和數(shù)據(jù)。各個用戶程序之間也需要相互隔離、互不干擾。(4)存儲擴(kuò)充:基于存儲器的層次結(jié)構(gòu),存儲管理需要為用戶提供與實際物理內(nèi)存空間不直接相關(guān)的邏輯編程空間,并在主存和輔助存儲器的支持下實現(xiàn)邏輯地址空間與物理地址空間之間的映射與變換,方便用戶的編程和使用。9.1.2操作系統(tǒng)的功能設(shè)備管理:設(shè)備管理的主要任務(wù)是進(jìn)行各類外圍設(shè)備的調(diào)度與管理,協(xié)調(diào)

6、各個用戶提出的I/O請求,提高各I/O設(shè)備操作與處理機(jī)運行的并行性,提高處理機(jī)和I/O設(shè)備的利用率。設(shè)備管理還需提供每種設(shè)備的設(shè)備驅(qū)動程序,向用戶屏蔽硬件使用細(xì)節(jié)。9.1.3操作系統(tǒng)的特性及其需要解決的問題操作系統(tǒng)作為計算機(jī)系統(tǒng)的管理者,必須解決一系列復(fù)雜的管理問題。而計算機(jī)系統(tǒng)運行的特性決定著操作系統(tǒng)的策略。并發(fā)性共享性隨機(jī)性等特征。并發(fā)性:為了提高系統(tǒng)資源利用率,多任務(wù)系統(tǒng)采用并發(fā)技術(shù)消除計算機(jī)系統(tǒng)中部件和部件之間的相互等待:兩個或兩個以上的程序可以在同一時間間隔內(nèi)同時執(zhí)行,設(shè)備的輸入輸出操作和處理機(jī)執(zhí)行程序同時進(jìn)行。因此并發(fā)性是操作系統(tǒng)的重要特征。共享性:多個并發(fā)執(zhí)行的程序需要共享系統(tǒng)中

7、的硬件資源和信息資源。隨機(jī)性:在多道程序環(huán)境中,隨機(jī)性是顯而易見的:用戶發(fā)出命令或輸入數(shù)據(jù)的時間相對于指令的執(zhí)行時間是隨機(jī)的,程序運行發(fā)生錯誤或異常的時刻是隨機(jī)的,外部中斷事件發(fā)生的時刻是隨機(jī)的,一個程序由于等待資源而被暫停執(zhí)行的時間也是隨機(jī)的。9.1.4操作系統(tǒng)的硬件環(huán)境處理機(jī)狀態(tài)控制:為了支持操作系統(tǒng)的特權(quán),中央處理機(jī)需要知道當(dāng)前執(zhí)行的程序是操作系統(tǒng)代碼還是一般用戶程序代碼。為此,處理機(jī)中設(shè)置了狀態(tài)標(biāo)志。大多數(shù)系統(tǒng)把處理機(jī)的狀態(tài)劃分為管理狀態(tài)又稱超級用戶狀態(tài)、管態(tài)或特權(quán)狀態(tài)和用戶狀態(tài)又稱目標(biāo)狀態(tài)、常態(tài)、目態(tài)或解題狀態(tài))。特權(quán)指令:為了防止用戶程序執(zhí)行有關(guān)資源管理的機(jī)器指令從而破壞系統(tǒng)正常工

8、作狀態(tài),在多任務(wù)環(huán)境中,通常把指令系統(tǒng)中的指令分為兩類:特權(quán)指令(Privileged Instructions)和非特權(quán)指令。特權(quán)指令是只能由操作系統(tǒng)核心程序執(zhí)行的機(jī)器指令,用于系統(tǒng)資源管理與程序執(zhí)行控制等操作,如啟動輸入輸出設(shè)備、設(shè)置系統(tǒng)時鐘、控制中斷屏蔽位、設(shè)置存儲管理狀態(tài)、加載程序狀態(tài)字等。9.1.4操作系統(tǒng)的硬件環(huán)境寄存器訪問權(quán)限:計算機(jī)系統(tǒng)的中央處理機(jī)內(nèi)設(shè)置了很多寄存器,包括用于暫存數(shù)據(jù)的通用數(shù)據(jù)寄存器和用于存放處理器的控制和狀態(tài)信息的控制寄存器。后者主要有:程序計數(shù)器PC、程序狀態(tài)字寄存器PWSR、指令寄存器IR等,也包括和系統(tǒng)存儲管理、中斷管理等相關(guān)的寄存器。程序狀態(tài)字和程序執(zhí)

9、行現(xiàn)場:為了記錄計算機(jī)系統(tǒng)當(dāng)前的工作狀態(tài),需要專門設(shè)置程序狀態(tài)字(PSW)用于控制指令的執(zhí)行并存儲與程序有關(guān)的系統(tǒng)狀態(tài)。程序狀態(tài)字寄存器保存的信息通常包括以下幾類:(1)當(dāng)前正在執(zhí)行的指令地址這由程序計數(shù)器給出。(2)狀態(tài)條件碼表示指令執(zhí)行結(jié)果的狀態(tài)特征,例如算術(shù)運算指令運行結(jié)果是否為零、是否有溢出、是否是負(fù)數(shù)等。(3)處理機(jī)狀態(tài)指明當(dāng)前的處理機(jī)狀態(tài),如目態(tài)或管態(tài),是否允許某類中斷,是否處于中斷嵌套狀態(tài),當(dāng)前的存儲保護(hù)狀態(tài)等。(4)控制標(biāo)志能夠影響某些指令執(zhí)行方式的一些標(biāo)志位。 中斷機(jī)制:現(xiàn)代的計算機(jī)系統(tǒng)都支持中斷(異常)。通過檢測中斷源并進(jìn)行中斷響應(yīng),中斷機(jī)制提供了一種程序隨機(jī)切換的方式。通

10、過響應(yīng)硬件定時器中斷,操作系統(tǒng)可以執(zhí)行周期性的例行管理任務(wù),例如進(jìn)程調(diào)度。這可以確保某個進(jìn)程不會獨占系統(tǒng)資源。以中斷方式實現(xiàn)處理機(jī)與外界進(jìn)行信息交換的握手聯(lián)絡(luò),能保證CPU與外設(shè)的并行工作。計算機(jī)工作時可能發(fā)生軟件或硬件故障,故障發(fā)生的時間相對于CPU的指令執(zhí)行是完全隨機(jī)的。常見的硬件故障有掉電、校驗錯、運算出錯等;常見的軟件故障有運算溢出、地址越界、使用非法指令等。一旦發(fā)生故障,應(yīng)由CPU執(zhí)行中斷處理程序進(jìn)行處理。存儲管理:系統(tǒng)硬件通過存儲管理部件支持操作系統(tǒng)實現(xiàn)多級存儲體系和存儲保護(hù)功能。在后面將詳盡討論與存儲管理相關(guān)的問題。9.2調(diào)度一、進(jìn)程的概念:操作系統(tǒng)除了負(fù)責(zé)管理用戶程序的執(zhí)行外,

11、也需要處理各種系統(tǒng)任務(wù)。在操作系統(tǒng)中,通常使用進(jìn)程(process)這一概念描述程序的動態(tài)執(zhí)行過程。程序是靜態(tài)實體;進(jìn)程是動態(tài)實體,是執(zhí)行中的程序。進(jìn)程不僅僅包含程序代碼,也包含了當(dāng)前的狀態(tài)(這由程序計數(shù)器和處理機(jī)中的相關(guān)寄存器表示)和資源。因此,如果兩個用戶用同樣一段代碼分別執(zhí)行相同功能的程序,那么其中的每一個都是一個獨立的進(jìn)程。雖然其代碼是相同的,但是數(shù)據(jù)卻未必相同。9.2調(diào)度二、進(jìn)程的狀態(tài): 進(jìn)程在不同階段會處于不同狀態(tài)。進(jìn)程的狀態(tài)會隨著進(jìn)程當(dāng)前進(jìn)行的活動而改變。創(chuàng)建進(jìn)程:正在被創(chuàng)建,并未準(zhǔn)備好運行。就緒進(jìn)程:已經(jīng)準(zhǔn)備好運行,并正等待分配處理器時間。運行進(jìn)程:正占用處理機(jī)執(zhí)行。阻塞進(jìn)程:

12、由于等待I/O操作完成或某些事件出現(xiàn)而被系統(tǒng)掛起。終止進(jìn)程:完成操作結(jié)束運行。在不同的系統(tǒng)中,進(jìn)程的狀態(tài)種類和名稱不盡相同。系統(tǒng)中可能有多個進(jìn)程處于創(chuàng)建、就緒、阻塞和終止等狀態(tài),但是處理機(jī)在任意時刻只能運行一個進(jìn)程。9.2調(diào)度進(jìn)程控制塊:為了管理和控制進(jìn)程,操作系統(tǒng)必須保存與每個進(jìn)程有關(guān)的狀態(tài)等信息。為此,操作系統(tǒng)為每個進(jìn)程設(shè)置一個進(jìn)程控制塊PCB(Process Control Block)。PCB中記錄了操作系統(tǒng)所需要的用于描述進(jìn)程情況及控制進(jìn)程運行所需的全部信息。PCB通常包含以下信息:(1)進(jìn)程標(biāo)識符用于唯一標(biāo)識當(dāng)前進(jìn)程;(2)狀態(tài)記錄進(jìn)程當(dāng)前狀態(tài);(3)程序計數(shù)器將要執(zhí)行的下一條指令

13、的地址;(4)進(jìn)程上下文進(jìn)程執(zhí)行時CPU內(nèi)部寄存器的取值,是進(jìn)程執(zhí)行的現(xiàn)場數(shù)據(jù);(5)存儲管理信息指明進(jìn)程占用的內(nèi)存空間的范圍;(6)I/O狀態(tài)信息例如打開的文件、未完成的I/O請求、占用的I/O設(shè)備等。9.2調(diào)度進(jìn)程調(diào)度是操作系統(tǒng)必備的功能。通常將進(jìn)程調(diào)度分為搶占式和非搶占式兩種模式。(1)非搶占模式:非搶占模式是指一旦將處理機(jī)時間分配給某個進(jìn)程后,便讓該進(jìn)程一直運行,直到該進(jìn)程因運行完畢或因發(fā)生某事件而被阻塞,才把處理機(jī)時間重新分配給其它進(jìn)程。否則,不允許其他進(jìn)程搶占已經(jīng)分配出去的處理機(jī)時間。“先來先服務(wù)”策略就是一種非搶占調(diào)度模式,先進(jìn)入就緒隊列的進(jìn)程首先運行,直到運行結(jié)束或被阻塞為止。

14、這種調(diào)度模式的優(yōu)點是實現(xiàn)簡單、系統(tǒng)開銷小,但無法滿足實時系統(tǒng)對緊急事件處理的時間要求。(2)搶占模式:在搶占調(diào)度模式中,允許進(jìn)程調(diào)度程序根據(jù)某種策略,暫停某個正在運行的進(jìn)程,將處理機(jī)時間重新分配給另一個進(jìn)程。9.2調(diào)度常用的搶占策略有:時間片策略處理機(jī)時間被分割為等長的時間單位,稱為時間片。每個進(jìn)程被分配一個時間片運行,當(dāng)該時間片超時時,由操作系統(tǒng)重新進(jìn)行進(jìn)程調(diào)度,將處理機(jī)時間交給另一個就緒進(jìn)程。這種策略適用于分時系統(tǒng)和要求較高的批處理系統(tǒng)。優(yōu)先權(quán)策略操作系統(tǒng)為某些重要或緊急的進(jìn)程指定較高的優(yōu)先級。當(dāng)這種進(jìn)程就緒時,如果其優(yōu)先級比正在運行的進(jìn)程的優(yōu)先級高,便暫停正在運行的進(jìn)程,將處理機(jī)時間分配

15、給優(yōu)先級高的進(jìn)程。短進(jìn)程優(yōu)先策略當(dāng)就緒隊列中的某個進(jìn)程比正在運行的進(jìn)程的運行時間明顯地短時,操作系統(tǒng)將剝奪長進(jìn)程的執(zhí)行,將處理機(jī)分配給短進(jìn)程,使之優(yōu)先運行。該調(diào)度策略能有效地降低進(jìn)程的平均等待時間,提高系統(tǒng)的吞吐量。9.2調(diào)度調(diào)度的層次高級調(diào)度:是指按一定原則把輔存上處于后備隊列中的作業(yè)調(diào)入內(nèi)存,并為它們創(chuàng)建進(jìn)程、分配必要的資源,再將新創(chuàng)建的進(jìn)程排在就緒隊列上準(zhǔn)備執(zhí)行。高級調(diào)度決定哪些作業(yè)可以進(jìn)入系統(tǒng)競爭系統(tǒng)資源。9.2調(diào)度操作系統(tǒng)在進(jìn)行高級調(diào)度時必須考慮兩個因素:(1)接納多少個作業(yè)系統(tǒng)允許有多少個作業(yè)同時在內(nèi)存中運行用多道程序度表征。內(nèi)存中同時運行的作業(yè)太多可能會影響到系統(tǒng)的服務(wù)質(zhì)量,同時

16、運行的作業(yè)太少又會導(dǎo)致系統(tǒng)資源利用率和系統(tǒng)吞吐量太低。因此,多道程序度的確定應(yīng)根據(jù)系統(tǒng)的規(guī)模和運行速度等做適當(dāng)折衷。(2)接納哪些作業(yè)操作系統(tǒng)根據(jù)所采用的調(diào)度算法決定哪些作業(yè)從輔存調(diào)入內(nèi)存。例如,先來先服務(wù)調(diào)度算法將最早進(jìn)入輔存的作業(yè)最先調(diào)入內(nèi)存;短作業(yè)優(yōu)先調(diào)度算法將輔存上最短的作業(yè)最先調(diào)入內(nèi)存;而基于作業(yè)優(yōu)先權(quán)的調(diào)度算法則需根據(jù)作業(yè)的重要程度與輕重緩急選擇調(diào)入內(nèi)存的作業(yè)。高級調(diào)度在較大的粒度上決定對處理機(jī)時間的使用權(quán)分配,故又稱作業(yè)調(diào)度、收容調(diào)度或長程調(diào)度。9.2調(diào)度低級調(diào)度即進(jìn)程調(diào)度,決定當(dāng)存在多個就緒進(jìn)程時,哪一個就緒進(jìn)程將分配到中央處理機(jī)的運行時間,并且把中央處理機(jī)實際分配給這個進(jìn)程。

17、低級調(diào)度在較小的粒度上決定對處理機(jī)時間的使用權(quán)分配,又稱為短程調(diào)度。低級調(diào)度執(zhí)行非常頻繁,進(jìn)程調(diào)度程序每秒鐘可執(zhí)行多次進(jìn)程調(diào)度,故進(jìn)程調(diào)度程序必須常駐內(nèi)存。9.2調(diào)度 中級調(diào)度的目的是為了提高內(nèi)存的利用率和系統(tǒng)吞吐量。為了讓那些因為某些原因暫時不能運行的進(jìn)程不再占用寶貴的內(nèi)存資源,操作系統(tǒng)通過中級調(diào)度將這些進(jìn)程調(diào)出至輔存等待。當(dāng)這些處于掛起狀態(tài)的進(jìn)程再次準(zhǔn)備好運行,且內(nèi)存又出現(xiàn)空閑空間時,由中級調(diào)度決定將輔存上的哪些處于就緒駐外存狀態(tài)的進(jìn)程重新調(diào)入內(nèi)存。被調(diào)入的進(jìn)程將轉(zhuǎn)換為就緒狀態(tài)掛在就緒隊列上,等待進(jìn)程調(diào)度。9.2調(diào)度處理機(jī)調(diào)度的實現(xiàn):為了調(diào)度的方便,操作系統(tǒng)會建立并維護(hù)若干個進(jìn)程隊列。每個

18、隊列均用于維護(hù)一個等待某些資源的進(jìn)程的列表。在批處理系統(tǒng)中,作業(yè)進(jìn)入系統(tǒng)后,先駐留在輔存的后備隊列中,作業(yè)調(diào)度從輔存的后備隊列中選擇作業(yè)調(diào)入內(nèi)存,并為之創(chuàng)建進(jìn)程,然后送入內(nèi)存就緒隊列,并等待進(jìn)程調(diào)度。交互型作業(yè)則直接進(jìn)入內(nèi)存就緒隊列。9.2調(diào)度三級處理機(jī)調(diào)度隊列模型演示9.2調(diào)度進(jìn)程調(diào)度根據(jù)某種調(diào)度算法從就緒隊列中選擇一個進(jìn)程運行。每個進(jìn)程運行時都可能在分配給其運行的時間出現(xiàn)以下三種情況:(1)該進(jìn)程在分配給其運行的時間內(nèi)運行完成,該進(jìn)程釋放處理機(jī)后轉(zhuǎn)入完成狀態(tài);(2)該進(jìn)程在運行期間因等待某些事件(如等待某些資源可用或等待某些I/O操作完成)而無法繼續(xù)運行,操作系統(tǒng)將該進(jìn)程送入內(nèi)存阻塞隊列;

19、(3)該進(jìn)程在分配給其運行的時間超時時尚未運行完成,操作系統(tǒng)將暫停該進(jìn)程運行,并將該進(jìn)程重新排入內(nèi)存就緒隊列。9.2調(diào)度一旦進(jìn)程等待的事件發(fā)生,操作系統(tǒng)進(jìn)程調(diào)度程序可以將其從內(nèi)存阻塞隊列重新掛入內(nèi)存就緒隊列。而內(nèi)存就緒隊列中的進(jìn)程可以被重新調(diào)度到運行狀態(tài)。在某個進(jìn)程運行過程中,某些事件會使進(jìn)程暫停執(zhí)行而轉(zhuǎn)入操作系統(tǒng)的進(jìn)程調(diào)度程序執(zhí)行。其一是該進(jìn)程調(diào)用系統(tǒng)服務(wù)程序,例如請求系統(tǒng)進(jìn)行I/O服務(wù)操作;其二是該進(jìn)程引發(fā)中斷,無論是硬件引發(fā)的輸入/輸出中斷、軟件錯誤引發(fā)的系統(tǒng)異常,還是系統(tǒng)定時器超時中斷;其三是某些和該進(jìn)程無關(guān)但影響系統(tǒng)狀態(tài)的事件需要操作系統(tǒng)處理。9.3存儲管理存儲管理主要解決存儲器的分

20、配與回收,存儲器地址變換,存儲器擴(kuò)充,存儲器共享與保護(hù)等問題。9.3存儲管理一、分區(qū)式存儲管理早期的單用戶、單任務(wù)的操作系統(tǒng)將內(nèi)存空間簡單地分為兩個區(qū)域:系統(tǒng)區(qū)和用戶區(qū)。操作系統(tǒng)使用系統(tǒng)區(qū);應(yīng)用程序則裝入到用戶區(qū),并使用用戶區(qū)全部空間。這種方式管理簡單,但會浪費內(nèi)存空間。為了支持多個程序并發(fā)執(zhí)行,現(xiàn)代操作系統(tǒng)引入了分區(qū)式存儲管理。內(nèi)存被分為若干個區(qū)域,操作系統(tǒng)占用其中一個分區(qū),其余的分區(qū)則提供給應(yīng)用程序使用,每個應(yīng)用程序占用其中一個或幾個分區(qū)。根據(jù)分區(qū)的大小是否固定,可以將分區(qū)式存儲管理機(jī)制分為固定分區(qū)和動態(tài)分區(qū)兩種類型。9.3存儲管理二、交換技術(shù)和分頁技術(shù)根據(jù)程序的局部性原理,在一個較短的時

21、間間隔內(nèi),程序所訪問的存儲器地址在很大比例上集中在存儲器地址空間的很小范圍內(nèi)。交換技術(shù)正是利用了程序的局部性原理實現(xiàn)多任務(wù)并發(fā)環(huán)境中的存儲管理。 9.3存儲管理交換過程由換入和換出兩個過程組成:換入過程將外存交換區(qū)的數(shù)據(jù)和程序代碼換至內(nèi)存,而換出過程將內(nèi)存中的數(shù)據(jù)換到外存交換區(qū)中。9.3存儲管理操作系統(tǒng)將暫時不執(zhí)行的程序代碼保存在外存中,并將這些進(jìn)程排入進(jìn)程請求的長期調(diào)度隊列。隊列中的一部分進(jìn)程被調(diào)到主存中執(zhí)行。當(dāng)由于輸入/輸出操作等原因使得存儲器中無進(jìn)程處于就緒狀態(tài)時,操作系統(tǒng)將部分進(jìn)程換出至外存,并排入中期隊列。騰出的內(nèi)存空間則換入中期隊列或長期隊列中的一個可執(zhí)行的進(jìn)程。交換技術(shù)的優(yōu)點是增

22、加了并發(fā)運行的進(jìn)程數(shù)目。缺點是換入和換出操作增加了處理機(jī)的時間開銷;而且交換的單位為整個進(jìn)程的地址空間,沒有考慮程序執(zhí)行過程中地址訪問的統(tǒng)計特性。交換技術(shù)和早期采用的覆蓋技術(shù)一樣,雖然都是從邏輯上利用外存擴(kuò)大主存空間,但并沒有將主存和外存組成一個有機(jī)的整體。分頁技術(shù)引申出一種非常重要的存儲管理策略虛擬存儲器(簡稱虛存)。在存儲管理部件(MMU)的支持下,虛擬存儲器技術(shù)可以徹底解決存儲器的調(diào)度與管理問題。9.4虛擬存儲器一、虛擬存儲器的基本概念1、實地址與虛地址:用戶編制程序時使用的地址稱為虛地址或邏輯地址,其對應(yīng)的存儲空間稱為虛存空間或邏輯地址空間;而計算機(jī)物理內(nèi)存的訪問地址則稱為實地地或物理

23、地址,其對應(yīng)的存儲空間稱為物理存儲空間或主存空間。程序進(jìn)行虛地址到實地址轉(zhuǎn)換的過程稱為程序的再定位。9.4虛擬存儲器2、虛存的訪問原理 虛存空間的用戶程序按照虛地址編程并存放在輔存中。程序運行時,由地址變換機(jī)構(gòu)依據(jù)當(dāng)時分配給該程序的實地址空間把程序的一部分調(diào)入實存。每次訪存時,首先判斷該虛地址所對應(yīng)的部分是否在實存中:如果是,則進(jìn)行地址轉(zhuǎn)換并用實地址訪問主存;否則,按照某種算法將輔存中的部分程序調(diào)度進(jìn)內(nèi)存,再按同樣的方法訪問主存。由此可見,每個程序的虛地址空間可以遠(yuǎn)大于實地址空間,也可以遠(yuǎn)小于實地址空間。前一種情況以提高存儲容量為目的,后一種情況則以地址變換為目的。后者通常出現(xiàn)在多用戶或多任務(wù)

24、系統(tǒng)中:實存空間較大,而單個任務(wù)并不需要很大的地址空間,較小的虛存空間則可以縮短指令中地址字段的長度。9.4虛擬存儲器3、cache與虛存的異同從虛存的概念可以看出,主存輔存的訪問機(jī)制與cache主存的訪問機(jī)制是類似的。這是由cache存儲器、主存和輔存構(gòu)成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬件和輔助軟硬件負(fù)責(zé)地址變換與管理,以便各級存儲器能夠組成有機(jī)的三級存儲體系。cache和主存構(gòu)成了系統(tǒng)的內(nèi)存,而主存和輔存依靠輔助軟硬件的支持構(gòu)成了虛擬存儲器。9.4虛擬存儲器 在三級存儲體系中,cache主存和主存輔存這兩個存儲層次有許多相同點;(1)出發(fā)點相同

25、二者都是為了提高存儲系統(tǒng)的性能價格比而構(gòu)造的分層存儲體系,都力圖使存儲系統(tǒng)的性能接近高速存儲器,而價格和容量接近低速存儲器。(2)原理相同都是利用了程序運行時的局部性原理把最近常用的信息塊從相對慢速而大容量的存儲器調(diào)入相對高速而小容量的存儲器。但cache主存和主存輔存這兩個存儲層次也有許多不同之處:(3)側(cè)重點不同cache主要解決主存與CPU的速度差異問題;而就性能價格比的提高而言,虛存主要是解決存儲容量問題,另外還包括存儲管理、主存分配和存儲保護(hù)等方面。(4)數(shù)據(jù)通路不同CPU與cache和主存之間均有直接訪問通路,cache不命中時可直接訪問主存;而虛存所依賴的輔存與CPU之間不存在直

26、接的數(shù)據(jù)通路,當(dāng)主存不命中時只能通過調(diào)頁解決,CPU最終還是要訪問主存。(5)透明性不同cache的管理完全由硬件完成,對系統(tǒng)程序員和應(yīng)用程序員均透明;而虛存管理由軟件(操作系統(tǒng))和硬件共同完成,由于軟件的介入,虛存對實現(xiàn)存儲管理的系統(tǒng)程序員不透明,而只對應(yīng)用程序員透明(段式和段頁式管理對應(yīng)用程序員“半透明”)。(6)未命中時的損失不同由于主存的存取時間是cache的存取時間的510倍,而主存的存取速度通常比輔存的存取速度快上千倍,故主存未命中時系統(tǒng)的性能損失要遠(yuǎn)大于cache未命中時的損失。 9.4虛擬存儲器4、虛存機(jī)制要解決的關(guān)鍵問題(1)調(diào)度問題決定哪些程序和數(shù)據(jù)應(yīng)被調(diào)入主存。(2)地址

27、映射問題在訪問主存時把虛地址變?yōu)橹鞔嫖锢淼刂罚ㄟ@一過程稱為內(nèi)地址變換);在訪問輔存時把虛地址變成輔存的物理地址(這一過程稱為外地址變換),以便換頁。此外還要解決主存分配、存儲保護(hù)與程序再定位等問題。(3)替換問題決定哪些程序和數(shù)據(jù)應(yīng)被調(diào)出主存。(4)更新問題確保主存與輔存的一致性。在操作系統(tǒng)的控制下,硬件和系統(tǒng)軟件為用戶解決了上述問題,從而使應(yīng)用程序的編程大大簡化。9.4虛擬存儲器二、頁式虛存存儲器1、頁式虛存地址映射 頁式虛擬存儲系統(tǒng)中,虛地址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為物理頁。相應(yīng)地,虛地址分為兩個字段:高字段為邏輯頁號,低字段為頁內(nèi)地址(偏移量)

28、;實存地址也分兩個字段:高字段為物理頁號,低字段為頁內(nèi)地址。通過頁表可以把虛地址(邏輯地址)轉(zhuǎn)換成物理地址。頁式虛擬存儲器的地址映射過程見下圖。頁式虛擬存儲器的地址映射過程見下圖9.4虛擬存儲器在大多數(shù)系統(tǒng)中,每個進(jìn)程對應(yīng)一個頁表。頁表中對應(yīng)每一個虛存頁面有一個表項,表項的內(nèi)容包含該虛存頁面所在的主存頁面的地址(物理頁號),以及指示該邏輯頁是否已調(diào)入主存的有效位。地址變換時,用邏輯頁號作為頁表內(nèi)的偏移地址索引頁表(將虛頁號看作頁表數(shù)組下標(biāo))并找到相應(yīng)物理頁號,用物理頁號作為實存地址的高字段,再與虛地址的頁內(nèi)偏移量拼接,就構(gòu)成完整的物理地址?,F(xiàn)代的中央處理機(jī)通常有專門的硬件支持地址變換。每個進(jìn)程

29、所需的頁數(shù)并不固定,所以頁表的長度是可變的,因此通常的實現(xiàn)方法是把頁表的基地址保存在寄存器中,而頁表本身則放在主存中。由于虛存地址空間可以很大,因而每個進(jìn)程的頁表有可能非常長。例如,如果一個進(jìn)程的虛地址空間為2G字節(jié),每頁的大小為512字節(jié),則總的虛頁數(shù)為231/29=222。9.4虛擬存儲器為了節(jié)省頁表本身占用的主存空間,一些系統(tǒng)把頁表存儲在虛存中,因而頁表本身也要進(jìn)行分頁。當(dāng)一個進(jìn)程運行時,其頁表中一部分在主存中,另一部分則在輔存中保存。另一些系統(tǒng)采用二級頁表結(jié)構(gòu)。每個進(jìn)程有一個頁目錄表,其中的每個表項指向一個頁表。因此,若頁目錄表的長度(表項數(shù))是m,每個頁表的最大長度(表項數(shù))為n,則

30、一個進(jìn)程最多可以有mn個頁。在頁表長度較大的系統(tǒng)中,還可以采用反向頁表實現(xiàn)物理頁號到邏輯頁號的反向映射。頁表中對應(yīng)每一個物理頁號有一個表項,表項的內(nèi)容包含該物理頁所對應(yīng)的邏輯頁號。訪存時,通過邏輯頁號在反向頁表中逐一查找。如果找到匹配的頁,則用表項中的物理頁號取代邏輯頁號;如果沒有匹配表項,則說明該頁不在主存中。這種方式的優(yōu)點是頁表所占空間大大縮小,但代價是需要對反向頁表進(jìn)行檢索,查表的時間很長。有些系統(tǒng)通過散列(哈希)表加以改進(jìn)。9.4虛擬存儲器2、轉(zhuǎn)換后援緩沖器由于頁表通常在主存中,因而即使邏輯頁已經(jīng)在主存中,也至少要訪問兩次物理存儲器才能實現(xiàn)一次訪存,這將使虛擬存儲器的存取時間加倍。為了

31、避免對主存訪問次數(shù)的增多,可以對頁表本身實行二級緩存,把頁表中的最活躍的部分存放在高速存儲器中,組成快表。這個專用于頁表緩存的高速存儲部件通常稱為轉(zhuǎn)換后援緩沖器(TLB)。保存在主存中的完整頁表則稱為慢表。9.4虛擬存儲器TLB的地址映射過程見圖9.4虛擬存儲器內(nèi)頁表和外頁表 頁表是虛地址到主存物理地址的變換表,通常稱為內(nèi)頁表。與內(nèi)頁表對應(yīng)的還有外頁表,用于虛地址與輔存地址之間的變換。當(dāng)主存缺頁時,調(diào)頁操作首先要定位輔存,而外頁表的結(jié)構(gòu)與輔存的尋址機(jī)制密切相關(guān)。例如對磁盤而言,輔存地址包括磁盤機(jī)號、磁頭號、磁道號和扇區(qū)號等。9.4虛擬存儲器三、段式虛擬存儲器和段頁式虛擬存儲器1、段式虛擬存儲器

32、:段是按照程序的自然分界劃分的長度可以動態(tài)改變的區(qū)域。通常,程序員把子程序、操作數(shù)和常數(shù)等不同類型的數(shù)據(jù)劃分到不同的段中,并且每個程序可以有多個相同類型的段。在段式虛擬存儲系統(tǒng)中,虛地址由段號和段內(nèi)地址(偏移量)組成。虛地址到實主存地址的變換通過段表實現(xiàn)。每個程序設(shè)置一個段表,段表的每一個表項對應(yīng)一個段。每個表項至少包含下面三個字段:(1)有效位:指明該段是否已經(jīng)調(diào)入實存。(2)段起址:指明在該段已經(jīng)調(diào)入實存的情況下,該段在實存中的首地址。(3)段長:記錄該段的實際長度。設(shè)置段長字段的目的是為了保證訪問某段的地址空間時,段內(nèi)地址不會超出該段長度導(dǎo)致地址越界而破壞其他段。段表本身也是一個段,可以

33、存在輔存中,但一般是駐留在主存中。9.4虛擬存儲器2、段式虛地址向?qū)嵈娴刂返淖儞Q過程見圖9.4虛擬存儲器3、段式虛擬存儲器特點段式虛擬存儲器有許多優(yōu)點:段的邏輯獨立性使其易于編譯、管理、修改和保護(hù),也便于多道程序共享。段長可以根據(jù)需要動態(tài)改變,允許自由調(diào)度,以便有效利用主存空間。段式虛擬存儲器也有一些缺點:因為段的長度不固定,主存空間分配比較麻煩。容易在段間留下許多外碎片,造成存儲空間利用率降低。由于段長不一定是2的整數(shù)次冪,因而不能簡單地像分頁方式那樣用虛地址和實地址的最低若干二進(jìn)制位作為段內(nèi)偏移量,并與段號進(jìn)行直接拼接,必須用加法操作通過段起址與段內(nèi)偏移量的求和運算求得物理地址。因此,段式

34、存儲管理比頁式存儲管理方式需要更多的硬件支持。9.4虛擬存儲器4、段頁式虛擬存儲器段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結(jié)合。實存被等分成頁。每個程序則先按邏輯結(jié)構(gòu)分段,每段再按照實存的頁大小分頁,程序按頁進(jìn)行調(diào)入和調(diào)出操作,但可按段進(jìn)行編程、保護(hù)和共享。9.4虛擬存儲器【例1】假設(shè)有三道程序,基號用A、B和C表示,其基址寄存器的內(nèi)容分別為SA、SB和SC。程序A由4個段構(gòu)成,程序C由3個段構(gòu)成。段頁式虛擬存儲系統(tǒng)的邏輯地址到物理地址的變換過程如圖所示。在主存中,每道程序都有一張段表,A程序有4段,C程序有3段,每段應(yīng)有一張頁表,段表的每行就表示相應(yīng)頁表的起始位置,而頁表內(nèi)的每行即

35、為相應(yīng)的物理頁號。請說明虛實地址變換過程。解:地址變換過程如下:(1)由存儲管理部件根據(jù)基號C找到段表基址寄存器表第c個表項,獲得程序C的段表基址SC。再根據(jù)段號S(=1)找到程序C段表的第S個表項,得到段S的頁表起始地址b。(2)根據(jù)段內(nèi)邏輯頁號P(=2)檢索頁表,得到物理頁號(圖中為10)。(3)物理頁號與頁內(nèi)地址偏移量拼接即得物理地址。 假如計算機(jī)系統(tǒng)中只有一個基址寄存器,則基號可不要。多道程序切換時,由操作系統(tǒng)修改基址寄存器內(nèi)容。 實際上,上述每個段表和頁表的表項中都應(yīng)設(shè)置一個有效位。只有在有效位為1時才按照上述流程操作,否則需中斷當(dāng)前操作先進(jìn)行建表或調(diào)頁。 可以看出,段頁式虛擬存儲器

36、的缺點是在由虛地址向主存地址的映射過程中需要多次查表,因而實現(xiàn)復(fù)雜度較高可以看出,段頁式虛擬存儲器的缺點是在由虛地址向主存地址的映射過程中需要多次查表,因而實現(xiàn)復(fù)雜度較高9.4虛擬存儲器四、虛存的替換算法 虛擬存儲器的替換算法與cache的替換算法類似,有FIFO算法、LRU算法、LFU算法等,下面通過示例來說明過程?!纠?】假設(shè)主存只允許存放a、b、c三個頁面,邏輯上構(gòu)成a進(jìn)c出的FIFO隊列。某次操作中進(jìn)程訪存的序列是0,1,2,4,2,3,0,2,1,3,2(虛頁號)。若分別采用FIFO算法、FIFO+LRU算法,請用列表法分別求兩種替換策略情況下主存的命中率。解:可以參見Cache中例

37、子9.4虛擬存儲器當(dāng)從輔存調(diào)頁至主存而主存已滿時,也需要進(jìn)行主存頁面的替換。虛擬存儲器的替換算法與cache的替換算法類似,有FIFO算法、LRU算法、LFU算法等。9.4虛擬存儲器虛擬存儲器的替換算法與cache的替換算法不同的是:(1)cache的替換全部靠硬件實現(xiàn),而虛擬存儲器的替換有操作系統(tǒng)的支持。(2)虛存缺頁對系統(tǒng)性能的影響比cache未命中要大得多,因為調(diào)頁需要訪問輔存,并且要進(jìn)行任務(wù)切換。(3)虛存頁面替換的選擇余地很大,屬于一個進(jìn)程的頁面都可替換。9.5存 儲 保 護(hù)一、存儲區(qū)域保護(hù) 任何軟件都存在著出現(xiàn)錯誤的可能。一旦程序出錯,應(yīng)盡量將錯誤的影響限制在最小范圍內(nèi)。當(dāng)多個用戶

38、共享主存時,應(yīng)防止由于一個用戶的程序有意或無意破壞其他用戶的程序和系統(tǒng)軟件,以及一個用戶程序非法地訪問不是分配給它的主存區(qū)域。在虛擬存儲系統(tǒng)中,通常采用頁表保護(hù)、段表保護(hù)和鍵保護(hù)等方法。9.5存 儲 保 護(hù)1、頁表保護(hù)和段表保護(hù)原理見圖9.5存 儲 保 護(hù)2、鍵保護(hù)方式9.5存 儲 保 護(hù)3、環(huán)保護(hù)方式9.5存 儲 保 護(hù)二、訪問方式保護(hù)對主存信息的使用可以有三種方式:讀(R)、寫(W)和執(zhí)行(E),相應(yīng)的訪問方式保護(hù)就有R、W、E三種方式形成的邏輯組合。9.6奔騰系列機(jī)的虛存組織一、存儲器模型平坦存儲器模型分段存儲器模型實地址模式存儲器模型9.6奔騰系列機(jī)的虛存組織二、虛地址模式 IA32體系結(jié)構(gòu)微處理機(jī)的虛擬存儲器可以通過兩種方式實現(xiàn):分段和分頁。存儲管理部件包括分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論