- 论坛徽章:
- 0
|
原帖由 怪怪虎 于 2007-5-6 22:47 发表于 16楼
看了上边两位牛人的讨论,自己有查阅了下资料.下边说下自己对段描述表和段描述符的理解.
对于一个新手个人觉得可以这样思考.
1. 首先确定系统中只有四个段描述表. GDT, LDT,IDT, TSS
2.段描述符有好多种类, ...
1、只有3个描述符表:GDT、LDT 以及 IDT
2、注意:段描述符只是描述符其中的一种,不要以段描述符去概括描述符。
描述符分为:段描述符,包括:代码段描述符(code segment descriptor) 和数据段描述符(data segment descriptor))
系统描述符,包括:LDT 描述符以及 TSS 描述符、门符(gate descriptor)
LDT 和 TSS 以系统描述符的形式存放在 GDT 中,所以必须根据 GDT 得出 LDT 表和 TSS 块,指令 LLDT 用于根据提供的选择子(Selector)在 GDT 中定位 LDT 表。 同样 LTR 用于根据提供的选择子(Selector)在 GDT 中定位 TSS 块。但是注意:使用 LTR 并不是加载 TSS 的唯一方法,在任务门符(Task Gate Descritpor)的 TSS 域 和 TSS 块中的第 0 字节中包含有 TSS 选择子。在任务切换时CPU 自动加载 TSS 块。
门符(Gate descriptor)又可分为:调用门(Call Gate)、中断门(Interrupt Gate)和陷井门(Trap Gate)以及任务门(Task Gate)。都是发生在控制权转移的时候使用。其中最主要的用于权限的转移,如低权限向高权限代码的转移。
门符不是段描述符,它不描述有关段的任何信息。它只是相当于一个指针,指出目标代码的定位。 |
|