网上找的Intel开发者手册中文版好像没有任务管理这一章,机翻了一下,大部分都是摘抄的
4.1. 任务管理概述
-
什么是任务?
任务是处理器可以分派、执行和暂停的一个工作单元。它可以用于执行程序、任务或进程、操作系统服务实用程序、中断或异常处理程序,或内核或执行实用程序。
-
80x86
提供了哪些硬件支持?IA-32 体系结构提供了一种保存任务状态、调度任务进行执行以及从一个任务切换到另一个任务的机制。在受保护模式下操作时,所有处理器执行都从任务内执行。即使是简单的系统,也必须至少定义一个任务。更复杂的系统可以使用处理器的任务管理工具来支持多任务处理应用程序。
-
描述符表中与任务相关的描述符有哪些?
-
任务状态段描述符(TSS描述符):
-
TSS描述符用于指向任务状态段(TSS),其中包含了与任务有关的所有状态信息。每个任务都有一个TSS描述符,CPU可以通过这个描述符来访问任务的TSS,从而进行任务切换。
-
-
任务门描述符(Task Gate Descriptor):
-
任务门描述符用于在发生特定事件(如硬件中断或系统调用)时启动任务切换。通过任务门描述符可以实现从当前任务切换到指定的任务。
-
-
局部描述符表描述符(LDT描述符):
-
每个任务可能有一个对应的局部描述符表(LDT),其中包含该任务特有的段描述符。LDT描述符用于指向该任务的局部描述符表,以便在任务切换时可以正确加载和使用LDT中的段描述符。
-
这些描述符存储在全局描述符表(GDT)中,任务切换时会通过TSS描述符或任务门描述符来加载相应的任务状态段,并进行上下文切换。
-
-
任务切换与过程调用的区别是什么?
任务切换:任务切换是指从一个任务(Task)切换到另一个任务。每个任务都有自己的任务状态段(TSS,Task State Segment),其中保存了该任务的处理器状态,包括寄存器值、堆栈指针、程序计数器等。任务切换通过改变当前任务的TSS和任务描述符表(TSS描述符)来完成,涉及到处理器状态的保存和恢复,属于硬件级别的上下文切换。
过程调用:过程调用只是从当前任务的一个函数跳转到另一个函数,属于软件级别的操作。过程调用会通过堆栈来保存调用方的状态(如寄存器、返回地址等),但不涉及任务状态段(TSS)和任务描述符表的变化。
4.1.1. 任务的结构
-
一个任务由几部分构成?
任务由两部分组成:任务执行空间和任务状态段(TSS)。
-
任务执行空间包括什么?
任务执行空间由一个代码段、一个堆栈段和一个或多个数据段组成(请参见图 7-1)。如果操作系统或执行人员使用处理器的特权级保护机制,则任务执行空间还将为每个特权级别提供一个单独的堆栈。
TSS 指定了构成任务执行空间的数据段,并为任务状态信息提供了一个存储位置。在多任务处理系统中,TSS 还提供了一种连接任务的机制。一个任务由其TSS 的段选择器标识。当任务加载到处理器中进行执行时,TSS 的段选择器、基本地址、限制和段描述符属性将被加载到任务寄存器中
-
为什么会有多个特权级栈空间?
在任务状态段(TSS)中,为每个特权级保存了一个栈指针(ESP0、ESP1、ESP2),这三个栈指针分别用于特权级0、特权级1和特权级2的栈起始地址。当处理器进行特权级切换时,会自动加载对应特权级的栈指针,使得切换后的代码能够安全地使用合适的栈。
4.1.2. 任务状态
-
当前正在执行的任务状态包括哪些内容?
•任务的当前执行空间,由段寄存器(CS、DS、SS、ES、FS 和 GS)中的段选择器定义。
•通用寄存器的状态。
•EFLAGS 寄存器的状态。
•EIP 寄存器的状态。
•控制寄存器 CR3 的状态。
•任务寄存器的状态。
•LDTR 寄存器的