一步步编写操作系统 39 二级页表1
前面講述了頁表的原理,并以一級頁表做為原型講述了地址轉換過程。既然有了一級頁表,為什么還要搞個二級頁表呢?理由如下:
歸根結底,我們要解決的是:不要一次性地將全部頁表項建好,需要時動態創建頁表項。如何解決呢?
二級頁表很好的解決了該問題。我們來說下,什么是二級頁表。
無論是幾級頁表,標準頁的尺寸都是4KB,這一點是不變的。所以4GB線性地址空間最多有1M個標準頁。一級頁表是將這1M個標準頁放置到一張頁表中,二級頁表是將這1M個標準頁平均放置1K個頁表中。每個頁表中包含有1K個頁表項。頁表項是4字節大小,頁表包含1K個頁表項,故頁表大小為4KB,這恰恰是一個標準頁的大小。
拆分出了這么多個頁表,如何使用它們呢?為此,專門有個頁目錄表來存儲這些頁表。每個頁表的物理地址在頁目錄表中都以頁目錄項PDE(Page Directory Entry)的形式存儲,頁目錄項大小同頁表項一樣,都是用來描述一個物理頁的物理地址,其大小都是4字節,而且最多有1024個頁表,所以頁目錄表也是4KB大小,同樣也是標準頁的大小。
頁表是用于管理內存的數據結構,其也要占用內存,所以頁目錄表和頁表所占用的物理頁,同樣是混跡于物理內存之中,如圖
頁目錄表中共1024個頁表,也就是有1024個頁目錄項。一個頁目錄項中記錄一個頁表物理頁地址,物理頁地址是指頁的物理地址,在頁目錄項及頁表項中記錄的都是頁的物理地址,由于頁大小都是0x1000,即4096,因此頁地址是以000為結尾的16進制數字。每個頁表中有1024個頁表項,每個頁表項中是一個物理頁地址,最終數據是寫在這頁表項中指定的物理頁中。頁表項中分配的物理頁地址在真正物理內存中離散頒布,毫無規律可言,操作系統負責這些物理頁的分配與釋放。由于頁目錄表和頁表本身都要占用內存,且為4KB大小,故它們也會由操作系統在物理內存中分配一物理頁存放。圖中最粗的線是存放頁目錄表物理頁,稍細一點的線指向的是用來存放頁表的物理頁,其它最細的線是頁表項中分配的物理頁,頁表結構本身與其它數據混布滲透在物理內存中,頁表所占用的物理頁在外在形式上與其它數據占用的物理頁沒有什么不同,只有cpu知道它們的作用不同。頁表在建立之初,物理內存各部分的布局還是相對較整潔的,隨著操作系統分配或釋放內存的動作越來越頻繁,物理內存的布局將更加零散。
二級頁表與一級頁表在原理上相同,但結構上已經有了很大不同,它們在虛擬地址到物理地址轉換方法上也很大不同。
我們已經知道,前面所說的一級頁表轉換方法,是將32位虛擬地址拆分成兩部分,高20位用于定位一個物理頁,低12位用于物理頁內的偏移量。在二級頁表轉換中,依然是用32位虛擬地址的不同部分來定位物理頁。
在二級頁表是這樣的:每個頁表中可容納1024個物理頁,故每個頁表可表示的內存容量是1024*4KB=4MB。頁目錄中共有1024個頁表,故所有頁表可表示的內存容量是1024*4MB=4GB,這已經達到了32位地址空間的最大容量。所以說,任意一個32位物理地址,它必然在某個頁表之內的某個物理頁中。我們定位某一個物理頁,必然要先找到其所屬的頁表。頁目錄中1024個頁表,只需要10位二進制就能夠表示了,所以,虛擬地址的高10位(第31~22位)用來在頁目錄中定位一個頁表,也就是這高10位用于定位頁目錄中的頁目錄項PDE,PDE中有頁表物理頁地址。找到頁表后,到底是頁表中哪一個物理頁呢?由于頁表中可容納1024個物理頁,故只需要10位二進制就能夠表示了。所以虛擬地址的中間10位(第21~12位)用來在頁表中定位具體的物理頁,也就是在頁表中定位一個頁表項PTE,PTE中有分配的物理頁地址。由于標準頁都是4KB,12位二進制便可以表達4KB之內的任意地址,故線性地址中余下的12位(第11~0位)用于頁內偏移量。
經以上分析,二級頁表地址轉換原理是,將32位虛擬地址拆分成高10位、中間10位、低12位三部分,它們的作用是:高10位做為頁表的索引,用于在頁目錄表中定位一個頁目錄項PDE,頁目錄項中有頁表物理地址,也就是定位到了某個頁表。中間10位做為物理頁的索引,用于在頁表內定位到某個頁表項PTE,頁表項中有分配的物理頁地址,也就是定位到了某個物理頁。低12位做為頁內偏移量用于在已經定位到的物理頁內尋址。
同一級頁表一樣,訪問任何頁表內的數據都要通過物理地址。由于頁目錄項PDE和頁表項PTE都是4字節大小,給出了PDE和PTE索引后,還需要在背后悄悄乘以4,再加上頁表物理地址,這才是最終要訪問的絕對物理地址。轉換過程背后的具體步驟是:
這種自動化較強的工作,還是由頁部件自動完成的,
總結
以上是生活随笔為你收集整理的一步步编写操作系统 39 二级页表1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业桃花信用卡:网购要积分刷它准没错
- 下一篇: 银行理财的产品结构发生重大变化,一类产品