日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OS- -内存之虚拟内存

發布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS- -内存之虚拟内存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OS- -內存之虛擬內存

文章目錄

  • OS- -內存之虛擬內存
    • 一、虛擬內存
      • 1.分頁
        • 存在映射的頁如何映射
        • 未映射的頁如何映射
      • 2.頁表
        • 頁表項的結構
      • 3.加速分頁過程
        • 轉換檢測緩沖區
        • 軟件TLB管理
      • 3.針對大內存的頁表
        • 多級頁表
        • 倒排頁表

一、虛擬內存

  • 盡管基址寄存器和變址寄存器用來創建地址空間的抽象,但是這有一個其他的問題需要解決:管理軟件 的不斷增大(managing bloatware)
  • 雖然內存的大小增長迅速,但是軟件的大小增長的要比內存還要 快。
  • 在1980年的時候,許多大學用一臺4MB的VAX計算機運行分時操作系統,供十幾個用戶同時 運行。
  • 現在微軟公司推薦的64位Windows 8系統至少需要2GB內存,而許多多媒體的潮流則進一 步推動了對內存的需求。
  • 這一發展的結果是,需要運行的程序往往大到內存無法容納,而且必然需要系統能夠支持多個程序同時運行,即使內存可以滿足其中單獨一個程序的需求,但是從總體上來看內存仍然滿足不了日益增長的軟件的需求(感覺和XXX和XXX的矛盾很相似)。
  • 而交換技術并不是一個很有效的方案,在一些中小應用程序尚可使用交換,如果應用程序過大,難道還要每次交換幾GB的內存?這顯然是不合適的
  • 一個典型的SATA磁盤的峰值傳輸速度高達幾百兆/秒,這意味著需要好幾秒才能換出或者換入一個1 GB的 程序。
  • SATA (Serial ATA)硬盤,又稱串口硬盤,是未來PC機硬盤的趨勢,已基本取代了傳統的PATA 硬盤。
  • 那么還有沒有一種有效的方式來應對呢?有,那就是使用 虛擬內存(virtual memory)
  • 虛擬內存的 基本思想是,每個程序都有自己的地址空間,這個地址空間被劃分為多個稱為頁面(page)的塊。每一頁都是連續的地址范圍。
  • 這些頁被映射到物理內存,但并不是所有的頁都必須在內存中才能運行程序。當程序引用到一部分在物理內存中的地址空間時,硬件會立刻執行必要的映射。當程序引用到一部分不 在物理內存中的地址空間時,由操作系統負責將缺失的部分裝入物理內存并重新執行失敗的指令。

在某種意義上來說,虛擬地址是對基址寄存器和變址寄存器的一種概述。8088有分離的基址寄存器 (但不是變址寄存器)用于放入text和data。

  • 使用虛擬內存,可以將整個地址空間以很小的單位映射到物理內存中,而不是僅僅針對text和data區 進行重定位。

  • 虛擬內存很適合在多道程序設計系統中使用,許多程序的片段同時保存在內存中,當一個程序等待它的 —部分讀入內存時,可以把CPU交給另一個進程使用。

下面我們會探討虛擬內存是如何實現的。

1.分頁

  • 大部分使用虛擬內存的系統中都會使用一種 分頁(paging)技術。
  • 在任何一臺計算機上,程序會引用 使用一組內存地址。當程序執行
MOV REG,1000
  • 這條指令時,它會把內存地址為1000的內存單元的內容復制到REG中(或者相反,這取決于計算 機)。
  • 地址可以通過索引、基址寄存器、段寄存器或其他方式產生。這些程序生成的地址被稱為 虛擬地址(virtual addresses)并形成虛擬地址空間(virtual address space)
  • 在沒有虛擬內存的計算機上,系統直接將虛擬地址送到內存總線上,讀寫操作都使 用同樣地址的物理內存。在使用虛擬內存時,虛擬地址不會直接發送到內存總線上。
  • 相反,會使用 MMU(Memory Management Unit)內存管理單元把虛擬地址映射為物理內存地址,像下圖這樣

    下面這幅圖展示了這種映射是如何工作的:
  • 頁表給出虛擬地址與物理內存地址之間的映射關系
  • 每一頁起始于4096的倍數位置,結束于4095的 位置,所以 4K 到 8K 實際為 4096 - 8191 , 8K - 12K 就是 8192 - 12287
  • 在這個例子中,我們可能有一個16位地址的計算機,地址從0 - 64 K - 1,這些是虛擬地址。
  • 然而只 有32 KB的物理地址。所以雖然可以編寫64 KB的程序,但是程序無法全部調入內存運行,在磁盤上 必須有一個最多64 KB的程序核心映像的完整副本,以保證程序片段在需要時被調入內存。

存在映射的頁如何映射

  • 虛擬地址空間由固定大小的單元組成,這種固定大小的單元稱為 頁(pages)。而相對的,物理內存中 也有固定大小的物理單元,稱為頁框(page frames),頁和頁框的大小一樣。
  • 在上面這個例子中,頁 的大小為4KB,但是實際的使用過程中頁的大小范圍可能是512字節-1G字節的大小。
  • 對應于64 KB的虛擬地址空間和32 KB的物理內存,可得到16個虛擬頁面和8個頁框。
  • RAM和磁盤之間的交 換總是以整個頁為單元進行交換的
  • 程序試圖訪問地址時,例如執行下面這條指令
MOV REG, 0
  • 會將虛擬地址0送到MMU,MMU看到虛擬地址落在頁面0 (0 - 4095),根據其映射結果,這一頁 面對應的頁框2 (8192 - 12287),因此MMU把地址變換為8192 ,并把地址8192送到總線上。
  • 內 存對MMU一無所知,它只看到一個對8192地址的讀寫請求并執行它。MMU從而有效的把所有虛擬 地址0 - 4095映射到了 8192 - 12287的物理地址。
  • 同樣的,指令
MOV REG, 8192

也被有效的轉換為:

MOV REG, 24576
  • 虛擬地址8192 (在虛擬頁2中)被映射到物理地址24576 (在物理貞框6中)上。
  • 通過恰當的設置MMU,可以把16個虛擬頁面映射到8個頁框中的任何一個。但是這并沒有解決虛擬 地址空間比物理內存大的問題。
  • 上圖中有8個物理頁框,于是只有8個虛擬貞被映射到了物理內存中,在上圖中用X號表示的其他 頁面沒有被映射。
  • 在實際的硬件中,會使用一個在/不在(Present/absent bit)位記錄頁面在內存 中的實際存在情況。

未映射的頁如何映射

  • 當程序訪問一個未映射的頁面,如執行指令
MOV REG, 32780
  • 將會發生什么情況呢?虛擬頁面8 (從32768開始)的第12個字節所對應的物理地址是什么?
  • MMU 注意到該頁面沒有被映射(在圖中用X號表示),于是CPU會陷入(trap)到操作系統中。這個陷入 稱為缺頁中斷(page fault)或者是缺頁錯誤。
  • 操作系統會選擇一個很少使用的頁并把它的內容寫 入磁盤(如果它不在磁盤上)。隨后把需要訪問的頁面讀到剛才回收的頁框中,修改映射關系,然后重 新啟動引起陷入的指令。

有點不太好理解,舉個例子來看一下

  • 例如,如果操作系統決定放棄頁框1,那么它將把虛擬機頁面8裝入物理地址4096,并對MMU映射做兩處修改。
  • 首先,它要將虛擬頁中的1表項標記為未映射,使以后任何對虛擬地址4096 - 8191的訪問都將導致陷入。
  • 隨后把虛擬頁面8的表項的叉號改為1,因此在引起陷阱的指令重新啟動時,它將把 虛擬地址32780映射為物理地址(4096 + 12)。
  • 下面查看一下MMU的內部構造以便了解它們是如何工作的,以及了解為什么我們選用的頁大小都是2 的整數次幕。

下圖我們可以看到一個虛擬地址的例子:

  • 虛擬地址8196 (二進制0010000000000100)用上面的頁表映射圖所示的MMU映射機制進行映射, 輸入的16位虛擬地址被分為4位的頁號和12位的偏移量。4位的頁號可以表示16個頁面,12位的 偏移可以為一頁內的全部4096個字節。
  • 可用頁號作為頁表(page table)的索引,以得出對應于該虛擬頁面的頁框號。如果在/不在位則是 0 ,則引起一個操作系統陷入。
  • 如果該位是1,則將在頁表中查到的貞框號復制到輸出寄存器的高3位 中,再加上輸入虛擬地址中的低12位偏移量。
  • 如此就構成了 15位的物理地址。輸出寄存器的內容隨 即被作為物理地址送到總線。

2.頁表

  • 在上面這個簡單的例子中,虛擬地址到物理地址的映射可以總結如下:虛擬地址被分為虛擬頁號(高位 部分)和偏移量(低位部分)。

  • 例如,對于16位地址和4 KB的頁面大小,高4位可以指定16個虛 擬頁面中的一頁,而低12位接著確定了所選頁面中的偏移量(0-4095)

  • 虛擬頁號可作為頁表的索引用來找到虛擬頁中的內容。由頁表項可以找到頁框號(如果有的話)。

  • 然后 把頁框號拼接到偏移量的高位端,以替換掉虛擬頁號,形成物理地址

  • 因此,頁表的目的是把虛擬頁映射到頁框中。

  • 從數學上說,頁表是一個函數,它的參數是虛擬頁號,結 果是物理頁框號。

  • 通過這個函數可以把虛擬地址中的虛擬頁轉換為頁框,從而形成物理地址。

頁表項的結構

下面我們探討一下頁表項的具體結構,上面你知道了頁表項的大致構成,是由頁框號和在/不在位構成 的,現在我們來具體探討一下頁表項的構成

  • 頁表項的結構是與機器相關的,但是不同機器上的貞表項大致相同。
  • 上面是一個頁表項的構成,不同計 算機的頁表項可能不同,但是一般來說都是32位的。
  • 頁表項中最重要的字段就是頁框號(Page frame number)。畢竟,頁表到頁框最重要的一步操作就是要把此值映射過去。
  • 下一個比較重要的就是在/不 在位,如果此位上的值是1,那么頁表項是有效的并且能夠被使用。如果此值是0的話,則表示該頁 表項對應的虛擬頁面不在內存中,訪問該頁面會引起一個缺頁異常(page fault)。
  • 保護位(Protection)告訴我們哪一種訪問是允許的,啥意思呢?最簡單的表示形式是這個域只有一 位,。表示可讀可寫,1表示的是只讀。
  • 修改位(Modified)和訪問位(Referenced)會跟蹤頁面的使用情況。當一個頁面被寫入時,硬件 會自動的設置修改位。修改位在頁面重新分配頁框時很有用。
  • 如果一個頁面已經被修改過(即它是 臟 的),則必須把它寫回磁盤。如果一個頁面沒有被修改過(即它是 干凈的),那么重新分配時這個頁 框會被直接丟棄,因為磁盤上的副本仍然是有效的。這個位有時也叫做 臟位(dirty bit),因為它反 映了頁面的狀態。
  • 訪問位(Referenced)在頁面被訪問時被設置,不管是讀還是寫。這個值能夠幫助操作系統在發生缺 頁中斷時選擇要淘汰的頁。不再使用的頁要比正在使用的頁更適合被淘汰。這個位在后面要討論的頁面 置換算法中作用很大。
  • 最后一位用于禁止該頁面被高速緩存,這個功能對于映射到設備寄存器還是內存中起到了關鍵作用。通 過這一位可以禁用高速緩存。具有獨立的I/O空間而不是用內存映射I/O的機器來說,并不需要這一 位。
  • 在深入討論下面問題之前,需要強調一下:虛擬內存本質上是用來創造一個地址空間的抽象,可以把它 理解成為進程是對CPU的抽象,虛擬內存的實現,本質是將虛擬地址空間分解成頁,并將每一項映射 到物理內存的某個頁框。

因為我們的重點是如何管理這個虛擬內存的抽象。

3.加速分頁過程

到現在我們已經虛擬內存(virtual memory)和分頁(paging)的基礎,現在我們可以把目光放在 具體的實現上面了。

  • 在任何帶有分頁的系統中,都會需要面臨下面這兩個主要問題:
  • ?虛擬地址到物理地址的映射速度必須要快
  • ?如果虛擬地址空間足夠大,那么頁表也會足夠大
  • 第一個問題是由于每次訪問內存都需要進行虛擬地址到物理地址的映射,所有的指令最終都來自于內 存,并且很多指令也會訪問內存中的操作數。
  • 操作數:操作數是計算機指令中的一個組成部分,它規定了指令中進行數字運算的量。
  • 操作數指出指令執行的操作所需要數據的來源。
  • 操作數是匯編指令的一個字段。比如,MOV、ADD等。
  • 因此,每條指令可能會多次訪問頁表,如果執行一條指令需要1 ns,那么頁表查詢需要在0.2 ns之內 完成,以避免映射成為一個主要性能瓶頸。

  • 第二個問題是所有的現代操作系統都會使用至少32位的虛擬地址,并且64位正在變得越來越普遍。 假設頁大小為4KB,32位的地址空間將近有100萬頁,而64位地址空間簡直多到無法想象。

  • 對大而且快速的頁映射的需要成為構建計算機的一個非常重要的約束。就像上面頁表中的圖一樣,每一 個表項對應一個虛擬頁面,虛擬頁號作為索引。在啟動一個進程時,操作系統會把保存在內存中進程頁 表讀副本放入寄存器中。

  • 最后一句話是不是不好理解?還記得頁表是什么嗎?

  • 它是虛擬地址到內存地址的映射頁表。頁表 是虛擬地址轉換的關鍵組成部分,它是訪問內存中數據所必需的。在進程啟動時,執行很多次虛 擬地址到物理地址的轉換,會把物理地址的副本從內存中讀入到寄存器中,再執行這一轉換過 程。

  • 所以,在進程的運行過程中,不必再為頁表而訪問內存。使用這種方法的優勢是簡單而且映射過程中不 需要訪問內存。缺點是頁表太大時,代價高昂,而且每次上下文切換的時候都必須裝載整個頁表,這 樣會造成性能的降低。

鑒于此,我們討論一下加速分頁機制和處理大的虛擬地址空間的實現方案

轉換檢測緩沖區

  • 我們首先先來一起探討一下加速分頁的問題。大部分優化方案都是從內存中的頁表開始的。這種設計對 效率有著巨大的影響。
  • 考慮一下,例如,假設一條1字節的指令要把一個寄存器中的數據復制到另一個
    寄存器。

  • 在不分頁的情況下,這條指令只訪問一次內存,即從內存取出指令。

  • 有了分頁機制后,會因為要訪問頁表而需要更多的內存訪問。

  • 由于執行速度通常被CPU從內存中取指令和數據的速度所限制,這樣的話,兩次訪問才能實現一次的訪問效果,所以內存訪問的性能會下降一半。

  • 在這種情況下,根本 不會采用分頁機制。

  • 什么是1字節的指令?我們以8085微處理器為例來說明一下,在8085微處理中,一共有3種字節指令,它們分別是1-byte(1字節)、2-byte(2字節)、3-byte(3字節),我們分別 來說一下

  • 1-byte: 1字節的操作數和操作碼共同以1字節表示;操作數是內部寄存器,并被編碼到指令中;指令需要一個存儲位置來將單個寄存器存儲在存儲位置中。

  • 沒有操作數的指令也是1-byte指 令。

  • 例如:MOVB,C、LDAXB、NOP、HLT

  • 2-byte:2字節包括:第一個字節指定的操作碼;第二個字節指定操作數;指令需要兩個存儲器位 置才能存儲在存儲器中。

  • 例如 MVI B, 26 H、IN 56 H 3-byte:在3字節指令中,第一個字節指定操作碼;后面兩個字節指定16位的地址;第二個字節 保存低位地址;第三個字節保存高位地址。指令需要三個存儲器位置才能將單個字節存儲在 存儲器中。

  • 例如 LDA 2050 H、JMP 2085 H

  • 大多數程序總是對少量頁面進行多次訪問,而不是對大量頁面進行少量訪問。因此,只有很少的頁面能 夠被再次訪問,而其他的頁表項很少被訪問。
  • 頁表項一般也被稱為Page Table Entry(PTE)。
  • 基于這種設想,提出了一種方案,即從硬件方面來解決這個問題,為計算機設置一個小型的硬件設備, 能夠將虛擬地址直接映射到物理地址,而不必再訪問頁表。這種設備被稱為轉換檢測緩沖區 (Translation Lookaside Buffer, TLB),有時又被稱為 相聯存儲器(associate memory)
  • TLB通常位于MMU中,包含少量的表項,每個表項都記錄了頁面的相關信息,除了虛擬頁號外,其他表項都和頁表是 對應的
  • 是不是你到現在還是有點不理解什么是TLB, TLB其實就是一種內存緩存,用于減少訪問內存所需要的 時間,它就是MMU的一部分,TLB會將虛擬地址到物理地址的轉換存儲起來,通常可以稱為地址翻 譯緩存(address-translation cache)。
  • TLB通常位于CPU和CPU緩存之間,它與CPU緩存是 不同的緩存級別。

下面我們來看一下TLB是如何工作的。

  • 當一個MMU中的虛擬地址需要進行轉換時,硬件首先檢查虛擬頁號與TLB中所有表項進行并行匹 配,判斷虛擬頁是否在TLB中

  • 如果找到了有效匹配項,并且要進行的訪問操作沒有違反保護位的 話,則將頁框號直接從TLB中取出而不用再直接訪問頁表。

  • 如果虛擬頁在TLB中但是違反了保護位的 權限的話(比如只允許讀但是是一個寫指令),則會生成一個保護錯誤(protection fault)返回。

  • 上面探討的是虛擬地址在TLB中的情況,那么如果虛擬地址不再TLB中該怎么辦?

  • 如果MMU檢測到 沒有有效的匹配項,就會進行正常的頁表查找,然后從TLB中逐出一個表項然后把從頁表中找到的項 放在TLB中。

  • 當一個表項被從TLB中清除出,將修改位復制到內存中頁表項,除了訪問位之外,其他 位保持不變。當貞表項從頁表裝入TLB中時,所有的值都來自于內存。

軟件TLB管理

  • 直到現在,我們假設每臺電腦都有可以被硬件識別的頁表,外加一個TLB。在這個設計中,TLB管理和處理TLB錯誤完全由硬件來完成。僅僅當頁面不在內存中時,才會發生操作系統的陷入(trap)。
  • 在以前,我們上面的假設通常是正確的。但是,許多現代的RISC機器,包括SPARC. MIPS和HP PA,幾乎所有的頁面管理都是在軟件中完成的。
  • 精簡指令集計算機或RISC是一種計算機指令集,它使計算機的微處理器的每條指令(CPI)周期 比復雜指令集計算機(CISC)少
  • 在這些計算機上,TLB條目由操作系統顯示加載。當發生TLB訪問丟失時,不再是由MMU到頁表中 查找并取出需要的頁表項,而是生成一個TLB失效并將問題交給操作系統解決。
  • 操作系統必須找到該 頁,把它從TLB中移除(移除頁表中的一項),然后把新找到的頁放在TLB中,最后再執行先前出錯 的指令。然而,所有這些操作都必須通過少量指令完成,因為TLB丟失的發生率要比出錯率高很多。
  • 無論是用硬件還是用軟件來處理TLB失效,常見的方式都是找到頁表并執行索引操作以定位到將要訪 問的頁面,在軟件中進行搜索的問題是保存頁表的頁可能不在TLB中,這將在處理過程中導致其他 TLB錯誤。
  • 改善方法是可以在內存中的固定位置維護一個大的TLB表項的高速緩存來減少TLB失效。 通過首先檢查軟件的高速緩存,操作系統能夠有效的減少TLB失效問題。
  • TLB軟件管理會有兩種TLB失效問題,當一個頁訪問在內存中而不在TLB中時,將產生 軟失效 (soft miss),那么此時要做的就是把貞表更新到TLB中(我們上面探討的過程),而不會產生磁盤 I/O,處理僅僅需要一些機器指令在幾納秒的時間內完成
  • 然而,當頁本身不在內存中時,將會產生硬 失效(hard miss),那么此時就需要從磁盤中進行頁表提取,硬失效的處理時間通常是軟失效的百萬 倍。
  • 在頁表結構中查找映射的過程稱為 頁表遍歷(page table walk)。
  • 上面的這兩種情況都是理想情況下出現的現象,但是在實際應用過程中情況會更加復雜,未命中的情況 可能既不是硬失效又不是軟失效。
  • 一些未命中可能更軟或更硬(偷笑)。比如,如果頁表遍歷的過 程中沒有找到所需要的頁,那么此時會出現三種情況:
  • ?所需的頁面就在內存中,但是卻沒有記錄在進程的頁表中,這種情況可能是由其他進程從磁盤掉入 內存,這種情況只需要把頁正確映射就可以了,而不需要在從硬盤調入,這是一種軟失效,稱為次要缺頁錯誤(minor page fault)
  • ?基于上述情況,如果需要從硬盤直接調入頁面,這就是嚴重缺頁錯誤(major page falut)。
  • ?還有一種情況是,程序可能訪問了一個非法地址,根本無需向TLB中增加映射。此時,操作系統 會報告一個段錯誤(segmentation fault)來終止程序。
  • 只有第三種缺頁屬于程序錯誤,其他 缺頁情況都會被硬件或操作系統以降低程序性能為代價來修復

3.針對大內存的頁表

  • 上 面加速分頁過程討論的是虛擬地址到物理地址的映射速度必須要快的問題.

  • 還有一個問題是如果虛擬 地址空間足夠大,那么頁表也會足夠大的問題,如何處理巨大的虛擬地址空間

下面展開我們的討論。

多級頁表

  • 第一種方案是使用多級頁表(multi)

下面是一個例子:

  • 32位的虛擬地址被劃分為10位的PT1域,10位的PT2域,還有12位的Offset域。因為偏移量是 12位,所以頁面大小是4KB,共有2 ^ 20次方個頁面。
  • 引入多級頁表的原因是避免把全部頁表一直保存在內存中。不需要的頁表就不應該保留。
  • 多級頁表是一種分頁方案,它由兩個或多個層次的分頁表組成,也稱為分層分頁。級別1 (level 1)頁 面表的條目是指向級別2 (level 2)頁面表的指針,級別2 的頁面表的條目是指向級別3 (level 3)頁面 表的指針,依類推。最后一級頁表存儲的是實際的信息。

下面是一個二級頁表的工作過程:

  • 在最左邊是頂級頁表,它有1024個表項,對應于10位的PT1域。
  • 當一個虛擬地址被送到MMU時, MMU首先提取PT1域并把該值作為訪問頂級頁表的索引。因為整個4 GB (即32位)虛擬地址已經 按4KB大小分塊,所以頂級頁表中的1024個表項的每一個都表示4M的塊地址范圍。
  • 由索引頂級頁表得到的表項中含有二級頁表的地址或頁框號。頂級頁表的表項。指向程序正文的頁表, 表項1指向含有數據的頁表,表項1023指向堆棧的頁表,其他的項(用陰影表示)表示沒有使用。
  • 現在把PT2域作為訪問選定的二級頁表的索引,以便找到虛擬頁面的對應頁框號。

倒排頁表

  • 針對分頁層級結構中不斷增加的替代方法是使用倒排頁表(inverted page tables)
  • 采用這種解決 方案的有PowerPC、UltraSPARC Itaniumo在這種設計中,實際內存中的每個頁框對應一個表項, 而不是每個虛擬頁面對應一個表項。
  • 雖然倒排頁表節省了大量的空間,但是它也有自己的缺陷:那就是從虛擬地址到物理地址的轉換會變得 很困難。
  • 當進程n訪問虛擬頁面p時,硬件不能再通過把p當作指向頁表的一個索引來查找物理頁。 而是必須搜索整個倒排表來查找某個表項。
  • 另外,搜索必須對每一個內存訪問操作都執行一次,而不是 在發生缺頁中斷時執行。
  • 解決這一問題的方式時使用TLB。當發生TLB失效時,需要用軟件搜索整個倒排頁表。
  • 一個可行的方 式是建立一個散列表,用虛擬地址來散列。當前所有內存中的具有相同散列值的虛擬頁面被鏈接在一 起。

如下圖所示:

  • 如果散列表中的槽數與機器中物理頁面數一樣多,那么散列表的沖突鏈的長度將會是1個表項的長度, 這將會大大提高映射速度。
  • 一旦頁框被找到,新的(虛擬頁號,物理頁框號)就會被裝在到TLB中。

總結

以上是生活随笔為你收集整理的OS- -内存之虚拟内存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。