## 7.4 任务门描述符(Task Gate Descriptor)
一个任务门描述符提供了一个间接的、有保护性的对一个TSS的的访问方法。图7-4显示了任务门的格式。
门描述符的选择子(SELECTOR)字段必须要指向一个TSS描述符。在这个选择子内的RPL字段是不被处理器使用的。
门描述符的DPL字段用于控制可以访问该描述符来导致任务切换的特权级。只有当选择子的RPL和子程序的CPL的最大值在数值上小于或等于描述符的DPL,这个特性防止了非受信任代码引起任务切换(注意,当使用任务门时,目标TSS描述符的DPL字段不用来做特权级检测。)
和一个可以访问一个TSS描述符的子程序一样,一个有权访问门描述符的子程序就可以引起任务切换。80386使用门描述符来达到以下三个需要:
1、 使一个任务只有一个忙位。因为忙位(busy-bit)存储在TSS描述符中,每一个任务吸能有一个这样的描述符。也可能有这样的情况,几个任务同时选中同一个TSS描述符。
2、 提供可选的其它方式来访问任务。任务门可以满足这种要求,因为他们可以存放在LDT中,还可以和要访问的TSS有一个不同的DPL字段。一个不能访问GDT中的TSS的程序,也可以通过任务门来通过自已的LDT访问该任务。有了门描述符,系统软件可以把任务切换只限制一定的权限下。
3、 为了让中断和异常可以引发任务切换。任务门可以存放在IDT中,从而允许中断或异常引起任务切换。当IDT中的项包含一个门描述符时,80386处理器切换到指定的任务。以便系统中的所有任务和中断任务分离开来。
图7-5显示了在LDT和IDT中指向同一个任务的门描述符。
![](https://box.kancloud.cn/2016-03-06_56dbfdaf51be8.jpg)
![](https://box.kancloud.cn/2016-03-06_56dbfdae13033.gif)
- 第一章 80386介绍
- 1.1 该手册的组织结构
- 1.2 其他文献
- 第二章 编程基本模型
- 2.1 存储器组织和段
- 2.2 数据类型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作数选择
- 2.6 中断和异常
- 第4章 系统寄存器
- 4.1 系统寄存器 (System Registers)
- 4.2 系统指令 (System Instructions)
- 第五章 内存管理
- 5.1 分段地址转换(Segment Translation)
- 5.2 分页地址转换(Page Translation)
- 5.3 混合分段和分页地址转换(Combining Segment and Page Translation)
- 第六章 内存管理
- 6.1 为什么要保护(Why Protection?)
- 6.2 80386保护机制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段级保护(Segment-Level Protection)
- 6.4 页级保护(Page-Level Protection)
- 6.5 混合分页和分段保护(Combining Page and Segment Protection)
- 第7章 多任务(Multitasking)
- 8.1 I/O 寻址(I/O Addressing)
- 7.1 任务状态段(Task State Segment)
- 7.3 任务寄存器(Task Register)
- 7.4 任务门描述符(Task Gate Descriptor)
- 7.5 任务切换(Task Switching)
- 7.6 任务链(Task Linking)
- 7.7 任务寻址空间(Task Address Space)
- 第8章 输入 输出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保护和I/O(Protection and I/O)
- 第9章 异常和中断(Exceptions and Interrupts)
- 9.1 识别中断(Identifying Interrupts)
- 9.2 允许和禁止中断(Enabling and Disabling Interrupts)
- 9.3 同时发生的中断和异常的优先级(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中断描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中断任务和中断子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出错码(Error Code)
- 9.8 异常条件(Exception Conditions)
- 9.9 异常总结(Exception Summary)
- 9.10 出错码总结(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 复位后处理器状态(Processor State After Reset)
- 10.2 实模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切换到保护模式(Switching to Protected Mode)
- 10.4 保护模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB测试
- 第十四章 80386实地址模式
- 14.1 物理地址构成
- 14.2 寄存器和指令
- 14.3 中断和异常处理
- 14.4 进入和离开实地址模式
- 14.6 实地址模式异常
- 14.7 与8086的不同
- 14.8 与80286实地址模式的不同