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