参加操作系统课程。
所以我知道陷阱和异常都可以被视为软件中断......所以它们都是内部的和同步的。
但是我似乎无法弄清楚这两个定义之间的区别。
因此,如果有人不介意解释并举一些例子,我们将不胜感激。
Thanks.
有中断 - 导致 CPU 开始执行表(例如中断向量表)中的代码。
中断可以根据触发中断的原因分为几类:
- 异常——由CPU本身触发
- IRQ - 由外部硬件(例如网卡)触发
- 软件中断 - 由正在运行的代码显式触发
- IPI(处理器间中断)- 由不同的 CPU 触发
异常可以进一步细分为子类别:
- 中止 - 阻止被中断的代码继续执行的事情。这些事情表明存在重大问题 - 例如除数为零、硬件故障等。
- 陷阱 - 不会阻止被中断的代码继续执行的事情。这些可用于调试、虚拟内存管理等。
大多;陷阱和异常之间的区别就像汽车和车辆之间的区别(陷阱是异常的一种,汽车是车辆的一种类型;但有些异常不是陷阱,也有一些车辆不是汽车)。
所以我明白 TRAP 和异常都可以被视为软件中断
这可能是错误的(如果您使用英特尔的术语,这绝对是错误的) - 软件中断是一种中断类型,而不是一种异常类型。一个很好的例子是int3
指令和int 3
80x86 上的指令。这int3
触发断点异常(陷阱)int 3
是一个软件中断(不是陷阱,也不是异常),可能(取决于操作系统)导致一般保护错误(由于违反了相应中断描述符表条目的“描述符特权级别”限制)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)