0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛擬存儲(chǔ)器的工作原理 應(yīng)用程序如何使用和管理虛擬存儲(chǔ)器

西西 ? 來源: Chinaunix ? 作者:windhawkgyang ? 2020-10-07 17:46 ? 次閱讀

進(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ì)帶來直接的問題,比如:如果有很多進(jìn)程同時(shí)運(yùn)行所要求的存儲(chǔ)容量可能會(huì)超過我們的物理存儲(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ǔ)器。今天我們先來理解一下虛擬存儲(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ǔ)來減少數(shù)據(jù)傳遞的時(shí)間。Windows下的虛擬內(nèi)存就是一種虛擬存儲(chǔ)器。

&頁——虛擬存儲(chǔ)器(VM)與物理存儲(chǔ)器(PM)間數(shù)據(jù)交換的單位,虛擬頁存儲(chǔ)在磁盤上,物理頁緩存在DRAM(主存)中

&頁表——在物理存儲(chǔ)器中存儲(chǔ)著頁表(數(shù)據(jù)結(jié)構(gòu)),這張頁表上記錄著虛擬頁到物理頁的映射,每條記錄稱之為頁表?xiàng)l目(Page Table Entry),基本格式為:有效位(1bit)+物理頁號(hào)或磁盤地址

系統(tǒng)運(yùn)行時(shí),CPU發(fā)送一個(gè)虛擬地址請(qǐng)求,在虛擬存儲(chǔ)器中的虛擬頁表上查找PTE,此時(shí):

若匹配且有效位為“1”,則說明該數(shù)據(jù)已經(jīng)緩存在主存中,直接讀取之后的物理頁號(hào)獲得數(shù)據(jù);

若匹配但有效位為“0”,說明數(shù)據(jù)在VM上但沒有存到PM上,這時(shí)需要替換掉PM上的一個(gè)頁,來獲得所要求的頁;

實(shí)際中,所有現(xiàn)代系統(tǒng)都采用按需進(jìn)行頁面調(diào)度的方式,即有請(qǐng)求才替換頁。

******

虛擬存儲(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)庫中的函數(shù)。此時(shí)就可以多個(gè)進(jìn)程共享一部分地址空間。節(jié)省了多進(jìn)程的存儲(chǔ)空間要求。

******

虛擬存儲(chǔ)器的主要應(yīng)用——存儲(chǔ)器保護(hù)

系統(tǒng)中有太多的數(shù)據(jù)不允許用戶隨便訪問和更改,比如進(jìn)程的只讀文本段,比如內(nèi)核中的代碼和數(shù)據(jù),又比如其他進(jìn)程的私有存儲(chǔ)器。所以現(xiàn)代系統(tǒng)不約而同地為OS提供手段來控制存儲(chǔ)器系統(tǒng)的訪問。現(xiàn)實(shí)中可以在頁表中加入更多的有效位來控制對(duì)特殊頁面的讀寫操作,比如:

SUP位:是否只有超級(jí)用戶才有權(quán)限讀寫

READ:是否有讀權(quán)限

WRITE:是否有寫權(quán)限

******

地址翻譯

CPU向存儲(chǔ)器發(fā)送的是虛擬地址,這允許CPU直接面對(duì)的是抽象的一致的存儲(chǔ)器對(duì)象。但是這就需要MMU進(jìn)行地址翻譯的工作。MMU會(huì)利用頁表基址寄存器來確定虛擬地址在虛擬頁表中的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.缺頁處理程序確定出PM中的犧牲頁,如果該頁已經(jīng)被修改,則寫回磁盤

8.將缺頁處理程序調(diào)入新的頁面,并更新存儲(chǔ)器中的PTE

9.缺頁處理程序返回---》4

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209371
  • 計(jì)算機(jī)系統(tǒng)

    關(guān)注

    0

    文章

    264

    瀏覽量

    24012
  • 虛擬存儲(chǔ)器
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    8777
  • 存儲(chǔ)管理
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    9145
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    197

    瀏覽量

    13928
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    虛擬存儲(chǔ)器組成部分

    Linux將虛擬存儲(chǔ)器高端的1/4留給內(nèi)核,剩下3/4全留給用戶進(jìn)程。虛擬存儲(chǔ)器上中的程序主要由以下幾個(gè)重要組成部分:
    發(fā)表于 08-07 07:00

    存儲(chǔ)器工作原理

    單片機(jī)內(nèi)部結(jié)構(gòu)分析存儲(chǔ)器工作原理
    發(fā)表于 02-04 07:46

    存儲(chǔ)器工作原理

    單片機(jī)內(nèi)部結(jié)構(gòu)分析存儲(chǔ)器工作原理
    發(fā)表于 02-04 07:51

    虛擬存儲(chǔ)器具有哪些功能和特征呢

    虛擬存儲(chǔ)器具有哪些功能呢?虛擬存儲(chǔ)器的特征有哪些呢?
    發(fā)表于 12-23 09:04

    聊聊存儲(chǔ)器的相關(guān)知識(shí)

    虛擬地址物理地址等眾多地址及MMU相關(guān)知識(shí)先聊聊存儲(chǔ)器STM32單片機(jī)存儲(chǔ)器關(guān)于編譯生成的文件數(shù)據(jù)在存儲(chǔ)器上的
    發(fā)表于 02-11 07:51

    鐵電存儲(chǔ)器工作原理和器件結(jié)構(gòu)

    鐵電存儲(chǔ)器工作原理和器件結(jié)構(gòu) ? 1 鐵電存儲(chǔ)器簡(jiǎn)介 隨著IT技術(shù)的不斷發(fā)展,對(duì)于非易失性存儲(chǔ)器的需求越來越大,讀寫速度
    發(fā)表于 10-25 09:59 ?1w次閱讀
    鐵電<b class='flag-5'>存儲(chǔ)器</b><b class='flag-5'>工作原理</b>和器件結(jié)構(gòu)

    虛擬存儲(chǔ)器部件原理解析

    虛擬存儲(chǔ)器部件原理解析
    發(fā)表于 04-15 14:25 ?3068次閱讀

    存儲(chǔ)器虛擬化的不同形式解析

    ,都可以找到存儲(chǔ)器虛擬化技術(shù)的身影。另外,存儲(chǔ)器虛擬化也可以在應(yīng)用程序服務(wù)或操作系統(tǒng)、基于網(wǎng)絡(luò)
    發(fā)表于 07-20 09:47 ?864次閱讀

    一文知道虛擬存儲(chǔ)器的特征

    虛擬存儲(chǔ)器(Virtual Memory)是用戶能作為可編址內(nèi)存對(duì)待的虛擬存儲(chǔ)空間,它使用戶邏輯存儲(chǔ)器與物理
    的頭像 發(fā)表于 11-15 10:09 ?4408次閱讀

    什么是虛擬存儲(chǔ)器虛擬存儲(chǔ)器的特征

    虛擬存儲(chǔ)器存儲(chǔ)管理中一個(gè)特別重要的概念,你要認(rèn)真掌握虛存的定義和特征。此外,你還要知道為何要引入虛存、實(shí)現(xiàn)虛存技術(shù)的物質(zhì)基礎(chǔ)、虛存容量受到哪兩方面的限制。
    發(fā)表于 11-25 16:37 ?1.6w次閱讀

    存儲(chǔ)器工作原理及如何選擇存儲(chǔ)器品牌

    存儲(chǔ)器是用來存儲(chǔ)程序和各種數(shù)據(jù)信息的記憶部件,更通俗地說,存儲(chǔ)器就是用來存放數(shù)據(jù)的地方。存儲(chǔ)器可分為主
    的頭像 發(fā)表于 10-11 16:58 ?3422次閱讀

    虛擬存儲(chǔ)器簡(jiǎn)述

    虛擬存儲(chǔ)器(Virtual Memory)的基本思想是對(duì)于程序來說,它的程序(code)、數(shù)據(jù)(data)、堆棧(stack)的總大小可以超過實(shí)際物理內(nèi)存(Physical Memor
    發(fā)表于 06-29 14:10 ?2137次閱讀
    <b class='flag-5'>虛擬</b><b class='flag-5'>存儲(chǔ)器</b>簡(jiǎn)述

    存儲(chǔ)器工作原理、分類及結(jié)構(gòu)

    存儲(chǔ)器是計(jì)算機(jī)中的重要組成部分,用于存儲(chǔ)程序、數(shù)據(jù)和控制信息等。根據(jù)存儲(chǔ)信息的介質(zhì)和訪問方式的不同,存儲(chǔ)器可以分為隨機(jī)
    發(fā)表于 09-09 16:18 ?4684次閱讀

    存儲(chǔ)器工作原理及基本結(jié)構(gòu)

    在計(jì)算機(jī)系統(tǒng)中,存儲(chǔ)器是不可或缺的組成部分,負(fù)責(zé)存儲(chǔ)程序和數(shù)據(jù)以供處理器使用。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,存儲(chǔ)器的種類和性能也在不斷提升。本文將詳細(xì)探討
    的頭像 發(fā)表于 05-12 17:05 ?1251次閱讀

    虛擬存儲(chǔ)器的概念和特征

    隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,存儲(chǔ)器的容量和速度成為了影響計(jì)算機(jī)性能的關(guān)鍵因素。在解決內(nèi)存容量不足和速度瓶頸的過程中,虛擬存儲(chǔ)器(Virtual Memory)技術(shù)應(yīng)運(yùn)而生。虛擬
    的頭像 發(fā)表于 05-24 17:23 ?1040次閱讀