5.6.1 虛擬存儲(chǔ)器
從操作系統(tǒng)的角度看,計(jì)算機(jī)系統(tǒng)的資源分為兩大類:一類是硬件資源,包括微處理器、存儲(chǔ)器和輸入輸出設(shè)備;另一類是軟件資源,即程序和數(shù)據(jù)。這些資源構(gòu) 成了系統(tǒng)程序和用戶作業(yè)賴以活動(dòng)的物質(zhì)基礎(chǔ)和工作環(huán)境。針對(duì)這些資源,操作系統(tǒng)的資源管理程序分為4個(gè)部分:處理器管理、存儲(chǔ)器管理、外部設(shè)備管理和文件 管理。
早期開發(fā)的操作系統(tǒng)只支持單任務(wù)、單用戶系統(tǒng),對(duì)存儲(chǔ)器的管理比較簡(jiǎn)單。如MSDOS就是在8086/8088環(huán)境下開發(fā)的磁 盤操作系統(tǒng),只支持單任務(wù)、單用戶操作;它可管理的內(nèi)存空間最大為1MB,其中供用戶程序占用的空間只有640KB,并且在內(nèi)存管理上采用靜態(tài)分配方式, 不支持虛擬存儲(chǔ)器;在運(yùn)行程序時(shí),必須把用戶程序一次調(diào)入內(nèi)存。而目前使用的Windows操作系統(tǒng)突破了DOS內(nèi)存1MB的限制,內(nèi)存最大可達(dá) 4096MB,支持多任務(wù)、多用戶操作,采用動(dòng)態(tài)內(nèi)存分配管理方式,并且具有虛擬存儲(chǔ)器管理功能。
虛擬存儲(chǔ)器(簡(jiǎn)稱虛存)實(shí)際上是一 種由操作系統(tǒng)的存儲(chǔ)管理軟件對(duì)內(nèi)存和外存資源進(jìn)行統(tǒng)一分配和程序調(diào)度的存儲(chǔ)器管理技術(shù)。它將內(nèi)存和外存統(tǒng)一編址,形成一個(gè)比內(nèi)存空間大許多的存儲(chǔ)空間,稱 為虛擬存儲(chǔ)空間。虛擬地址空間的大小由CPU存儲(chǔ)管理體系結(jié)構(gòu)決定,并由外部存儲(chǔ)器支持。虛擬存儲(chǔ)器的地址稱為虛擬地址或邏輯地址(用戶在編制程序時(shí)使用 的地址)。用戶在編制程序時(shí)可以不受內(nèi)存空間大小的限制,在虛擬存儲(chǔ)空間內(nèi)自由編程,使得具有較小內(nèi)存空間的系統(tǒng)能夠運(yùn)行大容量程序。
虛擬存儲(chǔ)器的工作原理是:在執(zhí)行程序時(shí),允許將程序的一部分調(diào)入內(nèi)存,其他部分保留在外存。即由操作系統(tǒng)的存儲(chǔ)管理軟件先將當(dāng)前要執(zhí)行的程序段(如主程 序)從外存調(diào)入內(nèi)存,暫時(shí)不執(zhí)行的程序段(如子程序)仍保留在外存,當(dāng)需要執(zhí)行存放在外存的某個(gè)程序段時(shí),由CPU執(zhí)行某種程序調(diào)度算法將它們調(diào)入內(nèi)存。
5.6.2 分頁存儲(chǔ)管理
1.分頁存儲(chǔ)管理的基本原理
分頁存儲(chǔ)管理的基本原理是:將內(nèi)存空間和虛存空間分別等分為大小相等的若干頁,頁的大小為2n個(gè)字節(jié),如210(1KB)、211(2KB)、 212(4KB)等,并且為每個(gè)頁按順序指定一個(gè)頁號(hào),即0頁、1頁、2頁……為了敘述方便,這里把內(nèi)存的頁(物理頁或絕對(duì)頁)稱為頁面。例如,若內(nèi)存空 間為8KB,虛存空間為16KB,頁的大小為1KB,則內(nèi)存空間可分為8個(gè)頁面,其頁面號(hào)為0~7;虛存空間可分為16個(gè)頁,其頁號(hào)為0~15。當(dāng)運(yùn)行程 序時(shí),以“頁”為單位進(jìn)行地址映射。即操作系統(tǒng)以頁為單位把邏輯頁從外存調(diào)入內(nèi)存,存放在物理頁面上,供CPU執(zhí)行。
2.分頁存儲(chǔ)管理的地址轉(zhuǎn)換
在分頁存儲(chǔ)管理中,需要解決的關(guān)鍵問題是:選擇哪一個(gè)物理頁存放調(diào)入的邏輯頁如何將邏輯地址轉(zhuǎn)換為物理地址為了解決這些問題,系統(tǒng)為每一個(gè)頁建立一個(gè)頁 表,保存在內(nèi)存中,存放頁的若干信息,如頁號(hào)、容量、是否裝入內(nèi)存、存放在內(nèi)存的哪一個(gè)頁面上等。CPU訪問某頁時(shí),首先要查找頁表,判斷要訪問的頁是否 在內(nèi)存,若在內(nèi)存為命中,否則為未命中;然后將未命中的頁按照某種調(diào)度算法由外存調(diào)入內(nèi)存,并根據(jù)邏輯頁號(hào)和存放的物理頁面號(hào)的對(duì)應(yīng)關(guān)系,將邏輯地址轉(zhuǎn)換 為物理地址。分頁存儲(chǔ)管理的地址轉(zhuǎn)換示意圖。
存儲(chǔ)單元的物理地址由頁面號(hào)和頁內(nèi)地址兩部分組成,如(a)所示。8KB內(nèi)存的頁內(nèi)地址 由地址線A9~A0提供,可尋址1KB的頁內(nèi)存儲(chǔ)空間,地址范圍為0~1023;頁面號(hào)由高3位地址線A12~A10提供,8個(gè)頁面的頁面號(hào)為0~7。由 此可以看出,頁面存儲(chǔ)單元的物理地址為:頁的大小×頁面號(hào)+頁內(nèi)地址。
虛擬地址(邏輯地址)的確定方法與物理地址的確定方法完全相 同,也是由頁號(hào)和頁內(nèi)地址兩部分組成,如(b)所示。16KB虛存空間可分為16頁,頁內(nèi)地址由虛擬地址線A9~A0提供,其頁號(hào)0~15由虛擬在進(jìn)行地 址轉(zhuǎn)換時(shí),由于邏輯頁和物理頁的大小相等,它們的頁內(nèi)地址是相同的,所不同的是頁號(hào),只要將邏輯地址的頁號(hào)轉(zhuǎn)換為物理地址的頁面號(hào)即可。在中,給出1號(hào)邏 輯頁中某條指令訪問數(shù)據(jù)的邏輯地址為1024×1+4521476,它存入內(nèi)存7頁面上所對(duì)應(yīng)的物理地址為1024×7+4527620。