浅评中断、陷阱、异常 (转)
2008-07-30 15:53
183 查看
浅评中断、陷阱、异常
刺猬@http://blog.csdn.net/littlehedgehog
前几天看的一篇好文,从另一个角度介绍了中断(interrupt)、陷阱(traps)、异常(exception)。
外部中断,就是我们通常所说的中断(interrupt)。对于执行的系统来说,这种中断发生完全是"异步"的,根本无法预测到此类中断会在什么时候发生。因此,CPU(或者软件)对于此类外部中断完全是"被动"的。不过,软件可以通过关中断的形式来关闭对中断的响应,把它"反映情况"的途径掐断,这样就眼不见心不烦了。
有软件产生的中断则不同,它是由专设的指令,如Intel X86的"INT n",在程序中有意地产生,所以是主动的,"同步"的。只要CPU一执行一条int指令,就知道在开始执行下一条指令之前一定要先进入中断服务程序,这种主动的中断我们称之为"陷阱"。
此外,还有一种与中断相似的机制称之为"异常"(exception),一般也是异步的,多半是由于"不小心"犯了规才发生的。例如,当你在程序中发出一条除法指令div,而除数为零时就会发生一次异常。这多半是由于不小心,而不是故意的,所以这也是被动的。当然,我们的确可以故意除以零,呵呵,这个就有点强词夺理了。
我终结一下,中断和异常有个比较大的共同点就是"不可预知性",所以是被迫的;而陷阱有"有意为之"的含义。其实,这种东西了解即可,做系统编程的时候身边备上一本Intel手册即可。
刺猬@http://blog.csdn.net/littlehedgehog
前几天看的一篇好文,从另一个角度介绍了中断(interrupt)、陷阱(traps)、异常(exception)。
外部中断,就是我们通常所说的中断(interrupt)。对于执行的系统来说,这种中断发生完全是"异步"的,根本无法预测到此类中断会在什么时候发生。因此,CPU(或者软件)对于此类外部中断完全是"被动"的。不过,软件可以通过关中断的形式来关闭对中断的响应,把它"反映情况"的途径掐断,这样就眼不见心不烦了。
有软件产生的中断则不同,它是由专设的指令,如Intel X86的"INT n",在程序中有意地产生,所以是主动的,"同步"的。只要CPU一执行一条int指令,就知道在开始执行下一条指令之前一定要先进入中断服务程序,这种主动的中断我们称之为"陷阱"。
此外,还有一种与中断相似的机制称之为"异常"(exception),一般也是异步的,多半是由于"不小心"犯了规才发生的。例如,当你在程序中发出一条除法指令div,而除数为零时就会发生一次异常。这多半是由于不小心,而不是故意的,所以这也是被动的。当然,我们的确可以故意除以零,呵呵,这个就有点强词夺理了。
我终结一下,中断和异常有个比较大的共同点就是"不可预知性",所以是被迫的;而陷阱有"有意为之"的含义。其实,这种东西了解即可,做系统编程的时候身边备上一本Intel手册即可。
相关文章推荐
- 囫囵C语言(二):陷阱,中断和异常
- 中断,异常,陷阱
- 异常、中断、陷阱
- 中断和异常,陷阱的区别和联系
- Intel X86中的中断、陷阱和异常
- 计算机的异常控制:中断、陷阱、故障、终止、进程上下文切换、信号
- 陷阱,中断和异常
- 操作系统的中断与异常(陷阱)
- 操作系统—陷阱、中断、异常
- linux系统中关于中断、异常、系统调用、陷阱等概念的解析
- 流水线中断、陷阱和异常
- 计算机的异常控制:中断、陷阱、故障、终止、进程上下文切换、信号
- 一个操作系统的实现(10)-中断和异常的补充说明
- FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
- 《高效编程十八式》(6/13)命名、陷阱与异常
- 《LINUX3.0内核源代码分析》第二章:中断和异常(2)
- ARM异常、中断以及他们的向量表分析
- linux 中断异常:irq event 61 bogus return value ffffffff
- 深入解析Java异常中的陷阱
- 函数指针数组在ARM异常中断处理中的应用