保護(hù)模式(Protected Mode):是一種80286系列和之后的x86兼容cpu的運行模式。保護(hù)模式有一些新特性,如內(nèi)存保護(hù)、標(biāo)簽頁系統(tǒng)及虛擬內(nèi)存?,F(xiàn)在的大多數(shù)x86操作系統(tǒng)都在保護(hù)模式下運行。
下面先給出保護(hù)模式下尋址的整體框架:
286CPU在保護(hù)模式下的尋址
選擇符(Selctor)
- 存放在段寄存器中
- 用于選擇某個描述符表(Descriptor Table)中的描述符(Descriptor)
格式:

選擇符
- INDEX指示描述符在描述符表中的位置。
- TI定義描述符表。置1指示描述符在當(dāng)前局部描述符表LDT中,置0指示描述符在全局描述符表GDT中。
- RPL指示請求特權(quán)級0~3.
描述符(Descriptor)
- 詳細(xì)定義一個段的起始地址、界限、屬性等內(nèi)容。
- 包括32位段基址、20位段界限以及12位的其他附屬標(biāo)志。
- x86存儲管理硬件管理64T虛擬地址空間分段的基本單位。
- 多個描述符構(gòu)成描述符表。
分類:

描述符分類
格式:

程序段描述符
- 基地址(32位):指示段基址,允許段在其4G字節(jié)存儲器的任何單元開始。
- 段界限:指示該存儲段的最大偏移地址。1MB或1MB*4K
- G:段界限長度標(biāo)志。置1表示界限長度以4K為單位,段長[4K,4G].置0表示界限以字節(jié)為單位,段長[1,1M].
- D:指令模式標(biāo)志。置1,32位指令模式。置0,64位指令模式。
- AV:段有效標(biāo)志。置1,指示段有效。置0,指示段無效。
- P:選擇符有效指示位。置1,表示選擇符定義的段在存儲器中存在。
- DPL:設(shè)置描述符特權(quán)級0~3.0最高,3最低。一個任務(wù)可以訪問相同或低特權(quán)級的數(shù)據(jù)段,可以調(diào)用相同特權(quán)級的程序,可以經(jīng)過門間接訪問更高特權(quán)級的段。
- DT:定義描述符類型。置1,表示程序段(數(shù)據(jù)或代碼段)描述符。置0,系統(tǒng)描述符或門描述符。

位說明

位功能組合

系統(tǒng)段描述符

門描述符
段描述符高速緩沖寄存器
在保護(hù)模式下,32位微處理器為每個段寄存器(CS、DS、ES、SS...)以及部分系統(tǒng)地址寄存器(TR、LDTR)都配備了一個描述符高速緩沖寄存器。
每當(dāng)把一個選擇符裝入一個段寄存器時,微處理器自動從描述符表取出相應(yīng)的描述符,裝入對應(yīng)的描述符高速緩沖寄存器中,以后再對該段訪問時直接從描述符高速緩沖寄存器中取。
描述符表(Descriptor Table)
把描述符組織成線性表,叫做描述符表。
其在內(nèi)存中的位置(32位)和大小(16位)由系統(tǒng)地址寄存器(GDTR、LDTR、IDTR)指示。
分類:
- 全局描述符表GDT
- 局部描述符表LDT
- 中斷描述符表IDT
由于描述符表界限用16為表示,故表長最大64K字節(jié),每個描述符占8個字節(jié),所以全局描述符表和局部描述符表最多存放8K個描述符,中斷描述符最多存放256個中斷描述符。
全局描述符表GDT
- 整個系統(tǒng)只有一個
- (公共的)每個任務(wù)都可能或可以訪問的段描述符
- (自己的)各個任務(wù)的TSS段描述符、LDT所在的段描述符、各種調(diào)用門、任務(wù)門描述符。
- GDTR存儲其位置

局部描述符表LDT
- 描述局部存儲器地址空間
- 每個任務(wù)都有自己獨立的局部描述符表
- 包括自己的代碼段、數(shù)據(jù)段、堆棧段描述符,以及該任務(wù)使用的門描述符。
- 位置由LDTR間接說明
中斷描述符表IDT
- 包含中斷門、陷阱門和任務(wù)門描述符
- 門描述符提供中斷服務(wù)程序的起始地址及屬性。
- 整個系統(tǒng)只有一個


任務(wù)狀態(tài)段
包含任務(wù)所必須的信息,如訪問某個寄存器狀態(tài)的初始值。
任務(wù)切換過程中實現(xiàn)任務(wù)的掛起和恢復(fù)。
格式:

尋址:

