任务的调度

软件或处理器可以用以下方式中的任何一种来调度任务执行:

􀁺 用 CALL 指令显式地调用任务。

􀁺 用 JMP 指令显式地跳转到任务。

􀁺 (由处理器)隐式地调用中断处理程序任务。

􀁺 隐式地调用异常处理程序任务。

􀁺 EFLAGS 寄存器的NT 标志置位时的任务返回(由IRET 指令发出)。

所有这些调度方法都是用指向任务门或任务TSS 的段选择子来识别被调度的任务的。当用CALL 或JMP 指令调度任务时,指令中的选择子可以直接指向TSS,也可以指向包含TSS

选择子的任务门。通过调度任务来处理中断或异常时,相应中断或异常对应的IDT 项必须包含一个任务门,门中含有指向中断或异常处理程序任务的TSS 的选择子。一个任务被调

度执行时,会自动地在当前任务和被调任务之间发生任务切换。切换时,当前任务的执行环境(称做任务状态或场境(context))保存进其TSS 中,该任务随即被挂起。然后,

处理器加载被调任务的场境到各个寄存器中,从刚加载的EIP寄存器指向的指令处开始执行新任务。若该任务是系统上次初始化以来的首次执行,则EIP 指向任务代码的第一条指

令;否则,指向任务上次被挂起时执行的最后一条指令的下一条指令。如果是由当前任务(调用任务)调用了被调度的任务(被调任务)而发生了任务切换,则把调用任务的TSS

的选择子保存到被调任务的TSS 中,以提供返回调用任务的链接

 

 

posted on 2013-02-18 18:52  追寻前人的脚步  阅读(263)  评论(0编辑  收藏  举报

导航