保護模式知識(三) (轉)
描述符
前面已經提到,描述符是描述一個段的大小,地址及各種狀態的8個位元組的結構,在時它可以定義它.
如圖2所示,根據描述符所描述的不同,描述符可分為段描述符、段描述符、門描述符三種,而門描述符又可分為門、任務門、中斷門和陷阱門四類。下面將分別介紹各描述符作用及其各位的意義:
一、儲存段描述符
儲存段描述符是描述中的程式碼段和資料段的,這其中也包括堆疊段,在保護下,應該把堆疊段理解為特殊的資料段。
分析儲存段描述符時應該把它分成4個域來理解:
第一個域為描述符的第0至1位元組,該字是段界線的低16位,段界線是描述段的大小共20位,高4位在第六位元組的低4位中;第二個域為描述符的第2至4位元組,這三個位元組是段基址的低24位;第三個域是描述符的第5、6位元組,該字存放的是段的一些屬性;第四個域是最後一個位元組,該位元組存放的是段基址的高8位。下面對屬性字的每一位進行描述:
如圖2所示:
P位說明所描述的段是否存在,P=1表示描述符所描述的段存在於中,P=0表示描述符所描述的段不在記憶體中。
DPL為描述符所描述段的特權級,只有有效特權級EPL大於等於DPL時,才能對段進行訪問。
DT位必有為1以區別於系統段描述符。
TYPE欄位:
位0表示被描述的段是否被訪問過,該位為0表示未被訪問過,為1則表示該段先前已經被訪問過。
位1的定義在於描述符所描述段的型別。當所描述的是程式碼段時,該位指示所描述的程式碼段是否可讀,為1則可讀,為0則不可讀;當所描述的是資料段時,該位指示所描述的資料段是否可寫,為1則可寫,為0則不可寫。
位2的定義也在於描述符所描述段的型別。當所描述的是程式碼段時,該位指示所描述的程式碼段是否是一至程式碼段,為1表示該程式碼段是一至程式碼段,為0表示該程式碼段不是一至程式碼段,即是普通的程式碼段。當所描述的是資料段時,該位指示該段的擴充套件方向,為1時表示該段向低地址擴充套件,為0時表示該段向高地址擴充套件。
位3指示所描述的段型別,為1表示所描述的段是程式碼段,是可以被的,為0表示所描述的段是資料段,是不能被執行的。前面已經說了,在保護模式下應該把堆疊段理解為特殊的資料段,為0時也包括堆疊段。
G位表示段界限的計數單位,該位為0時表示段界限以位元組為單位,為1時表示以4K為單位。這樣計算下來,20位的段界限就可以描述大小為64K或4G的段了,
D位說明描述符所描述的段是32位環境還是16位的環境。該決定了指令所使用的運算元以及地址的預設大小,為1時說明是32位地址和32位運算元,即32位段;為0時說明是16位地址和16位運算元,即是16位段。但這時仍可使用運算元及地址大小字首來改變這種預設設定。該位還決定了系統是使用IP還是EIP,使用SP還是ESP,
二、系統段描述符
系統段描述符是描述兩個特殊的段,它們分別為區域性描述符表LDT段和任務狀態段TSS。
從圖2中可見,系統段描述符與儲存段描述符的區別只在於DT位,DT=1則為儲存段描述符,DT=0則為系統段描述符,兩種描述符就靠此位區分.但系統段描述符的TYPE欄位與儲存段描述符的TYPE卻截然不同.描述如下:
TYPE欄位:
0、1兩位的定義取決於位2。當位2為1時,說明是門描述符,為0時說明是非門描述符。當位2為1時,0、1兩位確定門描述符的型別,因為兩位可有4種狀態,所以正好描述4個描述符,為0時則是呼叫門,為1時則是任務門,為2時則是中斷門,為3時則是陷阱門;當位2為0時,低兩位0位、1位為0時未定義,為1時則是可用的286的TSS,為2時則是LDT,為3時則是忙的286的TSS。
位4為0時,如其它位也為0或低兩位為2或3時則也是未定義,否則該位提示是386還是286描述符,關於段基地址和段界限為何都安排在兩個分開的域中的原因也與此有關,請讀者自己想想!
三、門描述符
從系統段描述符的說明中可以看出門描述符是靠TYPE欄位與系統段描述符區分的,但從圖2中可見門描述符卻與系統段描述符在結構上也不一至,其實這才是區分二者關鍵。門描述符的第四位元組的低4位為雙字計數字段,該欄位是說是在發生特權級變換時,把外層堆疊中的引數複製到內層堆疊中的數量,計數以雙字為單位。關於特權級變換請參閱《保護模式下的特權級檢查》一文.
(待續)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993263/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dataguard三種保護模式模式
- Windows的保護模式 (轉)Windows模式
- 保護模式模式
- 80386保護模式簡介(轉)模式
- 建立 oracle data gurd 以及三種保護模式Oracle模式
- 【等保小知識】等保3.0就是等保三級嗎?
- Data Guard的三種保護模式(摘自官方文件)模式
- 聊聊Dataguard的三種保護模式實驗(上)模式
- 聊聊Dataguard的三種保護模式實驗(下)模式
- DG的保護模式模式
- 真實模式和保護模式模式
- 【DataGuard】Oracle Dataguard三種保護模式特點總結Oracle模式
- 10g Data Guard三種保護模式測試模式
- 【等保知識】報業網路安全等級保護定級參考
- 【等保小知識】等級保護單項測評包括哪些專案?
- 保護模式下的特權級檢查 (轉)模式
- 保護性暫停模式模式
- DataGuard切換保護模式模式
- 保護模式:段機制模式
- 研發知識管理(三)(轉)
- 學會認識vista系統IE保護模式模式
- 【等保小知識】等級保護工作是指等保測評嗎?意思一樣嗎?
- 0gR2最大保護模式DataGuard建立 (轉載)模式
- 【知識分享】伺服器的防護幾種模式伺服器模式
- 保護模式篇——PAE分頁模式
- 維修電腦知識之三 (轉)
- 【等保小知識】等保一級二級三級哪個要求更高?
- 【等保小知識】等保與分保的三大區別彙總分析
- 保護模式篇——總結與提升模式
- 【DG】DG的3種保護模式模式
- 探索Oracle11gR2 之 DataGuard_03 三種保護模式Oracle模式
- 圖解CPU的真實模式與保護模式圖解模式
- 營養與保鍵知識
- 6 Oracle Data Guard Protection Modes 保護模式Oracle模式
- DG學習筆記(7)_保護模式筆記模式
- [自制作業系統] 第07回 認識保護模式之地址對映作業系統模式
- 實用知識:在低溫下拍攝應該如何保護攝像器材
- 零知識證明在隱私保護和身份驗證中的應用