7.3.1 特權(quán)級(jí)
在8086的系統(tǒng)中,由于系統(tǒng)程序和用戶程序是放在一起的,同屬一個(gè)級(jí)別,因此用戶程序運(yùn)行中就有可能破壞系統(tǒng)程序。這是早期80X86CPU一個(gè)重要的缺陷。 自從80286以后,逐步發(fā)展并完善了保護(hù)模式的功能,使系統(tǒng)的特權(quán)級(jí)為四級(jí),如圖7.9所示。

7.3.2 描述符
1 .選擇符 選擇符的格式如圖7.10所示。
2. 段描述符 從80386開始,段描述符均由8個(gè)字節(jié)(64位)構(gòu)成,其格式如圖7.11所示。
由圖711可以看到段描述符的構(gòu)成: ①線性基地址(32位)用來指示某段的起始地址。 ②段限制(20位)用來限制一段的最大長(zhǎng)度。 ③G位用于定義段限制所使用的單位。 ④ D/B位對(duì)于不同類型的段,有不同解釋: 對(duì)于代碼段,D=1為32位操作;D=0為16位操作。 對(duì)于堆棧段,B=1為32位操作;B=0為16位操作。 對(duì)于數(shù)據(jù)段,B=1為32位操作;B=0為兼容80286。 ⑤AVL位為系統(tǒng)軟件所利用。 ⑥訪問權(quán)限各位如圖712所示。
訪問權(quán)限規(guī)定了段描述符所定義段的屬性。 例如,P位規(guī)定該段是否存在;DPL兩位編碼用來規(guī)定特權(quán)級(jí);S=1表示代碼段或?qū)儆跀?shù)據(jù)類段,S=0則表示該描述符為系統(tǒng)描述符;E=1表示代碼段,E=0表示數(shù)據(jù)類段。 ED/C和W/R對(duì)數(shù)據(jù)類段和代碼段具有不同含義: (a)對(duì)于代碼段 C=1為一致性代碼段;C=0表示非一致性代碼段。 R=1表示可讀代碼段;R=0表示只能執(zhí)行不可讀的代碼段。 (b) 對(duì)數(shù)據(jù)類段 ED=0表示偏移值必須小于或等于段限制。 ED=1表示偏移值大于段限制。 W=0表示該段不可寫;W=1表示可寫。 3.系統(tǒng)描述符 系統(tǒng)描述符用于描述系統(tǒng)中的每個(gè)任務(wù)的任務(wù)狀態(tài)段(TSS)的屬性或局部描述符表的屬性。由系統(tǒng)描述符中TYPE字段的編碼來表征該系統(tǒng)描述符是屬于什么描述符的。 (1)系統(tǒng)描述符的格式 系統(tǒng)描述符的格式如圖7.13所示。
系統(tǒng)描述符中,有許多項(xiàng)與前面的段描述符的定義是一樣的,這里不再重復(fù)。 圖7.13中,系統(tǒng)描述符的P位指示系統(tǒng)描述符是否有效:P=1為有效;P=0為無效。DPL利用兩位編碼表示系統(tǒng)描述符的訪問特權(quán)級(jí)0~3。 TYPE的編碼用來表示不同的系統(tǒng)描述符,其中: 0001 表示為可用的80286TSS描述符 0010 表示為局部描述符表LDT的描述符 0011 表示為處于忙狀態(tài)80286TSS描述符 1001 表示為可用TSS描述符
1011 表示處于忙狀態(tài)的TSS描述符 0000 1000 1010 1100 剩余的TYPE類型編碼是留給中斷與異常情況的。
(2)中斷描述符 中斷描述符中,與前相同部分不再說明。

選擇符:中斷響應(yīng)過程中利用選擇符可以得到中斷服務(wù)程序的描述符。由其線性基地址再加上中斷描述符的偏移量,便 可獲得中斷服務(wù)程序的入口地址。
偏移量:為32位,與線性基地址一起決定中斷服務(wù)程序的入口地址。偏移量對(duì)任務(wù)門是無效的。
TYPE的編碼在中斷描述符中的定義如下:
0100 表示為80286調(diào)用門
0101 表示為任務(wù)門
0110 表示為80286調(diào)用門
0111 表示為80286異常門
1100 表示為80386以上調(diào)用門
1110 表示為80386以上中斷門
1110 表示為80386以上異常門
