段頁式訪存——線性地址到物理地址的轉(zhuǎn)換

前言:段頁式的訪存的內(nèi)容還沒有結(jié)束。。。還有一部分知識,線性地址到物理地址的轉(zhuǎn)換。話不多說,讓我們開始吧。

假設(shè)頁的大小是 4KB,每個頁表項占 4B,則理論上一個頁表有多大?(虛擬空間大小是 4GB)

頁表項數(shù)目 = 4 GB / 4 KB = 1 MB

所以,

頁表大小 = 1 MB × 4 B = 4 MB

注意!

頁的大小是 4KB。也就是說,一個頁是放不下的。所以我們要采用多級頁表的方式。

整體過程

(在這里說的是 IA-32 架構(gòu),也就是只有兩層頁表)

線性地址 ------> 物理地址的整體過程如下:

用文字敘述:

  • 由邏輯地址得到的線性地址一共 32 位。前 10 位是頁目錄索引,中間 10 位是頁表索引,最后 12 位是業(yè)內(nèi)偏移量
  • 由 CR3 寄存器得到「頁目錄基地址」,再得到「頁目錄項」
  • 由「頁目錄項」得到「頁表基地址」
  • 由「頁表基地址」得到「頁表項」,最后得到物理地址

什么是 CR3 寄存器

在這里一共要介紹 3 種「控制寄存器」

  • CR0:控制寄存器(轉(zhuǎn)自維基百科)

    Bit Name Full Name Description
    0 PE Protected Mode Enable 如果為 1,則系統(tǒng)處于保護模式,否則系統(tǒng)處于實模式
    1 MP Monitor co-processor 控制 WAIT / FWAIT 指令與 CR0 中 TS 標志的交互
    2 EM Emulation 如果設(shè)置,則不存在 x87 浮點單元,如果清除,則存在 x87 浮點單元
    3 TS Task switched 僅在使用 x87 指令后才允許在任務切換時保存 x87 任務上下文
    4 ET Extension type 在 386 上,它允許指定外部數(shù)學協(xié)處理器是 80287 還是 80387
    5 NE Numeric error 設(shè)置時啟用內(nèi)部 x87 浮點錯誤報告,否則啟用 PC 樣式 x87 錯誤檢測
    16 WP Write protect 設(shè)置后,當權(quán)限級別為 0 時,CPU 無法寫入只讀頁面
    18 AM Alignment mask 如果 AM 設(shè)置,AC 標志(在 EFLAGS 寄存器中)設(shè)置,并且權(quán)限級別為 3,則啟用對齊檢查
    29 NW Not-write through 全局啟用/禁用直寫式緩存
    30 CD Cache disable 全局啟用/禁用內(nèi)存緩存
    31 PG Paging 如果為 1,則啟用分頁并使用 CR3 寄存器,否則禁用分頁。

    在本例子中,CR0 寄存器主要用來標明使不使用分頁。

  • CR2:頁故障(page fault)線性地址寄存器

    存放引起頁故障的線性地址。只有在 CR0 中的 PG=1 時,CR2 才有效。

  • CR3:頁目錄基址寄存器

    保存頁目錄表的起始地址。只有當 CR0 中的 PG=1 時,CR3 才有效。

這樣就完成了訪存的所有內(nèi)容。我們來回顧一下

舉個栗子

IA-32中,執(zhí)行“movl 8(%ebp), %eax” 中取數(shù)操作的大致過程如下:

  • 由 ds 寄存器得到 16 位段選擇符,其中有 2 位記錄了 CPL。
  • 由段選擇符,查表(第一次)或者查 Cache。找到段描述符。其中有 2 位記錄了 DPL。以及 32 位的段基址。
  • 如果 CPL >= DPL 則越級,否則計算線性地址 LA = 段基址 + R[ebp] + 0 * 0 + 8
  • 若 LA > 段限,則越界,否則將 LA 轉(zhuǎn)換為主存地址 A
    • 若訪問 TLB 命中則地址轉(zhuǎn)換得到 A;否則處理 TLB 缺失(硬件/OS)
    • 若缺頁或越權(quán)(R/W不符)則調(diào)出 OS 內(nèi)核;否則地址轉(zhuǎn)換得到 A
    • 根據(jù) A 先到 Cache 中找,若命中則取出 A 在 Cache 中的副本
    • 若 Cache 不命中,則再到主存取 A 所在主存塊送對應 Cache 行
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容