中断和异常上下文有什么区别?

时间:2011-09-03 21:19:57

标签: linux-kernel kernel

两者之间有什么重大差异吗?是否可以在一个而不是另一个中完成任何事情?修改例如页面错误处理程序而不是计时器处理程序时是否需要更加小心?

2 个答案:

答案 0 :(得分:19)

中断是异步事件,通常由与处理器指令执行不同步的硬件(Ex,I / O)生成。异常是处理器在执行指令时检测到任何预定义条件时生成的同步事件。

中断处理程序可能被另一个中断处理程序等中断。中断处理程序可以推迟异常处理程序,但异常处理程序永远不会推迟中断处理程序。内核模式中唯一可能的例外是页面错误。

中断处理程序从不执行可能导致页面错误的操作,从而可能进行调度。如果它们引起页面错误,意味着它是一个错误。

在编写/修改中断处理程序时需要注意

答案 1 :(得分:6)

中断和异常都会改变程序流程。该 区别 两者之间是中断用于处理 外部事件 (串口,键盘)和异常用于处理 指令 故障,(除以零,未定义的操作码)。

处理器在完成后处理中断 当前 指令。如果在其中断引脚上发现信号,则为 会抬头看 中断表中的中断处理程序的地址 并通过 那个例行的控制。从中断返回后 处理器 例程,它将恢复程序执行 之后的指导 中断的指示。

另一方面,例外情况分为三种。 这些是 错误,陷阱和中止。检测并维修故障 通过 处理器之前的错误指令。陷阱是 服务后 导致陷阱的指令。用户定义的中断 进入这个 类别,可以说是陷阱;这包括MS- DOS INT 21h 例如,软件中断。中止仅用于 信号严重 系统问题,当无法再进行操作时。

研究:https://www.allinterview.com/showanswers/14289/distinguish-between-interrupts-and-exceptions.html