陷阱和异常之间的差异



参加操作系统课程。因此,我了解陷阱和异常都可以视为软件中断……因此它们既内部又同步。但是,我似乎无法弄清两个定义之间的区别。因此,如果有人不介意解释并举例说明,这将是高度赞赏的。

谢谢。

有中断 - 导致CPU从表启动代码执行代码的事物(ae.g。n Interrupt向量表(。

中断可以根据触发的内容分为类别:

  • 例外 - 由CPU本身触发
  • IRQS-由外部硬件触发(例如网络卡(
  • 软件中断 - 由运行的代码明确触发
  • IPI(处理间中断( - 由其他CPU触发
  • 触发

例外可以进一步分为子类别:

  • 中止 - 防止中断代码继续进行的事情。这些是指一个主要问题的事情 - 例如零,硬件故障等
  • 陷阱 - 无法阻止中断代码继续进行的事情。这些可用于调试,虚拟内存管理等。

主要是;陷阱和例外之间的差异就像是汽车和车辆之间的差异(陷阱是一种例外,汽车是一种类型的车;但是有一个例外不是陷阱,有些车辆有些车辆不是汽车(。

所以我已经理解陷阱和例外都可以视为软件中断

这可能是错误的(如果您使用英特尔的术语,绝对是错误的( - 软件中断是一种中断,而不是一种例外。一个很好的例子是int3指令与80x86上的int 3指令之间的区别。int3触发断点异常(陷阱(,而int 3是软件中断(不是陷阱,而不是异常(,可能会导致一般保护故障(由于违反了"描述符级别"("对相应的中断描述符表的限制(。

陷阱由程序员使用x86中的指令INT启动。一旦遇到此说明,程序控件就会转移到特殊处理程序例程中。每当发生异常情况时,会增加例外。例如,划分为零。程序控件转移到用户定义的异常处理程序中。

最新更新