《Orange’s 一個操作系統的實現》3.保護模式8-頁式存儲

《Orange’s 一個操作系統的實現》3.保護模式8-頁式存儲

作者:Aoysme | 出處:博客園 | 2011/11/20 21:12:59 | 閱讀19

A.分頁機制概述(如圖)

   Segmentation部分爲分段機制,邏輯地址通過段選擇子,從GDT中對應的段描述符中確定段基址,然後在加上偏移確定線性地址

   Paging部分爲分頁機制:物理地址=f(線性地址)  

  image

   分頁機制使用兩級轉換表,第一級叫做頁目錄(Page Directory),存儲在一個物理頁中.大小爲4KB,每個表項4字節,

    共有1024個表項(Page Directory Entry).

   每個表項對應第二級的一個頁表(Page Table),每個頁表也有1024項(Page Table Entry),每個表項對應一個物理頁。

 

   運行轉換時,先是有寄存器cr3指定的頁目錄中根據線性地址的高10位(圖中的Dir)得到頁表地址,然後在頁表中根據線性地址的第

  12到21位(圖中的Table)得到物理頁首地址,將這個首地址加上線性地址低12位(圖中的Offset)便得到了物理地址。

 

 

  分頁機制是否生效的開關位於cr0的最高爲PG位,PG=1,分頁生效.所以當我們準備好了頁目錄表和頁表,並將cr3指向

  頁目錄表之後,只需重置PG位即可開始分頁機制.

 

B.PDE和PTE

   image   

  P存在位:表示當前條目所指向的頁或頁表是否在物理內存中.P=0,表示頁不在內存中,如果處理器試圖訪問此頁會
             產生頁異常(page-fault exception,#PF);P=1表示頁在內存中

 

  R/W指定一個頁或者一組頁的讀寫權限.R/W=0表示只讀,R/W=1表示可讀寫

         此位與U/S位和cr0中的WP相互作用

 

   U/S指定一個頁或者一組頁的特權級。此位與R/W和中cr0中的WP相互作用

         U/S=0,表示系統級別,如果CPL=0,1,2就在此級別  

         U/S=1,表示系統級別,如果CPL=3就在此級別

         如果cr0的WP=0,即便用戶級頁面的R/W=0,系統級程序仍然具備寫權限.

                      WP=1,即便用戶級頁面的R/W=0,系統級程序也不能寫入只讀頁.         

    PWT用於控制對單個頁或者頁表的緩衝策略。PWT=0使用Write-back緩衝策略
           PWT=1使用Write-through緩衝策略

           cr0的CD(Cache-Disable)位被設置時會被忽略

    PCD控制對單個頁或者頁表的緩衝PCD=0時,頁或頁表可以被緩衝PCD=1,不能

           cr0的CD(Cache-Disable)位被設置時會被忽略   

    A指示頁或頁表是否被訪問。在頁或頁表剛被加載到物理內存中時被內存管理程序清0,處理器會在第一次

      訪問此頁或頁面時設置此位.而且處理器不會自動清除此位。只有軟件能清除它

    D指示頁或頁表是否被寫入。在頁或頁表剛被加載到物理內存中時被內存管理程序清0,處理器會在第一次

      訪問此頁或頁面時設置此位.而且處理器不會自動清除此位。只有軟件能清除它

      A位和D位都是被內存管理程序用來管理頁和頁表從物理內存中換入換出的

 

    PS位決定頁大小PS=0頁大小爲4KB,PDE指向頁表

    PAT選擇PAT(Page Attribute Table)條目。

    G指示全局頁。如果此位被設置.同時cr4中的PGE位被設置。那麼此頁的頁表和頁目錄條目不會再TLB中變得無效

    處理器會將最近常用的頁目錄和頁表保存在一個叫做TLB(Translation Lookasied buffer)的緩衝區中.加速訪問


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章