处理异常后运行哪条指令?

时间:2014-07-09 10:05:11

标签: exception-handling operating-system

我正在阅读关于HW \ SW中断的内容,而且我不清楚:

当正常流程被异常中断时("软件中断"),保存导致中断的指令的地址,然后OS为异常处理程序提供处理它的机会。

我不确定在处理程序完成后处理的是哪条指令:

  • 如果相同"错误"再次运行指令,可能会导致同样的异常。
  • 如果运行下一条指令,我们是否会失去前一条指令的影响(这可能导致"正常"异常,例如页面错误)?

1 个答案:

答案 0 :(得分:1)

再次执行导致故障的指令。这个想法是处理程序应该进行适当的更改,以便指令能够正确执行。

例如,如果某条指令因为尝试访问已分页的虚拟内存而导致页面错误,则操作系统将从后备存储加载该页面,更新页表,然后重新启动该指令。这次它会成功,因为页面在RAM中。

如果处理程序没有修复问题,那么当它重新启动时你会得到另一个中断,并且该过程将重复。