任务状态段

任务状态段(Task State Segment, TSS)是x86架构电脑上是一个保存任务信息的数据结构，被操作系统内核用于任务管理。以下信息保存在任务状态段中：

 寄存器状态
 I/O 端口权限
 内层堆栈指针
 先前的 TSS 链接

如 IA-32 手册所指明，以上所有信息应当保存在 TSS 中的指定位置。

数据结构

左图为 x86 平台下任务状态段的数据结构。其中的字段（ field ）有动态（ dynamic field ）和静态（static field ）之分。当切换到另一个任务的时候，CPU 会自动更新 TSS 中的动态字段; 而静态字段一般从这个任务被创建开始都不会改变。

动态字段：

 通用寄存器 （ General-purpose registers ）
 段寄存器 （ Segment selector registers ）
 EFLAGS 寄存器
 EIP 字段
 指向前一个任务（ Previous Task Link ）字段

静态字段：

 LDT 段选择符字段
 CR3 控制寄存器字段
 特权级 0、1、2 栈指针字段
 T （调试标志）字段
 I/O map 起始地址字段

任务切换
以下 4 种情况引起任务切换：
 在当前任务中使用 jmp 或 call 指令使用 GDT 中的 TSS 描述符
 在当前任务中使用 jmp 或 call 指令使用 GDT 中的或者当前任务所属的 LDT 中的任务门描述符 （任务门中有指向 TSS 的 TSS 选择符）
 指向当前 LDT 中的任务门描述符的中断或者异常
 当 EFLAGS 寄存器中的 NT 位被设为 1 时，当前任务执行了 IRET 命令

Category:X86架構