2013年2月18日

任务的调度

摘要: 软件或处理器可以用以下方式中的任何一种来调度任务执行:􀁺 用 CALL 指令显式地调用任务。􀁺 用 JMP 指令显式地跳转到任务。􀁺 (由处理器)隐式地调用中断处理程序任务。􀁺 隐式地调用异常处理程序任务。􀁺 EFLAGS 寄存器的NT 标志置位时的任务返回(由IRET 指令发出)。所有这些调度方法都是用指向任务门或任务TSS 的段选择子来识别被调度的任务的。当用CALL 或JMP 指令调度任务时,指令中的选择子可以直接指向TSS,也可以指向包含TSS 选择子的任务门。通过调度任务来处理中断或异常时,相应中断或异常对应的IDT 项必须包含一个任务门,门中含有指向中断或异常处理程序任务 阅读全文

posted @ 2013-02-18 18:52 追寻前人的脚步 阅读(270) 评论(0) 推荐(0) 编辑

中断异常的处理

摘要: 当处理器执行一个对异常或中断处理例程的调用时:如果将要执行的处理例程特权级数值较小,就进行栈切换。当栈切换发生时:a.处理程序使用的栈的段选择子和栈指针是从当前运行任务的TSS 中获取的。处理器把被中断例程的栈段选择子和栈指针压入新的栈中。b.处理器随后把EFLAGS 寄存器、CS 寄存器、EIP 寄存器的当前值保存进新栈中c.如果异常同时产生了一个错误码,则把它压入栈中,位于EIP 之后。如果将要执行的处理例程与被中断的例程特权级相同:a.处理器在当前栈中保存当前EFLAGS 寄存器、CS 寄存器和EIP 寄存器的值 b.如果异常的错误码也保存在那里,则把它保存在当前栈的EIP 值之后。 阅读全文

posted @ 2013-02-18 18:02 追寻前人的脚步 阅读(180) 评论(0) 推荐(0) 编辑

导航