小编典典

trap和Interrupt有什么区别?

all

trap和Interrupt有什么区别?

如果不同系统的术语不同,那么它们在 x86 上的含义是什么?


阅读 201

收藏
2022-06-29

共1个答案

小编典典

trap
是用户进程中的异常。这是由零除或无效的内存访问引起的。这也是调用内核例程(系统调用)的常用方法,因为它们以比用户代码更高的优先级运行。处理是同步的(因此用户代码被暂停并在之后继续)。从某种意义上说,它们是“活跃的”——大多数时候,代码期望陷阱发生并依赖于这一事实。

Interrupt 是由硬件(如硬盘、显卡、I/O
端口等设备)产生的。这些是异步的(即它们不会发生在用户代码中可预测的位置)或“被动”,因为中断处理程序必须等待它们最终发生。

您还可以将陷阱视为一种 CPU
内部中断,因为陷阱处理程序的处理程序看起来像一个中断处理程序(寄存器和堆栈指针被保存,有一个上下文切换,在某些情况下它停止执行可以恢复) .

2022-06-29