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