任务状态段和门

       每一个任务(可以理解为进程)都有一个任务状态段TSS,用于保存任务的有关信息,在任务内变换特权级和任务切换时要用到这些信息。

     系统段是为实现存储管理机制所使用的一种特别的段。在80386中,有两种系统段:任务状态段TSS和局部描述附表LDT段(注意:全局描述附表GDT不属于状态段)。不光在高级语言应用或者说用户应用程序编程中用到了数据结构,个人觉得在CPU硬件的支持下,系统编程也是把数据结构发挥的淋漓尽致,甚至CPU硬件支持本身就充分体现了结构化,或者说数据结构。GDT段描述符,LDT段描述符,TSS段描述符,对描述符进行组织的描述附表,门描述符等等都有自己的数据结构,他们运用自己的格式将数据组织起来。

     门描述符。门描述符并不描述某种内存段,而是描述控制转移的入口点。这种描述符好比一个通向另一代码段的门。通过这种门,可实现任务内特权级的变换和任务间的切换。门描述符分为:任务门、调用们、中断门、陷阱门。

     调用门。调用门描述某个子程序的入口。调用门内的选择子必须指向代码段描述符,调用门内的偏移是对应代码段内的偏移。利用段间调用指令CALL,通过调用门可实现任务内从外层特权级变换到内层特权级。

     任务门。任务门指示任务。任务门内的选择子必须指向GDT中的任务状态段TSS描述符,,门中的便宜无意义。任务的入口点保存在TSS中。利用段间转移指令JMP和段间调用指令CALL,通过任务门可以实现任务的切换。

     中断门和陷阱门。中断门和陷阱门描述中断/异常处理程序的入口点。中断门和陷阱门内的选择子必须指向代码段描述符,门内的偏移就是对应代码段的入口偏移。中断门和陷阱门只有在中断描述符表IDT中才有效。

 

 

      任务状态段。TSS在任务切换过程中起着重要作用,通过它实现任务的挂起和恢复。所谓任务切换是指,挂起当前正在执行的任务,恢复另一个任务的执行。在任务切换过程中:1、处理器中各寄存器的当前值自动保存到TR所指定的TSS中;2、下一个任务的TSS的选择子呗装入TR;3、从TR所指定的TSS中取出各寄存器的值送到处理器的各寄存器中。由此可见,通过在TSS中保存任务现场各寄存器状态的完整映像,实现任务的切换。TSS的基本格式有104字节组成,可分为链接字段区、内存堆栈指针区域、地址映射寄存器区域、寄存器保存区域和其他字段等五个区域。

你可能感兴趣的:(任务状态段和门)