發布日期:2022-10-09 點擊率:50
所謂虛擬存儲器(Virtual Memory),就是采用一定的方法將一定的外存容量模擬成內存,同時對程序進出內存的方式進行管理,從而得到一個比實際內存容量大得多的內存空間,使得程序的運行不受內存大小的限制。虛擬存儲區的容量與物理主存大小無關,而受限于計算機的地址結構和可用磁盤容量。
一、頁式虛擬存儲器
在頁式虛擬存儲系統中,將程序按統一的大小劃分成多個頁,同時也將虛擬存儲器劃分為同樣大小的頁,其中虛擬空間的頁稱為虛頁(邏輯頁),而主存空間的頁稱為實頁(物理頁),并對這些頁按地址從低到高的順序編號。
在編程時,程序的虛地址由高位字段的虛頁號和低位字段的頁內地址兩部分組成,虛頁號標識頁。虛地址到實地址之間的變換是由頁表來實現的。頁表是一張存放在主存中的虛頁號和實頁號的對照表,記錄著程序的虛頁調入主存時被安排在主存中的位置。若計算機采用多道程序工作方式,則可為每個用戶作業建立一個頁表,硬件中設置一個頁表基址寄存器,存放當前所運行程序的頁表的起始地址。
頁表中的每一行記錄了與某個虛頁對應的若干信息,包括虛頁號、裝入位和實頁號等。頁表基址寄存器和虛頁號拼接成頁表索引地址。根據這個索引地址可讀到一個頁表信息字,然后檢測頁表信息字中裝入位的狀態。若裝入位為1,表示該頁面已在主存中,將對應的實頁號與虛地址中的頁內地址相拼接就得到了完整的實地址;若裝入位為0,表示該頁面不在主存中,于是要啟動I/O系統,把該頁從輔存中調入主存后再供CPU使用,若主存已滿,還需要使用替換算法替換頁。如圖所示給出了頁式虛擬存儲器的虛-實地址的變換過程。
頁式虛擬存儲器雖然能實現虛擬存儲,但它還存在一些不足。
(1)由于采用定長的頁,雖然建立頁表方便,頁的調入也容易實現。但由于程序不可能正好是頁面的整倍數,那么后一頁的零頭將無法利用而造成空間浪費。
(2)由于頁不是邏輯上獨立的實體,這給程序的處理、保護和共享等帶來了麻煩。
二、段式虛擬存儲器
在段式虛擬存儲器系統中,將程序按其邏輯結構劃分為段,各個段的長度因程序而異。段式虛擬存儲器借助于段表來實現虛地址與實地址的轉換。段表中每一行記錄了某個段對應的若干信息,包括段號、裝入位、段起點和段長等。裝入位為1,表示該段已調入主存;裝入位為0,則表示該段不在主存中。段表其實本身也是一個段,可以存放在輔存中,但一般存放在主存中。
在段式虛擬存儲器系統中,虛地址由段號和段內地址兩部分組成,如圖3-18所示給出了段式虛擬存儲器的虛-實地址的變換過程。
由于段式虛擬存儲器的段具有邏輯獨立性,因此它易于程序的處理、保護和共享等操作,但是,因為段的長度參差不齊,給主存空間分配帶來了麻煩,同時很可能也會帶來一定的空間浪費。
三、段頁式虛擬存儲器
段頁式虛擬存儲器是對段式、頁式虛擬存儲器的綜合,它先將程序按其邏輯結構分段,再將每段劃分為若干大小相等的頁,同時將主存空間劃分為同樣大小的塊。
因為段頁式存儲管理對邏輯地址進行了兩次劃分,次將邏輯地址劃分為若干段,第二次將每個段劃分為若干頁。因此,要對內存正常尋址,不僅要知道將要訪問的地址屬于哪個段,也要知道該地址屬于該段的哪個頁。邏輯頁與物理塊一一對應,所以需要頁表來記錄各頁對應的塊號,且因為每個段都分成了很多頁,所以每個段都需要一個頁表。同時,作業分成了很多段,為了統一管理,系統需要知道每個段的分頁情況,所以又要設置一個段表來記錄每個段所對應的頁表。
作業將要執行其中的某個語句時,根據其地址計算出段號、頁號和頁內地址。首先根據段號查找段表,得到該段的頁表的起始地址,然后查找頁表,得到該頁對應的塊號,后根據塊的大小和頁內地址計算出該語句的內存地址。
下一篇: PLC、DCS、FCS三大控
上一篇: 紅外夜視儀選購要點