0178-開啟四級分頁
2023-08-20 19:14 作者:jiangbo4444 | 我要投稿
環(huán)境
Time 2022-11-12
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
說明
參考:https://os.phil-opp.com/entering-longmode/
目標(biāo)
如果要進(jìn)入長模式,則必須要進(jìn)行分頁。在 64 位系統(tǒng)中,采用 4 級分頁。
關(guān)于分頁的信息,需要找其它的資料另外了解,這里不做詳細(xì)介紹。
介紹
一共四級分頁,原文中將其稱為 P4,P3,P2,P1,這里也直接使用這種方式。 最初出發(fā)點為 CR3 寄存器,然后到 P4,直到 P1,最后是頁偏移。 一個頁表包含 512 項,每一項 8 個字節(jié),一共 4K。 地址中的 48-63 必須滿足和第 47 位一致,才是合法的地址。 具體的對應(yīng)如下圖:

低地址位的狀態(tài)
因為至少是 4K 分頁,所以低 12 位默認(rèn)都是 0,可以用它們來表示一些額外的信息。

巨型頁
除了可以使用 4K 分頁,也可以使用 1G 或者 2M 分頁。
為了保證從保護(hù)模式的虛擬地址到分頁的正確映射,下面使用了 2M 分頁。
分頁首先需要 4K 對其,然后建立了 P4,P3,P2 三個頁表。
關(guān)聯(lián)多級分頁
初始化巨型頁
開啟分頁
如果要開啟分頁,需要完成以下幾步:
將 P4 的起始地址存放到 CR3,因為分頁從 CR3 開始找。
啟用物理地址擴(kuò)展(PAE)。
擴(kuò)展特性啟用寄存器(Extended Feature Enable Register)需要設(shè)置長模式。
啟用分頁,由 CR0 的最高位控制。
總結(jié)
在保護(hù)模式下,開啟了四級分頁。
附錄
源碼
標(biāo)簽: