日期:2014-05-16 浏览次数:20860 次
Linux中断有两种,一种是由CPU外部产生,另一种是由CPU执行程序的过程中产生。
?
外部中断(interrupt)完全是异步的,CPU对外部中断的相应完全是被动的,软件可以通过“关中断”指令关闭对中断的相应。
?
由软件产生的中断,是程序中有意产生的,是主动的,同步的。我们称之为陷阱(trap)。
此外还有一种与中断相似的机制叫做异常(exception),一般也是异步的。
?
CPU对这三种不同类型的“中断”的相应过程都是基本一致的。就是执行完当前指令或者在执行当前指令的中途,根据中断源提供的“中断向量”,在内存中找到相应的服务程序入口并调用该服务程序。
?
外部中断的中断向量是由硬件或者软件设置好的,陷阱的向量是在自陷指令中发出的(INT n),而各种异常的向量是由CPU的硬件结构中预先定义好的。
?