TRAP与例外之间的区别

时间:2019-07-03 20:23:10

标签: exception operating-system os-trap

参加操作系统课程。 因此,我知道TRAP和异常都可以视为软件中断...因此它们既是内部的又是同步的。 但是我似乎无法弄清楚这两个定义之间的区别。 因此,如果有人不介意解释和举一些例子,将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:0)

陷阱由程序员使用x86中的Int指令启动。一旦遇到此指令,程序控制就会转移到特殊处理程序例程。 每当发生异常情况时,都会引发异常。例如,除零条件。程序控制权转移到用户定义的异常处理程序。

答案 1 :(得分:0)

存在中断-导致CPU从表(例如n中断向量表)开始执行代码的事物。

可以将中断分为几类,具体取决于触发它们的原因:

  • 异常-由CPU本身触发
  • IRQ-由外部硬件(例如网卡)触发
  • 软件中断-由正在运行的代码明确触发
  • IPI(处理器间中断)-由另一个CPU触发

可以将异常进一步细分为以下子类别:

  • 中止-阻止被中断的代码继续进行的操作。这些是表明存在重大问题的事物-例如除以零,硬件故障等。
  • 陷阱-不会阻止被中断的代码继续进行的事情。这些可用于调试,虚拟内存管理等。

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

  

因此,我了解TRAP和异常都可以视为软件中断

这可能是错误的(如果您使用的是Intel的术语,那肯定是错误的)-软件中断是一种中断,而不是一种异常。一个很好的例子是在80x86上int3指令和int 3指令之间的区别。 int3触发一个断点异常(陷阱),而int 3是一个软件中断(不是陷阱,也不是异常),可能会(取决于操作系统)导致一般的保护错误(由于违反了相应中断描述符表条目的“描述符特权级别”限制。