Linux kernel 學習筆記(1) –分段分頁保護機制

來源:互聯網
上載者:User

使用80x86處理器進行定址時牽涉到三種不同的地址,其關係如下所示

 

邏輯地址------------------->線性地址-------------------------->物理地址

                 (分段)                             (分頁)


分段的保護機制:

 

一個邏輯地址由兩部分組成:段標識符和位移量。其中位移量是一個32位長的欄位,段標識符是一個16位長的欄位,稱為段選擇符,含有一個13位的段描述符索引,一個1位的GDT和LDT指示位和一個兩位的要求者特權級。

要求者特權級(RPL)是用來指示當前CPU的特權級。0代表最高優先順序,3代表最低優先順序,Linux只用0和3,分別稱之為核心態和使用者態。

 

為了快速方便的找到段選擇符,處理器提供了段寄存器,段寄存器的唯一目的是存放段選擇符,其中CS寄存器中包含一個兩位的欄位,用來指明CPU的當前優先順序(CPL)。

 

段描述符是由8個位元組來表示段的特性,它被儲存在通用描述元表(GDT)和局部描述符表(LDT)中,由於段描述符的內容較多,在此不一一介紹。關鍵的有一個兩位表示的描述符特權級(DPL),主要用於限制對這個段的存取,它表示可以訪問這個段的最小CPU優先順序。

 

以上三段共提到3個特權級,分別是RPL、CPL和DPL。是不是有點暈了,不著急,下面說明三個的關係。

 

DPL:描述符特權級(Descriptor Privilege Level)

儲存在描述符中的許可權位,用於描述代碼的所屬的特權等級,也就是代碼本身真正的特權級。一個程式可以使用多個段(Data,Code,Stack)也可以只
用一個code段等。正常的情況下,當程式的環境建立好後,段描述符都不需要改變——當然DPL也不需要改變,因此每個段的DPL值是固定。


CPL:當前特權級(Current Privilege Level)

是CS register 裡bit 0和bit 1 位組合所得的值.在某一時刻就只有這個值唯一的代表程式的CPL。在Linux系統中代表當前處於核心態還是使用者態。

 

RPL:請求特權級RPL(Request Privilege Level)

RPL儲存在選擇子的最低兩位。
RPL
說明的是進程對段訪問的請求許可權,意思是當前進程想要的請求許可權。
RPL


由程式員自己來自由的設定,並不一定RPL>=CPL,但是當RPL<CPL時,實際起作用的就是CPL了,因為訪問時的特權檢查是判
斷:EPL=max(RPL,CPL)<=DPL
是否成立,所以RPL可以看成是每次訪問時的附加限制,RPL=0時附加限制最小,RPL=3時附
加限制最大。所以你不要想通過來隨便設定一個rpl來訪問一個比cpl更內層的段。

因為你不可能得到比自己更高的許可權,你申請的許可權一定要比你實際許可權低才能通過CPU的審查,才能對你允許存取。所以實際上RPL的作用是程式員可以把自己的程式降級運行——有些時候為了更好的安全性,程式可以在適當的時機把自身降低許可權(RPL設成更大的值)。

 

段機制中使用特權級實現自己的保護機制

 

分頁的保護機制:

 

分頁機制中將32位的線性地址分成3個域

目錄項 (高10位)

頁表項(中10位)

位移量(低12位)

 

頁目錄項和頁表項具有相同的結構其中與許可權有關的有:


Read/Write標誌

讀寫特權,如果為0,表示相應頁表或者頁是唯讀,如果為1,則表示可讀寫。

User/Supervisor標誌

和頁表相關的特權級只用兩個,如果該標誌為0,處於核心態時才能定址,如果標誌為1,總能對頁定址。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.