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

Exception handling 处理异常后运行哪条指令?,exception-handling,operating-system,Exception Handling,Operating System,我正在阅读有关硬件/软件中断的信息,但我不清楚: 当正常流程被异常(“软件中断”)中断时,导致中断的指令地址被保存,然后操作系统给异常处理程序一个处理它的机会 我不确定的一点是在处理程序完成后处理哪条指令: 如果相同的“错误”指令再次运行,可能会导致相同的异常 如果运行下一条指令,我们是否会失去上一条指令的影响(这可能会导致“正常”异常,例如页面错误) 再次执行导致故障的指令。其思想是处理程序应该做出适当的更改,以便指令能够正确执行 例如,如果一条指令由于试图访问已分页的虚拟内存而导致页面错误

我正在阅读有关硬件/软件中断的信息,但我不清楚:

当正常流程被异常(“软件中断”)中断时,导致中断的指令地址被保存,然后操作系统给异常处理程序一个处理它的机会

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

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

再次执行导致故障的指令。其思想是处理程序应该做出适当的更改,以便指令能够正确执行

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


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

区分硬件陷阱和软件中断非常重要。陷阱将导致相同的指令再次执行。如果这再次触发相同的陷阱,那么陷阱处理程序中就有一个bug。