每個程序都擁有乙個自己的頁表,在linux中,有乙個頁目錄陣列,這是分頁機制的最高層,每個程序的頁表對應其中的乙個頁目錄項,通過cr3暫存器可以訪問。
乙個程序的頁表,對應的頁表項中對應頁的實體地址。
2. 分頁機制
分頁機制的作用
分頁機制是在段機制之後進行的,它進一步將線性位址轉換為實體地址。
80386使用4k位元組大小的頁,且每頁的起始位址都被4k整除。因此,80386把4gb位元組線性位址空間劃分為1m個頁面,採用了兩級表結構。
兩級頁表
兩級表的第一級表稱為頁目錄,儲存在乙個4k位元組的頁中,頁目錄表共有1k個表項,每個表項為4個位元組,線性位址最高的10位(22-31)用來產生第一級表索引,由該索引得到的表項中的內容定位了二級表中的乙個表的位址,即下級頁表所在的記憶體塊號。
第二級表稱為頁表,儲存在乙個4k位元組頁中,它包含了1k位元組的表項,每個表項包含了乙個頁的實體地址。二級頁表由線性位址的中間10位(12-21)位進行索引,定位頁表表項,獲得頁的實體地址。頁實體地址的高20位與線性位址的低12位形成最後的實體地址。
Linux核心頁表
一 linux位址空間 arm的32位系統共支援4g的記憶體空間,其中0 3g為使用者空間,3g 4g是核心空間,arm採用2級頁表,32位位址空間address分別為 pgd pte 12bits,在核心 中分別為pgd 11位,pte 9 位,頁內位址12位 但是在mmu系統中對於arm的二級分...
linux頁表問題
1.核心頁表問題 kmalloc與kmem cache alloc之後的頁表 就比如說誰也沒有規定你不能在中斷處理裡面呼叫schedule,而且 你完全可以在沒有呼叫spin lock的情況下調spin unlock,會出問題嗎?出問題的是你自己,這個世界不會因為刀可以殺人就不用刀切菜了。啟動之後,...
linux 臨時頁表
armv8 linux4.9 檢視dma map前後mmu page table的變化的時候,有看到有的page table entry映 2m的size,這個2m的entry是何時建立的,目的是什麼是這邊部落格要弄清楚的問題。arm64 定義頁框大小的define位置如下,每乙個頁表項對映乙個頁框...