11.1 为什么要有任务状态段 TSS
11.1.1 多任务的起源
TSS 是 Task State Segment 的缩写,即任务状态段。
硬件厂商提供的多任务硬件解决方案主要是 LDT 和 TSS。
11.1.3 TSS 的作用
Intel 的建议是给每个任务关联一个任务状态段,这就是 TSS,用它来表示任务。
TSS 是由程序员“提供”的,由 CPU 来维护。
CPU 中有一个专门存储 TSS 信息的寄存器,这就是 TR 寄存器,它始终指向当前正在运行的任务。
TSS 和其它段一样,本质上是一片存储数据的内存区域,Intel 打算用这片内存区域保存任务的最新状态。使用 TSS 描述符来“描述” TSS。
TSS 描述符属于系统段描述符。
TSS 的主要作用就是保存任务的快照,也就是 CPU 执行该任务时,寄存器当时的瞬时值。
除了从中断和调用门返回外,CPU 不允许从高特权级转向低特权级。另外,CPU 在不同特权级下用不同的栈。
Linux 只用到了 0 特权级和 3 特权级,因此只设置 SS0 和 esp0 的值就够了。
TR 寄存器存储 TSS 的起始地址及偏移大小。