1. 程式人生 > >把書上的描述符表格弄了一下供大家參考

把書上的描述符表格弄了一下供大家參考

byte7

byte6

byte5

byte4

byte3

byte2

byte1

byte0

Base (24-31)

 

(16-19)

 

Segment base address (0-23)

Segment limit 1 (0-15)

                 

 

 

 

 

 

 

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

0xf

0xe

0xd

0xc

0xb

0xa

0x9

0x8

0x7

0x6

0x5

0x4

0x3

0x2

0x1

0x0

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

G

D/B

0

AVL

LIMIT2(16-19)

P

DPL

S

TYPE

第6位元組

第5位元組

 

 

 

 

 

 

 

 

15

14

13

12

11

10

9

 

8

7

6

5

4

3

2

1

0

0xf

0xe

0xd

0xc

0xb

0xa

0x9

0x8

0x7

0x6

0x5

0x4

0x3

0x2

0x1

0x0

描述符索引

TI

RPL

 

 

 

 

 

 

描述符型別

Type

資料段和程式碼段描述符

系統段和門描述符

0

只讀

未定義

1

只讀、已訪問

可用286TSS

2

讀、寫

LDT

3

讀、寫、已訪問

忙的286TSS

4

只讀、向下擴充套件

286呼叫門

5

只讀、向下擴充套件、已訪問

任務門

6

讀、寫、向下擴充套件

286中斷門

7

讀、寫、向下擴充套件、已訪問

286陷阱門

8

只執行

未定義

9

只執行、已訪問

可用386TSS

a

執行、讀

未定義

b

執行、讀、已訪問

忙的386TSS

c

只執行、一致程式碼段

386呼叫門

d

只執行、一致程式碼段、已訪問

未定義

e

執行、讀、一致程式碼段

386中斷門

f

執行、讀、一致程式碼段、已訪問

386陷阱門

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

部分術語中英文對照表

英文

中文

Descriptor

描述符

Privilege

特權級

Accessed

已訪問

Conforming code segment

一致程式碼段

Expand-down

向下擴充套件

Granularity

粒度位

Call Gate

呼叫門

Interrupt Gate

中斷門

Trap Gate

陷阱門

Implicit

隱式的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

關於一致程式碼段的解釋:

當轉移的目標是特權級更高的一致程式碼段,當前的特權級會被延續下去,當轉移的目標是特權級更高的非一致程式碼段,會引起通用保護異常(或稱為一般保護異常、常規保護錯誤),除非使用呼叫門或任務門。如果系統程式碼不訪問受保護的資源和某些型別的異常處理(比如,除法錯誤或溢位錯誤),它可以被放在一隻程式碼段中。為避免低特權級的程式訪問被保護起來的系統程式碼則應放在非一致程式碼段中。

要注意的是,如果目的碼的特權級較低的話,無論它是不是一致程式碼段,都不能通過call或者jmp轉移進去,嘗試這樣的轉移會導致通用保護異常。

所有的資料段都是非一致的,這意味著不可能低特權級的程式碼訪問到。然而,與程式碼段不同的是,資料段可以被更高特權級的程式碼訪問到,而不需要特定的門。

 

 

 

一致與非一致

特權級變化

對一致非一致的影響

特權級從低到高

特權級從高到低

相同特權級

適用於何種程式碼

一致程式碼段

不訪問受保護的資源和某些型別的異常處理的系統程式碼

非一致程式碼段

避免低特權級的程式訪問被保護起來的系統程式碼

資料段

(總是非一致)