第7章 多任务(Multitasking)

为了更好的保护好多个任务,80386使用了几种特别的数据结构。但是,并没有使用特别的指令来控制多任务。相反,当遇到转移指令是访问的特别的数据结构时,它用不同的方法来解析控制转移。用来控制多任务的寄存器和数据结构是:

1、 任务状态段(Task state segment)

2、 任务状态段描述符(Task state segment descriptor)

3、 任务寄存器(Task register)

4、 任务门描述符(Task gate descriptor)

有了这些数据结构,80386可以快速的从一个任务切换到另一个任务中去,把原先任务的上下文(context)保存起来,以便以后可以重起该任务。除了任务切换以外,80386还进行以下两个任务管理:

1、 中断和异常可以引起任务切换(如果系统设计需要的话)。处理器不但切换到中断处理程序的任务中,而且当中断处理完后还会自动返回原任务。中断任务可以中断低特权级的任务,无论多少级。

2、 当每一次切换到另一个任务时,80386也会切换到另一个LDT和另一个页目录去。这样,每个任务都有了不同的逻辑地址——线性地址,和线性地址——物理地址的映射了。这是另一个保护的特性,它把任务独立开来,以防止它们之间的相互干涉。