TRAP和异常的区别

问题描述 投票:0回答:3

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

谢谢。

exception operating-system os-trap
3个回答
12
投票

有中断 - 导致 CPU 开始执行表中的代码(例如 n 中断向量表)。

可以根据触发中断的原因将中断分为几类:

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

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

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

大部分;陷阱和异常之间的区别就像汽车和车辆之间的区别(陷阱是异常的一种,汽车是车辆的一种类型;但有些异常不是陷阱,也有一些车辆不是汽车)。

所以我明白陷阱和异常都可以被视为软件中断

这可能是错误的(如果您使用英特尔的术语,那肯定是错误的)——软件中断是一种中断类型,而不是一种异常类型。一个很好的例子是 80x86 上

int3
指令和
int 3
指令之间的区别。
int3
触发断点异常(陷阱),而
int 3
是软件中断(不是陷阱,也不是异常),可能(取决于操作系统)导致一般保护错误(由于违反了“描述符特权级别”对相应中断描述符表条目的限制)。


0
投票

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


0
投票

除了上述答案之外,陷阱主要用于用户模式和内核模式之间的受控转换,通常用于系统调用,而异常是由程序执行期间的意外事件或错误触发的,用于处理各种异常情况,包括硬件错误和软件故障。

© www.soinside.com 2019 - 2024. All rights reserved.