<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 虛擬存儲技術(shù)原理

虛擬存儲技術(shù)原理

作者: 時(shí)間:2017-06-08 來(lái)源:網(wǎng)絡(luò ) 收藏

虛擬存儲器是根據程序的邏輯地址轉換來(lái)的,也稱(chēng)線(xiàn)性地址空間。一般每個(gè)進(jìn)程,甚至每個(gè)段都有一個(gè),以32位為例,則每個(gè)最大可達4G。

而主存目前一般為百M。因此程序中所指的存儲單元并不能都放到主存中,也就是并不是每個(gè)程序所用的存儲單元,都有具體的物理的存儲器單元與之對應。

但由于程序的兩個(gè)局部性原理,在一個(gè)時(shí)刻,程序只在一個(gè)比較小的范圍內運行。所以我們把程序可能用到的整個(gè)存儲空間分成一個(gè)個(gè)相同大小的頁(yè)(按頁(yè)管理硬件上容易實(shí)現),只把其中的一些頁(yè)放在主存中,而其它的頁(yè)則等需要時(shí)再建,或放在輔存(磁盤(pán))中。同時(shí)建立一個(gè)頁(yè)表,對應于每一頁(yè),如果該頁(yè)在主存中,則頁(yè)表記錄它在主存中的地址;如果不在主存中,則在頁(yè)表上作不在主存的標記。

這樣,當程序需要調用某個(gè)存儲單元的內容時(shí),先根據它的線(xiàn)性地址,算出其所在的頁(yè)。查頁(yè)表,看是不是在主存中?如果在,則直接存取。如果查到頁(yè)表上是不在的標記,那就是一個(gè)page fault。要把主存中的某一頁(yè)(LRU策略)換到磁盤(pán)上,把要訪(fǎng)問(wèn)的那個(gè)單元所在的頁(yè)調入主存,再進(jìn)行存取。

就象一個(gè)預計有一萬(wàn)學(xué)生的學(xué)校,理論上每個(gè)學(xué)生都應有一個(gè)位子上課(一萬(wàn)個(gè)虛擬位子),而學(xué)校只有一千個(gè)(物理)位子。但實(shí)際上,學(xué)校也不會(huì )一萬(wàn)個(gè)人同時(shí)上課,只要讓上課的同學(xué)有位子(在主存中),而其它同學(xué)只要留下聯(lián)系方法能找到就好。為了降低管理的復雜性,我們采用按學(xué)號分班(頁(yè))管理。每個(gè)班要么一起上課(主存),要么一起呆在寢室(磁盤(pán))。而在學(xué)校保留一個(gè)動(dòng)態(tài)表(頁(yè)表)表明每個(gè)班在哪兒(物理地址)上課,或者沒(méi)上課(不在主存)?,F在假設我們想按學(xué)號找一個(gè)同學(xué),而且是女同學(xué),只能在教室說(shuō)話(huà),呵呵。那么:

先算出來(lái)是哪個(gè)班的,查動(dòng)態(tài)表,看該班是否在教室。在,直接按位置找到(hit);不在(page fault),要先找個(gè)不上課的班趕回寢室,把要找女生所在的班調到教室,再按位置找那個(gè)同學(xué)。

動(dòng)態(tài)表(頁(yè)表)的大?。奖眄棓担總€(gè)表項所需的位數。

表項數=虛擬班數=虛擬人數(虛擬地址空間)/每班人數(每頁(yè)大小)

每個(gè)表項的位數=Log(教室數)+適當控制位數

教室數=實(shí)際可以上課的人數(物理地址空間)/每班人數(每頁(yè)大小)
虛擬地址換算:
TLB miss:

4G(32-bit)的存儲空間,如果按4K分頁(yè),則可分1M頁(yè)。每個(gè)頁(yè)表項為4B,則一個(gè)頁(yè)表大小為4MB。由于頁(yè)表太大,只能放在主存中。這樣每次讀內存都要讀主存,大大影響讀寫(xiě)速度。而同樣基于局部性原理,整個(gè)頁(yè)表在某一時(shí)刻,所用的也僅僅幾頁(yè)而已。所以我們把某段時(shí)間經(jīng)常用的幾個(gè)頁(yè)表項,即常用的虛擬頁(yè)號和其對應的物理頁(yè)地址,存在Cache中,即TLB。

這樣,當程序需要調用某個(gè)存儲單元的內容時(shí),先根據它的線(xiàn)性地址,算出其所在的頁(yè)。先查T(mén)LB(比較虛擬頁(yè)號),如果有相同的虛擬頁(yè)號,則就可以馬上知道其所在的物理地址,根據物理地址進(jìn)行存取。

如果沒(méi)有相同的虛擬頁(yè)號,則說(shuō)明該頁(yè)沒(méi)有記錄在TLB中,那再去查頁(yè)表,按page fault中所說(shuō)的進(jìn)行。

TLB像我們隨身記錄電話(huà)的小紙片,當要查一個(gè)電話(huà)時(shí),我們先看小紙片。有,我們可以直接打電話(huà)。如果沒(méi)有,我們再回家查詳細的電話(huà)號碼簿(頁(yè)表),再打電話(huà)。


關(guān)鍵詞: ROM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>