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中指向同一个任务的门描述符。