日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux kernel 学习笔记(1) --分段分页保护机制

發(fā)布時間:2025/3/21 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux kernel 学习笔记(1) --分段分页保护机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用80x86處理器進(jìn)行尋址時牽涉到三種不同的地址,其關(guān)系如下所示

?

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

???????????????? (分段)???????????????????????????? (分頁)


分段的保護(hù)機(jī)制:

?

一個邏輯地址由兩部分組成:段標(biāo)識符和偏移量。其中偏移量是一個32位長的字段,段標(biāo)識符是一個16位長的字段,稱為段選擇符,含有一個13位的段描述符索引,一個1位的GDT和LDT指示位和一個兩位的請求者特權(quán)級。

請求者特權(quán)級(RPL)是用來指示當(dāng)前CPU的特權(quán)級。0代表最高優(yōu)先級,3代表最低優(yōu)先級,Linux只用0和3,分別稱之為內(nèi)核態(tài)和用戶態(tài)。

?

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

?

段描述符是由8個字節(jié)來表示段的特性,它被保存在全局描述符表(GDT)和局部描述符表(LDT)中,由于段描述符的內(nèi)容較多,在此不一一介紹。關(guān)鍵的有一個兩位表示的描述符特權(quán)級(DPL),主要用于限制對這個段的存取,它表示可以訪問這個段的最小CPU優(yōu)先級。

?

以上三段共提到3個特權(quán)級,分別是RPL、CPL和DPL。是不是有點(diǎn)暈了,不著急,下面說明三個的關(guān)系。

?

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

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


CPL:當(dāng)前特權(quán)級(Current Privilege Level)

是CS?register?里bit?0和bit?1?位組合所得的值.在某一時刻就只有這個值唯一的代表程序的CPL。在Linux系統(tǒng)中代表當(dāng)前處于內(nèi)核態(tài)還是用戶態(tài)。

?

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

RPL保存在選擇子的最低兩位。 RPL 說明的是進(jìn)程對段訪問的請求權(quán)限,意思是當(dāng)前進(jìn)程想要的請求權(quán)限。 RPL 的 值 由程序員自己來自由的設(shè)置,并不一定RPL>=CPL,但是當(dāng)RPL<CPL時,實際起作用的就是CPL了,因為訪問時的特權(quán)檢查是判 斷:EPL=max(RPL,CPL)<=DPL 是否成立,所以RPL可以看成是每次訪問時的附加限制,RPL=0時附加限制最小,RPL=3時附 加限制最大。所以你不要想通過來隨便設(shè)置一個rpl來訪問一個比cpl更內(nèi)層的段。

因為你不可能得到比自己更高的權(quán)限,你申請的權(quán)限一定要比你實際權(quán)限低才能通過CPU的審查,才能對你放行。所以實際上RPL的作用是程序員可以把自己的程序降級運(yùn)行——有些時候為了更好的安全性,程序可以在適當(dāng)?shù)臅r機(jī)把自身降低權(quán)限(RPL設(shè)成更大的值)。

?

段機(jī)制中使用特權(quán)級實現(xiàn)自己的保護(hù)機(jī)制

?

分頁的保護(hù)機(jī)制:

?

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

目錄項 (高10位)

頁表項(中10位)

偏移量(低12位)

?

頁目錄項和頁表項具有相同的結(jié)構(gòu)其中與權(quán)限有關(guān)的有:


Read/Write標(biāo)志

讀寫特權(quán),如果為0,表示相應(yīng)頁表或者頁是只讀的,如果為1,則表示可讀寫。

User/Supervisor標(biāo)志

和頁表相關(guān)的特權(quán)級只用兩個,如果該標(biāo)志為0,處于內(nèi)核態(tài)時才能尋址,如果標(biāo)志為1,總能對頁尋址。

總結(jié)

以上是生活随笔為你收集整理的Linux kernel 学习笔记(1) --分段分页保护机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。