Trap和中断的区别是什么?
如果术语对于不同的系统是不同的,那么它们在x86上意味着什么?
Trap和中断的区别是什么?
如果术语对于不同的系统是不同的,那么它们在x86上意味着什么?
当前回答
一般来说,像异常、错误、中止、陷阱和中断这样的术语都是指同样的事情,都被称为“中断”。
来看看Trap和Interrupt的区别:
陷阱:程序员发起并期望将控制转移到一个特殊的处理程序例程。(例如:80x86 INT指令是一个很好的例子)
而
中断(硬件):是基于CPU外部硬件事件的程序控制中断(例如:按键盘上的一个键或计时器上的超时 芯片)
其他回答
我认为陷阱是由当前指令的执行引起的,因此它们被称为同步事件。中断是由处理器中运行的与外部事件相关的独立指令引起的,因此被称为异步中断。
trap是用户进程中的异常。这是由除零或无效内存访问引起的。这也是调用内核例程(系统调用)的常用方法,因为内核例程的优先级高于用户代码。处理是同步的(因此用户代码被挂起,然后继续)。在某种意义上,它们是“活跃的”——大多数时候,代码期望陷阱发生并依赖于这一事实。
中断是由硬件(硬盘、显卡、I/O端口等设备)产生的。它们是异步的(即它们不会发生在用户代码中可预测的位置)或“被动的”,因为中断处理程序必须等待它们最终发生。
你也可以把一个陷阱看作是一种cpu内部中断,因为陷阱处理程序的处理程序看起来像一个中断处理程序(寄存器和堆栈指针被保存,有一个上下文切换,在某些情况下可以继续执行)。
A trap is a software interrupt.If you write a program in which you declare a variable having divide by zero value then it is treated as a trap.Whenever you run this program it will throw same error at the same time.System call is a special version of trap in which a program asks os for its required service. In case of interrupt(a general word for hardware interrupts)like an i/o error,the cpu is interrupted at random time and off course it is not the fault of our programmers.It is the hardware that brings them up.
Interrupts are hardware interrupts, while traps are software-invoked interrupts. Occurrences of hardware interrupts usually disable other hardware interrupts, but this is not true for traps. If you need to disallow hardware interrupts until a trap is served, you need to explicitly clear the interrupt flag. And usually the interrupt flag on the computer affects (hardware) interrupts as opposed to traps. This means that clearing this flag will not prevent traps. Unlike traps, interrupts should preserve the previous state of the CPU.
一般来说,像异常、错误、中止、陷阱和中断这样的术语都是指同样的事情,都被称为“中断”。
来看看Trap和Interrupt的区别:
陷阱:程序员发起并期望将控制转移到一个特殊的处理程序例程。(例如:80x86 INT指令是一个很好的例子)
而
中断(硬件):是基于CPU外部硬件事件的程序控制中断(例如:按键盘上的一个键或计时器上的超时 芯片)