Trap和中断的区别是什么?

如果术语对于不同的系统是不同的,那么它们在x86上意味着什么?


当前回答

一个trap被像程序一样的代码调用,并用于例如调用操作系统例程(通常是同步的)。 中断是由事件调用的(很多时候是硬件,比如网卡接收到数据,或者CPU定时器),并且-顾名思义-中断正常的控制流,因为CPU必须切换到驱动程序来处理事件。

其他回答

一个trap被像程序一样的代码调用,并用于例如调用操作系统例程(通常是同步的)。 中断是由事件调用的(很多时候是硬件,比如网卡接收到数据,或者CPU定时器),并且-顾名思义-中断正常的控制流,因为CPU必须切换到驱动程序来处理事件。

陷阱是一种特殊的中断,通常被称为软件中断。中断是一个更通用的术语,它包括硬件中断(来自硬件设备的中断)和软件中断(来自软件的中断,如陷阱)。

我认为陷阱是由当前指令的执行引起的,因此它们被称为同步事件。中断是由处理器中运行的与外部事件相关的独立指令引起的,因此被称为异步中断。

A Trap can be identified as a transfer of control, which is initiated by the programmer. The term Trap is used interchangeably with the term Exception (which is an automatically occurring software interrupt). But some may argue that a trap is simply a special subroutine call. So they fall in to the category of software-invoked interrupts. For example, in 80×86 machines, a programmer can use the int instruction to initiate a trap. Because a trap is always unconditional the control will always be transferred to the subroutine associated with the trap. The exact instruction, which invokes the routine for handling the trap is easily identified because an explicit instruction is used to specify a trap. Trap Vs Interrupt

一般来说,像异常、错误、中止、陷阱和中断这样的术语都是指同样的事情,都被称为“中断”。

来看看Trap和Interrupt的区别:

陷阱:程序员发起并期望将控制转移到一个特殊的处理程序例程。(例如:80x86 INT指令是一个很好的例子)

中断(硬件):是基于CPU外部硬件事件的程序控制中断(例如:按键盘上的一个键或计时器上的超时 芯片)