Nestor~Rush~

A man is not old until regrets take the place of dreams
“__stack_chk_fail”错误

段选择子与描述符的结构及其含义(一)(转)

nestor posted @ 2011年9月19日 21:51 in os , 1584 阅读

 

 

 

段描述符:代码段描述符、数据段描述符、系统描述符

系统描述符:系统段描述符、门描述符

                     系统段描述符:局部描述符表(LDT)的段描述符、任务状态段(TSS)描述符

                     门描述符:调用门描述符、中断门描述符、陷阱门描述符、任务门描述符。

 

 

部分段限长、基地址被存放在2个或3个位置,将由CPU按照值的高位存放在内存高地址处的规则进行整合。

 

1. 段选择子

 

15...3

2

1...0

索引值

TI

RPL

 

(1) 索引值(index):给出了描述符在GDTLDT中的索引项号;

(2) 表指示标志TI(Table Index)TI=0 描述符在GDT,TI描述符在LDT

(3) 请求特权级RPL(Requested Privilege Level)0123三个特权级。

 

2. 段描述符的一般格式(先高32位,后低32位,下同)

 

31...24

23

22

21

20

19...16

15

14...13

12

11...8

7...0

基地址

G

D/B

保留位

AVL

段限长

P

DPL

S

TYPE

基地址

 

31...16

15...0

基地址

段限长

 

3. 数据段描述符

31...24

23

22

21

20

19...16

15

14...13

12

11...8

7...0

基地址

G

B

0

AVL

段限长

P

DPL

1

0

E

W

A

基地址

 

31...16

15...0

基地址

段限长

 

4. 代码段描述符:

 

31...24

23

22

21

20

19...16

15

14...13

12

11...8

7...0

基地址

G

D

0

AVL

段限长

P

DPL

1

1

C

R

A

基地址

 

31...16

15...0

基地址

段限长

 

5. 系统段描述符

 

31...24

23

22

21

20

19...16

15

14...13

12

11...8

7...0

基地址

G

 

0

 

段限长

P

DPL

0

TYPE

基地址

 

31...16

15...0

基地址

段限长

 

6. 任务状态段TSS描述符

31...24

23

22

21

20

19...16

15

14...13

12

11...8

7...0

基地址

G

0

0(保留)

AVL

段限长

P

DPL

0

1

0

B

1

基地址

 

31...16

15...0

基地址

段限长

 

7. 调用门描述符

31...16

15

14...13

12

11...8

7...5

4...0

段中偏移值

P

DPL

0(S)

1100(TYPE)

000

参数个数

 

31...16

15...0

段选择符

段中偏移值

 

8. 中断门描述符

31...16

15

14...13

12

11...8

7...5

4...0

过程入口点偏移值

P

DPL

 

(TYPE)

 

 

 

31...16

15...0

段选择符

过程入口点偏移值

 

9. 陷阱门描述符

31...16

15

14...13

12

11...8

7...5

4...0

过程入口点偏移值

P

DPL

0(S)

1111(TYPE)

000

 

 

 

10. 任务门描述符

31...16

15

14...13

12

11...8

7...0

 

P

DPL

 

 

 

 

 

31...16

15...0

段选择符

 

 

 

由于发布的文章长度有限制,将各位的含义放入(二)中:

  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter