参加操作系统课程。 所以我知道陷阱和异常都可以被视为软件中断......所以它们都是内部的和同步的。 但是我似乎无法弄清楚这两个定义之间的区别。 因此,如果有人不介意解释并举一些例子,我们将不胜感激。
谢谢。
有中断 - 导致 CPU 开始执行表中的代码(例如 n 中断向量表)。
可以根据触发中断的原因将中断分为几类:
异常可以进一步细分为子类别:
大部分;陷阱和异常之间的区别就像汽车和车辆之间的区别(陷阱是异常的一种,汽车是车辆的一种类型;但有些异常不是陷阱,也有一些车辆不是汽车)。
所以我明白陷阱和异常都可以被视为软件中断
这可能是错误的(如果您使用英特尔的术语,那肯定是错误的)——软件中断是一种中断类型,而不是一种异常类型。一个很好的例子是 80x86 上
int3
指令和 int 3
指令之间的区别。 int3
触发断点异常(陷阱),而 int 3
是软件中断(不是陷阱,也不是异常),可能(取决于操作系统)导致一般保护错误(由于违反了“描述符特权级别”对相应中断描述符表条目的限制)。
陷阱由程序员使用 x86 中的 Int 指令发起。一旦遇到该指令,程序控制就会转移到特殊处理程序例程。 每当出现异常情况时,都会引发异常。例如,除零条件。程序控制转移到用户定义的异常处理程序。
除了上述答案之外,陷阱主要用于用户模式和内核模式之间的受控转换,通常用于系统调用,而异常是由程序执行期间的意外事件或错误触发的,用于处理各种异常情况,包括硬件错误和软件故障。