在我的大学课程中,我们学过可以发生嵌套中断,但不能发生嵌套异常(软件中断),除了页面错误. 也就是说,当从异常处理程序获得异常时,我们将永远不会返回到执行旧的异常处理程序。
我在IBM的网站上读到这实际上是可能的,但我想这只适用于他们的系统,而不一定适用于x86系统。
另外,如果它为真,那么双重和三重错误永远不会返回执行调用它们的处理程序?
在80x86;所有异常都可以嵌套到任意深度
唯一的限制是在尝试启动异常处理程序时引起的异常。
例如;如果CPU试图启动一个页面错误处理程序,但由于它触发了第二个页面错误而无法启动;然后你会得到一个双误。然而;如果CPU成功启动页面错误处理程序,那么页面错误处理程序的代码可以愉快地被第二个页面错误中断。
注意"可以嵌套"并不意味着操作系统支持它;还有一些选项(长模式下的IST机制,保护模式下的TSS门机制),如果被操作系统使用,可以防止操作系统支持嵌套。也;如果操作系统支持嵌套,则通常会限制堆栈大小(例如,您可能嵌套10次,然后导致堆栈溢出)。