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時,要...