TR寄存器和TSS任务状态段数据结构可以帮助Linux操作系统快速的完成任务切换并保存原有任务的内容,
具体的过程分析如下:
任务状态段TSS
先来看下任务状态段TSS的结构:
如上图所示:整个TSS可分成两类:
> 只读静态字段集(图中灰色部分)
>每次任务切换时处理器将会更新的动态字段集(图中白色部分)
SS0:ESP0用于保存任务在内核态运行的堆栈指针。任务工作在用户态时堆栈指针则保存在SS:ESP寄存器中。
TSS可以位于线性空间的任何位置。TSS与其他段一样,也是使用段描述符来定义的。 TSS的描述符只能放在全局描述符GDT中。注意:在上一篇文章中,全局描述符表里也有局部描述符项。这个在GDT表定义的时候有体现。