x86架構段頁式記憶體管理機制

2021-10-03 21:25:12 字數 1018 閱讀 4747

記憶體定址總體流程

段暫存器

值得注意的是,計算機在描述記憶體分段時至少需要如下資訊:段的大小、段的起始位址、段的屬性。在80386以後的cpu中,需要使用64位來儲存這些資訊,但段暫存器只有16位(intel為了保持向後相容),因此在保護模式下,需要使用段描述符來儲存這些資訊,而段暫存器儲存的是段選擇子。cpu可以通過段暫存器中的段選擇子從描述符表中取出相應的段描述符,並將其儲存到高速緩衝區中,之後再對該段訪問就無需再次訪問描述符表了。

在實模式下,段暫存器中的值乘以16即可得到20位段基位址。

段選擇子
15                    2   0

| index |t1|rpl|

段選擇子的高13位是描述符索引index。第2位是引用描述符指示位t1,t1=0指示描述符在gdt中,t1=1指示描述符在ldt中。第0-1位為請求特權值rpl。

段描述符

細節可參考部落格

全域性描述符表gdt

段描述符大小為64-bit,而intel為了保持向後相容,將段暫存器的大小仍然規定為16-bit。我們顯然無法通過16-bit大小的段暫存器來儲存64-bit大小的段描述符。所以可以將這些段描述符放入乙個陣列中,而將段暫存器中的值作為下標索引(段選擇子)來簡介引用段描述符。這個全域性的陣列就是gdt,暫存器gdtr存放gdt的入口位址。

區域性描述符表ldt

與gdt不同,ldt可以在系統中存在多個,只對引用它們的任務可見,每個任務最多可以擁有乙個ldt。此外,每乙個ldt自身作為乙個段存在,它們的段描述符被存放在gdt中。暫存器ldtr用來存放ldt的入口位址。

邏輯位址->線性位址

線性位址->實體地址

之二 X86頁式記憶體管理

記憶體管理的目的是什麼?記憶體管理本身就像乙個外觀模式,它隱藏底層細節而給應用程式提供乙個統一易用的訪問記憶體的介面。程式可以訪問4g空間中的任意位址,但實際上物理記憶體可能只有幾百m,這之間的矛盾該怎麼解決?關鍵時刻,還是得抱硬碟的大腿。當可用記憶體不足時,將記憶體中不緊急的內容從記憶體中換出到磁...

x86架構中特權級

特權級,可以分為三種 第 一 描述符中的特權級dpl,表示這個段的特權 第 二 選擇子的rpl表示請求方的特權級 第 三 當前特權級,表示正在執行的 段所具有的特權 下面有關特權級知識的總結 第一 對於資料段來說,特權級dpl表示了可以訪問該資料的最低特權。若資料段的dpl為1,那麼只有特權級為0或...

x86架構和arm構架

x86是英特爾公司開發的並且通治了幾十年.x86反應快在pc應用廣泛.86與arm最大不同在於指令集上.x86跟硬體發揮優勢.但是帶來的功耗大.arm構架指令簡單執行起來快功耗也低.現在智慧型手機和平板很火.平板電腦要求便攜和續航能力.arm構架具有低功耗.使之有了市場.那麼為什麼沒有得到普及原因主...