CPL,DPL,RPL 特權級檢查

2021-10-05 03:43:12 字數 1099 閱讀 4345

1、cpl,dpl,rpl都位於**?

rpl:request privilege level,請求特權級,位於段暫存器後兩位

dpl:descriptor privilege level,描述特權級,位於gdt/idt中

cpl: current privilege level,當前特權級,cs.rpl

2、cpl,dpl,rpl的意義?

cpl:表示處理器的當前特權級

dpl:表示受訪者特權等級,可看成是訪問門檻

rpl:其意義在於特權級檢查,保護系統安全

cpl與dpl先pk決定處理器是否有訪問資料/**的許可權,

寫資料前rpl參與檢查,避免對系統造成破壞。

3、cpl與dpl的pk:

按照我的理解,cpl和dpl的pk決定了使用者程式是否具有訪問許可權

(1)對於受訪者為**段來說要求cpl==dpl,只能平級訪問,如果cpl>dpl,則需要借助門結構提公升處理器特權級。

(2)對於受訪者為資料段而言,要求cpl<=dpl,即處理器特權級必須大於等於資料段特權級。

4、rpl?

如果乙個使用者程式需要獲取當前記憶體容量大小,記憶體容量大小儲存在核心資料段中,dpl為0,處理器需要提公升特權級才能讀取存放在自己的段中,因此需要提供乙個資料段選擇子作為呼叫核心例程的引數。

接下來,使用者程式借助門結構進入0特權級,必須滿足cpl<=dpl&&rpl<=dpl的條件,才能將核心資料寫入到使用者提供的緩衝區。

cpl<=dpl:對於資料段,需滿足cpl許可權大於等於dpl

rpl<=dpl:

rpl是使用者提供的選擇子,首先會被壓入3特權級下的棧中,隨後被複製到0特權級下的棧中,隨著一起複製過去的,還有原先的cs和eip,接下來為了防止使用者程式作弊,作業系統會將使用者提供的rpl修改為原先cs中的後兩位,這就保證了提供的rpl與原先的cpl一致,避免可能將核心資料覆蓋的情況

作業系統中的特權級檢查

這裡涉及到的幾個概念 dpl rpl cpl dpl 存在於段描述符中,描述訪問此段的最低特權級,即訪問此段的程序cpl和rpl必須大於等於此段的dpl rpl 存在於段選擇符中的最低兩位,成為請求特權級即程序的請求許可權,這個可以由程式設計師自己設定但是其功能受到cpl的制約 cpl 存在於cs和...

3 2 3節 特權級

原來看第3.2.3節的時候,感覺很難的。為什麼會感覺難呢?因為這一節談到的特權級別關係比較複雜,不容易弄清楚。這次重看一次這一節後,進行了一點小結,這才感覺比較清楚了。這一節的主要內容可以用下面這個 來描述。目標 段 jmp指令 call指令 直接呼叫 通過呼叫門 一致碼段 cpl dpl,不檢查r...

特權級之間的轉換

特權級之間的轉換包括 段之間的轉換和資料段之間的轉換。對於資料段之間的轉換,只檢查選擇子中rpl和段中dpl的值,如果rpl dpl則可以轉換,而對於 段之間的轉換,情況會稍微複雜。段之間特權級的轉換主要通過jmp和call指令實現,jmp和call的運算元可以直接是選擇子,但注意在用call時,要...