您好!歡迎光臨烜芯微科技品牌官網(wǎng)!

深圳市烜芯微科技有限公司

ShenZhen XuanXinWei Technoligy Co.,Ltd
二極管、三極管、MOS管、橋堆

全國(guó)服務(wù)熱線:18923864027

  • 熱門(mén)關(guān)鍵詞:
  • 橋堆
  • 場(chǎng)效應(yīng)管
  • 三極管
  • 二極管
  • 虛擬存儲(chǔ)器的實(shí)現(xiàn)方法介紹
    • 發(fā)布時(shí)間:2022-03-01 17:44:46
    • 來(lái)源:
    • 閱讀次數(shù):
    虛擬存儲(chǔ)器的實(shí)現(xiàn)方法介紹
    虛擬存儲(chǔ)器機(jī)制與高速緩存Cache機(jī)制很類似,高速緩存Cache是緩存了內(nèi)存中的數(shù)據(jù),虛擬存儲(chǔ)器是在內(nèi)存中緩存了磁盤(pán)的數(shù)據(jù)。如果虛擬存儲(chǔ)器中數(shù)據(jù)不存在,那么需要從磁盤(pán)上讀取數(shù)據(jù),然后放入內(nèi)存。由于磁盤(pán)的速度要比內(nèi)存慢10萬(wàn)倍,所以除了必要的情況,應(yīng)盡量少的從磁盤(pán)反復(fù)讀取數(shù)據(jù)。虛擬存儲(chǔ)器采用全相聯(lián)映射方式,所以每個(gè)虛擬地址可以映射到內(nèi)存的任何一個(gè)空閑位置,因此與Cache類似,虛擬存儲(chǔ)器必須有一種方法確定每個(gè)進(jìn)程虛擬地址對(duì)應(yīng)內(nèi)存的位置或磁盤(pán)位置,其的映射方式有3種:分頁(yè)式、分段式和段頁(yè)式,下面一起來(lái)看看:
    1.分頁(yè)式虛擬存儲(chǔ)器
    分頁(yè)式存儲(chǔ)器把內(nèi)存和虛擬地址空間都劃分成大小相等的頁(yè)面,磁盤(pán)和內(nèi)存按頁(yè)面為單位交換信息。通常把虛擬地址空間的頁(yè)面成為虛擬頁(yè)/邏輯頁(yè)(VP),內(nèi)存中的頁(yè)面成為頁(yè)框/物理頁(yè)(PP)。
    1.1頁(yè)表
    操作系統(tǒng)在內(nèi)存中給每個(gè)進(jìn)程生成一個(gè)頁(yè)表,頁(yè)表中對(duì)應(yīng)每個(gè)虛擬頁(yè)都有一個(gè)表項(xiàng),表項(xiàng)內(nèi)容包括存放位置字段、裝入位、修改位、替換控制位、存取權(quán)限位、禁止緩存位。它們的作用分別如下:
    ①存放位置字段:用來(lái)建立虛擬頁(yè)和物理頁(yè)之間的映射,用于虛擬地址到物理地址的轉(zhuǎn)換
    ②裝入位:也稱有效位或存在位,為1表示磁盤(pán)數(shù)據(jù)已調(diào)入內(nèi)存,位置字段指向物理頁(yè)號(hào)。為0表示磁盤(pán)數(shù)據(jù)沒(méi)有被調(diào)入內(nèi)存,若位置字段為null則說(shuō)明此位置空閑,若不為null則說(shuō)明等待磁盤(pán)數(shù)據(jù)調(diào)入內(nèi)存
    ③修改位:標(biāo)識(shí)頁(yè)面是否被修改過(guò),在執(zhí)行回寫(xiě)策略時(shí)根據(jù)此字段判斷是否需要把數(shù)據(jù)寫(xiě)回磁盤(pán)
    ④替換控制位:標(biāo)識(shí)頁(yè)面使用情況,配合替換策略設(shè)置
    ⑤訪問(wèn)權(quán)限位:標(biāo)識(shí)頁(yè)面是可讀可寫(xiě)、只讀、只可執(zhí)行,用于存儲(chǔ)保護(hù)
    ⑥禁止緩存位:標(biāo)識(shí)頁(yè)面是否可以裝入Cache,保證磁盤(pán)、內(nèi)存、Cache數(shù)據(jù)一致性
    頁(yè)表、內(nèi)存、磁盤(pán)的映射示意圖如圖1所示:
    虛擬存儲(chǔ)器
    圖1 映射示意圖
    例如,CPU執(zhí)行一條指令需要訪問(wèn)數(shù)據(jù),該數(shù)據(jù)正好在虛擬頁(yè)VP1中,查詢頁(yè)表可知,VP1裝入位為1,對(duì)應(yīng)的物理頁(yè)P(yáng)P0,這時(shí)就可以通過(guò)地址轉(zhuǎn)換部件把將虛擬地址轉(zhuǎn)換為物理地址,然后訪問(wèn)PP0的數(shù)據(jù)。
    如果數(shù)據(jù)在VP6中,VP6對(duì)應(yīng)的裝入位為0,表示頁(yè)面缺失,發(fā)生“缺頁(yè)”異常,需要操作系統(tǒng)進(jìn)行“缺頁(yè)”異常處理程序處理。“缺頁(yè)”異常處理程序根據(jù)頁(yè)表中VP6對(duì)應(yīng)的存放位置字段,從磁盤(pán)中將數(shù)據(jù)讀出,然后找一個(gè)空閑的物理頁(yè)框存放,若內(nèi)存中沒(méi)有空閑的頁(yè)框,則選擇一個(gè)頁(yè)面替換到磁盤(pán)上。
    因?yàn)椴捎脤?xiě)回策略,所以頁(yè)面淘汰時(shí),需要根據(jù)修改位確定是否要寫(xiě)回磁盤(pán)。缺頁(yè)處理過(guò)程中需要對(duì)頁(yè)表進(jìn)行相應(yīng)的更新。缺頁(yè)異常處理結(jié)束后,程序回到原來(lái)發(fā)生缺頁(yè)的指令繼續(xù)執(zhí)行。
    對(duì)于VP0和VP4,隨著進(jìn)程的動(dòng)態(tài)執(zhí)行,這些頁(yè)面可能就會(huì)有了具體的數(shù)據(jù)。例如,當(dāng)調(diào)用malloc函數(shù)時(shí),堆區(qū)增長(zhǎng),新增的堆區(qū)正好與VP4對(duì)應(yīng),則操作系統(tǒng)就在磁盤(pán)上分配一個(gè)存儲(chǔ)空間給VP4,同時(shí)把VP4頁(yè)表項(xiàng)中的存放位置字段填上,對(duì)應(yīng)的就是磁盤(pán)上的起始地址。之后便等待訪問(wèn)到這頁(yè)數(shù)據(jù)時(shí),再次執(zhí)行上面的缺頁(yè)異常流程,讀取數(shù)據(jù)。
    1.2地址轉(zhuǎn)換
    上面說(shuō)完了頁(yè)表、內(nèi)存、磁盤(pán)的映射關(guān)系和數(shù)據(jù)讀取流程,其中有個(gè)環(huán)節(jié)是需要把虛擬地址轉(zhuǎn)換為真正的物理地址,轉(zhuǎn)換工作由CPU中的存儲(chǔ)器管理部件(MMU)完成,具體做法如下:
    ①虛擬地址分為兩部分:高位為虛擬頁(yè)號(hào),低位為頁(yè)內(nèi)偏移地址
    ②物理地址也分為兩部分:高位是物理頁(yè)號(hào),低位為頁(yè)內(nèi)便宜地址
    ③每個(gè)進(jìn)程都有一個(gè)頁(yè)表基址寄存器,存放該進(jìn)程頁(yè)表首地址
    ④根據(jù)頁(yè)表基址寄存器找到對(duì)應(yīng)的頁(yè)表,由虛擬地址高位部分的虛擬頁(yè)號(hào)為索引,找到頁(yè)表項(xiàng)
    ⑤若裝入位為1,則取出對(duì)應(yīng)的物理頁(yè)號(hào),然后和虛擬頁(yè)內(nèi)地址拼接,得到司機(jī)的物理地址
    ⑥如裝入位為0,則交給操作系統(tǒng)執(zhí)行“缺頁(yè)”處理
    執(zhí)行流程如圖2所示:
    虛擬存儲(chǔ)器
    圖2 執(zhí)行流程
    1.3快表
    從上述過(guò)程可以看出,每次訪問(wèn)內(nèi)存都需要先查頁(yè)表,然后根據(jù)規(guī)則找出物理地址,然后再訪問(wèn)實(shí)際的物理地址對(duì)應(yīng)的數(shù)據(jù)。如果發(fā)生缺頁(yè),還要進(jìn)行頁(yè)表替換、頁(yè)表修改等操作,訪問(wèn)內(nèi)存的次數(shù)就更多。采用虛擬存儲(chǔ)器,訪問(wèn)內(nèi)存的次數(shù)增加了很多。那有沒(méi)有什么辦法減少訪問(wèn)次數(shù),還能達(dá)到同樣的效果呢?
    答案是可以的,我們可以把頁(yè)表中最活躍的幾個(gè)頁(yè)表項(xiàng)復(fù)制到高速緩存Cache中,這種高速緩存Cache中的頁(yè)表項(xiàng)組成的頁(yè)表稱為快表(TLB)。
    這樣在進(jìn)行地址轉(zhuǎn)換時(shí),先查看快表中是否命中,如果命中,則無(wú)需訪問(wèn)內(nèi)存中的頁(yè)表即可。通過(guò)這種方式可大大降低內(nèi)存訪問(wèn)的次數(shù),提升效率。
    到此可以總結(jié)一下CPU訪問(wèn)數(shù)據(jù)的完整過(guò)程,如圖3所示:
    虛擬存儲(chǔ)器
    圖3 CPU訪問(wèn)數(shù)據(jù)的完整過(guò)程
    2.分段式虛擬存儲(chǔ)器
    分頁(yè)方式的虛擬存儲(chǔ)器優(yōu)點(diǎn)是頁(yè)長(zhǎng)固定,易管理,不存在碎片。但缺點(diǎn)是頁(yè)長(zhǎng)與程序的邏輯大小無(wú)關(guān)。例如,某個(gè)時(shí)刻一段代碼有一部分在內(nèi)存中,另外一部分則在磁盤(pán)上,不利于編程時(shí)的獨(dú)立性,且給存儲(chǔ)保護(hù)和存儲(chǔ)共享造成了麻煩。所以又提出了分段式的存儲(chǔ)器。把一段程序按照類別劃分為段,例如方法、操作數(shù)、常數(shù)劃分到不同的段中,每個(gè)段都是一組相對(duì)完整的邏輯信息。這樣做的好處是可以按不同類型進(jìn)行存儲(chǔ)管理,也利于多個(gè)程序組合時(shí),對(duì)同一段邏輯可以組合復(fù)用提供了便利。
    分段的方式具體如下:
    ①虛擬地址由段號(hào)和段內(nèi)地址組成
    ②內(nèi)存按程序中的段劃分,每個(gè)段在內(nèi)存中的位置記錄在段表中
    ③每個(gè)進(jìn)程都有一個(gè)段表,每個(gè)段在段表中有一個(gè)段表項(xiàng),標(biāo)識(shí)段的位置、長(zhǎng)度、訪問(wèn)權(quán)限、使用和裝入情況
    分段存儲(chǔ)器把虛擬地址轉(zhuǎn)換為物理地址流程如圖4所示:
    虛擬存儲(chǔ)器
    圖4 虛擬地址與物理地址的轉(zhuǎn)換
    2.1分段式虛擬存儲(chǔ)器優(yōu)點(diǎn)
    ①段的劃分與程序的自然分界相對(duì)應(yīng)
    ②段的易于編譯、管理、修改和保護(hù),也便于多道程序共享
    ③段具有動(dòng)態(tài)可變長(zhǎng)度,允許自由調(diào)度以便利用內(nèi)存空間
    2.2分段式虛擬存儲(chǔ)器缺點(diǎn)
    ①段的長(zhǎng)度不相同,起點(diǎn)和終點(diǎn)不固定,給內(nèi)存分配帶來(lái)麻煩
    ②容易在內(nèi)存中留下零碎空間,導(dǎo)致空間浪費(fèi)
    3.段頁(yè)式虛擬存儲(chǔ)器
    段頁(yè)式虛擬存儲(chǔ)器是結(jié)合了分頁(yè)式和分段式的優(yōu)點(diǎn),具體方式如下:
    ①程序按模塊分段,段內(nèi)再分頁(yè),用段表和頁(yè)表進(jìn)行兩級(jí)定位管理
    ②段表中每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)段,每個(gè)段表中包含一個(gè)指向該段頁(yè)表起始位置以及控制信息和保護(hù)信息
    ③頁(yè)表指明該段各頁(yè)在內(nèi)存中的位置和是否裝入、修改等狀態(tài)信息
    ④程序數(shù)據(jù)調(diào)入調(diào)出按頁(yè)進(jìn)行,又可以按段實(shí)現(xiàn)共享和保護(hù)。
    缺點(diǎn)是地址映射過(guò)程需要多次查表。
    每個(gè)用戶進(jìn)程有一個(gè)基號(hào),標(biāo)識(shí)用戶進(jìn)程,進(jìn)程的段表起始地址存放在各自對(duì)應(yīng)的基地寄存器中,格式如圖5所示:
    用戶進(jìn)程格式
    圖5 用戶進(jìn)程格式
    邏輯地址到物理地址的轉(zhuǎn)換過(guò)程如圖6所示:
    虛擬存儲(chǔ)器
    圖6 邏輯地址與物理地址的轉(zhuǎn)換
    4.存儲(chǔ)保護(hù)
    為了避免多個(gè)程序運(yùn)行時(shí)互相干擾,或者某個(gè)程序不合法地訪問(wèn)了其他程序的數(shù)據(jù),應(yīng)該對(duì)每個(gè)程序進(jìn)行存儲(chǔ)保護(hù),保護(hù)的對(duì)象包括操作系統(tǒng)和用戶程序。
    (1)對(duì)操作系統(tǒng)存儲(chǔ)保護(hù)主要是硬件提供支持:
    ①支持至少2種運(yùn)行模式:管理模式、用戶模式,操作系統(tǒng)在管理模式下管理各種功能,用戶進(jìn)程運(yùn)行在用戶模式下
    ②部分CPU狀態(tài)只能由系統(tǒng)進(jìn)程寫(xiě),用戶進(jìn)程只能讀:例如段表、頁(yè)表首地址、TLB內(nèi)容等
    ③提供讓CPU在管理模式和用戶模式之間切換的機(jī)制:通過(guò)“異常”處理讓CPU從用戶模式切換到管理模式,異常處理完成后通過(guò)“返回”指令讓CPU回到用戶模式
    (2)對(duì)于用戶進(jìn)程的保護(hù)主要分為訪問(wèn)方式保護(hù)和存儲(chǔ)區(qū)域保護(hù):
    ①訪問(wèn)方式保護(hù):檢查“訪問(wèn)越權(quán)”,通過(guò)段表或頁(yè)表的訪問(wèn)權(quán)限位控制,例如共享區(qū)域只可讀不可寫(xiě),程序段只可執(zhí)行或只讀,未授權(quán)區(qū)域不可訪問(wèn)等
    ②存儲(chǔ)區(qū)域保護(hù):檢查“地址越界”,通過(guò)段頁(yè)的起始地址和終止地址控制
    總結(jié)
    以上就是虛擬存儲(chǔ)器的實(shí)現(xiàn)方法介紹了。虛擬存儲(chǔ)器是為了給用戶提供更大的隨機(jī)存取空間而采用的一種存儲(chǔ)技術(shù)。它將內(nèi)存與外存結(jié)合使用,好像有一個(gè)容量極大的內(nèi)存儲(chǔ)器,工作速度接近于主存,每位成本又與輔存相近,在整機(jī)形成多層次存儲(chǔ)系統(tǒng)。目前已成為計(jì)算機(jī)系統(tǒng)中非常重要的部分。
    〈烜芯微/XXW〉專業(yè)制造二極管,三極管,MOS管,橋堆等,20年,工廠直銷省20%,上萬(wàn)家電路電器生產(chǎn)企業(yè)選用,專業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以直接聯(lián)系下方的聯(lián)系號(hào)碼或加QQ/微信,由我們的銷售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹
     
    電話:18923864027(同微信)
    QQ:709211280

    相關(guān)閱讀