trap和Interrupt有什么区别?
如果不同系统的术语不同,那么它们在 x86 上的含义是什么?
trap 是用户进程中的异常。这是由零除或无效的内存访问引起的。这也是调用内核例程(系统调用)的常用方法,因为它们以比用户代码更高的优先级运行。处理是同步的(因此用户代码被暂停并在之后继续)。从某种意义上说,它们是“活跃的”——大多数时候,代码期望陷阱发生并依赖于这一事实。
Interrupt 是由硬件(如硬盘、显卡、I/O 端口等设备)产生的。这些是异步的(即它们不会发生在用户代码中可预测的位置)或“被动”,因为中断处理程序必须等待它们最终发生。
您还可以将陷阱视为一种 CPU 内部中断,因为陷阱处理程序的处理程序看起来像一个中断处理程序(寄存器和堆栈指针被保存,有一个上下文切换,在某些情况下它停止执行可以恢复) .