日期:2014-05-17  浏览次数:21016 次

陷入trap的通俗解释
trap到底是一个什么样的概念一直没有理解,谁能给我一个比较通俗的解释?它和interrupt有什么区别?

------解决方案--------------------
粘过来的————

外部中断,就是我们通常所说的中断(interrupt)。对于执行的系统来说,这种中断发生完全是"异步"的,根本无法预测到此类中断会在什么时候发生。因此,CPU(或者软件)对于此类外部中断完全是"被动"的。不过,软件可以通过关中断的形式来关闭对中断的响应,把它"反映情况"的途径掐断,这样就眼不见心不烦了。

有软件产生的中断则不同,它是由专设的指令,如Intel X86的"INT n",在程序中有意地产生,所以是主动的,"同步"的。只要CPU一执行一条int指令,就知道在开始执行下一条指令之前一定要先进入中断服务程序,这种主动的中断我们称之为"陷阱"。

此外,还有一种与中断相似的机制称之为"异常"(exception),一般也是异步的,多半是由于"不小心"犯了规才发生的。例如,当你在程序中发出一条除法指令div,而除数为零时就会发生一次异常。这多半是由于不小心,而不是故意的,所以这也是被动的。当然,我们的确可以故意除以零,呵呵,这个就有点强词夺理了。

我终结一下,中断和异常有个比较大的共同点就是"不可预知性",所以是被迫的;而陷阱有"有意为之"的含义。其实,这种东西了解即可,做系统编程的时候身边备上一本Intel手册即可。