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