x386保護模式下的特權級互相跳轉小結

2021-05-27 00:36:02 字數 546 閱讀 3815

特權級別互相跳**

從內-->外  -------使用ret命令/或者retf命令實現長返回。(短返回和長返回是不一樣的,主要是當時入棧時候cs要不要入棧),其實這裡用的是帶特權級變化的長返回進行特權級別跳轉的。

從外-->內--------使用門,但是因為在特別級別之間互相呼叫的時候,涉及到堆疊的切換,所以要使用乙個tss(task-state-segment)

寫**時候大致的框架:

先說利用call selectorgate從pl3**跳入pl0的**需要注意的問題

再說利用retf從pl0到pl3的**的跳轉需要注意的問題(高pl**訪問低pl**就是使用retf來進行的)

在進行特權級轉換後,貌似所有的seg register都被清零,而且cpl為3時候,是不能將dpl為0-2的段的selector賦值給gs(for example),但是反過來,dpl為3的段,可以被cpl為0-2的**段執行將其selector賦值給相應的段暫存器的。(即是說高階別的**段可以使用低階別的段,低級別的確不能使用高階別的段(比如ds段和gs段))。

保護模式特權級概述

在ia32的作業系統中,段被分為了4個特權級,分別為0 3級,有時候我們也叫做ring0 ring3,其中,數值越小特權級越高。如下圖所示 圖中,核心 和資料所在的段的特權級都比較高,一般在ring0,而使用者程式所在的段的特權級較低,一般在ring3。當低特權級的任務試圖在未被允許的情況下訪問高特...

保護模式特權級變換總結

特權級的東西很亂,我決定今天花一點時間好好的整理一下,我一步一步慢慢開始,比較鬱悶的是還不知道理解得正確不正確,先寫著吧 首先,特權級別一共有四個特權級別 0 3 然後呢,數字越小,級別越高。其次,處理器通過cpl,dpl,rpl來進行特權級管理。接下來,我想分為2種模組來總結,之前,我一直沒把特權...

X86保護模式下的記憶體定址

段選擇器 32位彙編中16位段暫存器 cs ds es ss fs gs 中不再存放段基址,而是段描述符在段描述符表中的索引值,d3 d15位是索引值,d0 d1位是優先順序 rpl 用於特權檢查,d2位是描述符表引用指示位ti,ti 0指示從全域性描述表gdt中讀取描述符,ti 1指示從區域性描述...