日期:2014-05-16  浏览次数:20860 次

Linux内核之中断

Linux中断有两种,一种是由CPU外部产生,另一种是由CPU执行程序的过程中产生。

?

外部中断(interrupt)完全是异步的,CPU对外部中断的相应完全是被动的,软件可以通过“关中断”指令关闭对中断的相应。

?

由软件产生的中断,是程序中有意产生的,是主动的,同步的。我们称之为陷阱(trap)。

此外还有一种与中断相似的机制叫做异常(exception),一般也是异步的。

?

CPU对这三种不同类型的“中断”的相应过程都是基本一致的。就是执行完当前指令或者在执行当前指令的中途,根据中断源提供的“中断向量”,在内存中找到相应的服务程序入口并调用该服务程序。

?

外部中断的中断向量是由硬件或者软件设置好的,陷阱的向量是在自陷指令中发出的(INT n),而各种异常的向量是由CPU的硬件结构中预先定义好的。

?