進(jìn)程是系統(tǒng)中運(yùn)行的程序的一個(gè)實(shí)例,比如我們可以同時(shí)運(yùn)行多個(gè)QQ程序,同時(shí)用Office打開多個(gè)文檔等等,而系統(tǒng)展現(xiàn)給我們的多進(jìn)程界面其實(shí)是多個(gè)進(jìn)程交替共享CPU和主存資源。但是,共享會(huì)帶來(lái)直接的問(wèn)題,比如:如果有很多進(jìn)程同時(shí)運(yùn)行所要求的存儲(chǔ)容量可能會(huì)超過(guò)我們的物理存儲(chǔ)器,導(dǎo)致其中某些運(yùn)行錯(cuò)誤;或者進(jìn)程修改了其他進(jìn)程的存儲(chǔ)器,也會(huì)導(dǎo)致直接的運(yùn)行錯(cuò)誤。所以,為了更好地管理存儲(chǔ)器,現(xiàn)代系統(tǒng)引入了虛擬存儲(chǔ)器,以作為實(shí)際主存的上一層抽象,使得所有進(jìn)程所占用的存儲(chǔ)空間獲得了一致的形式。這個(gè)方面主要有兩個(gè)主題:1.理解虛擬存儲(chǔ)器是如何工作的;2.應(yīng)用程序如何使用和管理虛擬存儲(chǔ)器。今天我們先來(lái)理解一下虛擬存儲(chǔ)器的工作原理。
*******
物理和虛擬尋址
物理尋址——計(jì)算機(jī)系統(tǒng)的主存被組織成一個(gè)由M個(gè)連續(xù)字節(jié)組成的數(shù)組,可以記為0,1,2,3.。.M-1,每一個(gè)都有確定的物理地址(Physical Address,PA),早期的CPU直接發(fā)送物理地址給主存獲取數(shù)據(jù)和指令。
虛擬尋址——現(xiàn)代系統(tǒng)CPU中集成了地址翻譯硬件(MMU),可以將CPU識(shí)別的虛擬地址(VA)翻譯為主存對(duì)應(yīng)的PA。
#引入虛擬存儲(chǔ)的一個(gè)好處就是,我們可以建立一個(gè){VA}---》{PA}的映射,使得虛擬存儲(chǔ)地址空間可以大于實(shí)際的地址空間#
******
虛擬存儲(chǔ)器主要應(yīng)用——緩存工具
如同我們?cè)贑PU和主存間加入高速緩存一樣,系統(tǒng)也在主存和硬盤間加入虛擬存儲(chǔ)來(lái)減少數(shù)據(jù)傳遞的時(shí)間。Windows下的虛擬內(nèi)存就是一種虛擬存儲(chǔ)器。
&頁(yè)——虛擬存儲(chǔ)器(VM)與物理存儲(chǔ)器(PM)間數(shù)據(jù)交換的單位,虛擬頁(yè)存儲(chǔ)在磁盤上,物理頁(yè)緩存在DRAM(主存)中
&頁(yè)表——在物理存儲(chǔ)器中存儲(chǔ)著頁(yè)表(數(shù)據(jù)結(jié)構(gòu)),這張頁(yè)表上記錄著虛擬頁(yè)到物理頁(yè)的映射,每條記錄稱之為頁(yè)表?xiàng)l目(Page Table Entry),基本格式為:有效位(1bit)+物理頁(yè)號(hào)或磁盤地址
系統(tǒng)運(yùn)行時(shí),CPU發(fā)送一個(gè)虛擬地址請(qǐng)求,在虛擬存儲(chǔ)器中的虛擬頁(yè)表上查找PTE,此時(shí):
若匹配且有效位為“1”,則說(shuō)明該數(shù)據(jù)已經(jīng)緩存在主存中,直接讀取之后的物理頁(yè)號(hào)獲得數(shù)據(jù);
若匹配但有效位為“0”,說(shuō)明數(shù)據(jù)在VM上但沒有存到PM上,這時(shí)需要替換掉PM上的一個(gè)頁(yè),來(lái)獲得所要求的頁(yè);
實(shí)際中,所有現(xiàn)代系統(tǒng)都采用按需進(jìn)行頁(yè)面調(diào)度的方式,即有請(qǐng)求才替換頁(yè)。
******
虛擬存儲(chǔ)器主要應(yīng)用——存儲(chǔ)管理
直接的結(jié)果是,由于VM空間一般要大于PM空間,所以會(huì)出現(xiàn)共享PM空間地址的情況。比如進(jìn)程需要使用相同的內(nèi)核代碼,調(diào)用相同的系統(tǒng)函數(shù),C標(biāo)準(zhǔn)庫(kù)中的函數(shù)。此時(shí)就可以多個(gè)進(jìn)程共享一部分地址空間。節(jié)省了多進(jìn)程的存儲(chǔ)空間要求。
******
虛擬存儲(chǔ)器的主要應(yīng)用——存儲(chǔ)器保護(hù)
系統(tǒng)中有太多的數(shù)據(jù)不允許用戶隨便訪問(wèn)和更改,比如進(jìn)程的只讀文本段,比如內(nèi)核中的代碼和數(shù)據(jù),又比如其他進(jìn)程的私有存儲(chǔ)器。所以現(xiàn)代系統(tǒng)不約而同地為OS提供手段來(lái)控制存儲(chǔ)器系統(tǒng)的訪問(wèn)?,F(xiàn)實(shí)中可以在頁(yè)表中加入更多的有效位來(lái)控制對(duì)特殊頁(yè)面的讀寫操作,比如:
SUP位:是否只有超級(jí)用戶才有權(quán)限讀寫
READ:是否有讀權(quán)限
WRITE:是否有寫權(quán)限
******
地址翻譯
CPU向存儲(chǔ)器發(fā)送的是虛擬地址,這允許CPU直接面對(duì)的是抽象的一致的存儲(chǔ)器對(duì)象。但是這就需要MMU進(jìn)行地址翻譯的工作。MMU會(huì)利用頁(yè)表基址寄存器來(lái)確定虛擬地址在虛擬頁(yè)表中的PTE,而后進(jìn)行PA的轉(zhuǎn)換。主要步驟如下:
1.CPU生成一個(gè)虛擬地址發(fā)送給MMU
2.MMU生成PTE地址,并從高速緩存/主存請(qǐng)求得到它
3.高速緩存/主存向MMU返回PTE(記錄)
4.判斷:
若PTE有效位為真,則MMU讀取PTE中的物理地址,并發(fā)送給高速緩存/主存
5.高速緩存/主存返回所請(qǐng)求的數(shù)據(jù)給CPU
若判斷PTE有效位為假或失效,
6.MMU觸發(fā)一次異常,控制轉(zhuǎn)交給CPU異??刂铺幚沓绦?/p>
7.缺頁(yè)處理程序確定出PM中的犧牲頁(yè),如果該頁(yè)已經(jīng)被修改,則寫回磁盤
8.將缺頁(yè)處理程序調(diào)入新的頁(yè)面,并更新存儲(chǔ)器中的PTE
9.缺頁(yè)處理程序返回---》4
-
cpu
+關(guān)注
關(guān)注
68文章
10911瀏覽量
213141 -
計(jì)算機(jī)系統(tǒng)
+關(guān)注
關(guān)注
0文章
289瀏覽量
24224 -
虛擬存儲(chǔ)器
+關(guān)注
關(guān)注
0文章
12瀏覽量
8802 -
存儲(chǔ)管理
+關(guān)注
關(guān)注
0文章
31瀏覽量
9226 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
204瀏覽量
14003
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
虛擬存儲(chǔ)器組成部分
聊聊存儲(chǔ)器的相關(guān)知識(shí)
鐵電存儲(chǔ)器工作原理和器件結(jié)構(gòu)
![鐵電<b class='flag-5'>存儲(chǔ)器</b><b class='flag-5'>工作原理</b>和器件結(jié)構(gòu)](https://file1.elecfans.com//web2/M00/A5/55/wKgZomUMN_CAZ9PRAABkKAZMuH0811.jpg)
存儲(chǔ)器虛擬化的不同形式解析
一文知道虛擬存儲(chǔ)器的特征
什么是虛擬存儲(chǔ)器,虛擬存儲(chǔ)器的特征
存儲(chǔ)器工作原理及如何選擇存儲(chǔ)器品牌
虛擬存儲(chǔ)器簡(jiǎn)述
![<b class='flag-5'>虛擬</b><b class='flag-5'>存儲(chǔ)器</b>簡(jiǎn)述](https://file1.elecfans.com/web2/M00/8B/AE/wKgZomSdISiAaswJAAA4jcptZms251.png)
評(píng)論