Ale*_*lex 15 kernel linux-kernel
两者之间有什么重大区别吗?是否可以在一个而不是另一个中完成任何事情?修改例如页面错误处理程序而不是计时器处理程序时是否需要更加小心?
Gya*_*pta 22
中断是异步事件,通常由与处理器指令执行不同步的硬件(Ex,I/O)生成.异常是处理器在执行指令时检测到任何预定义条件时生成的同步事件.
中断处理程序可能被另一个中断处理程序等中断.中断处理程序可以推迟异常处理程序,但异常处理程序永远不会推迟中断处理程序.内核模式中唯一可能的例外是页面错误.
中断处理程序从不执行可能导致页面错误的操作,从而可能进行调度.如果它们引起页面错误,意味着它是一个错误.
在编写/修改中断处理程序时需要注意
小智 8
中断和异常都会改变程序流程。两者之间的区别在于,中断用于处理外部事件(串行端口,键盘),而异常用于处理指令错误(除以零,未定义的操作码)。
在完成当前指令后,处理器将处理中断。如果在其中断引脚上找到信号,它将在中断表中查找中断处理程序的地址并通过该例程控制。从中断处理程序例程返回后,它将在被中断的指令之后的指令处恢复程序执行。
另一方面,异常分为三种。这些是错误,陷阱和中止。在发出故障指示之前,处理器会检测到故障并进行维修。在导致陷阱的说明之后对陷阱进行维修。用户定义的中断属于此类,可以说是陷阱。例如,这包括MS-DOS INT 21h软件中断。中止仅用于在无法再运行时发出严重的系统问题信号。
请访问以下网址进行研究:https://www.allinterview.com/showanswers/14289/distinguish-between-interrupts-and-exceptions.html