Linux硬件中断
Linux 中断和其他操作系统的中断处理一样,要求有硬件和软件的支持。Linux的好处就是可以看到核心处理中断的一举一动,以下对linux的中断机制做详细的分析。
首先对linux中能处理的中断分类:
1.物理硬件设备产生的中断,这些设备与主板上的i8259A中断控制器相连,具体的连接可以找本《计算机组成原理》看看。linux中可以处理的有16个中断号,但这并不意味linux只能处理16个外设中断请求,实际上许多外设是可以共享中断号,这个要求操作系统的软件支持,在后面可以看到linux是如果处理。
2.异常,异常是无法预测的意外。如被0除、缺页:
|
以上摘自i386\kernel\Traps.c-> trap_init()函数片断,trap_init()函数又被操作系统的初始化工作start_kernel()函数调用,从列表中可以看出linux所处理的异常。从上面的注释中可以看到异常3-5,就是中断指令int3,int4,int5可以被所有的进程调用,这三个实际上是调试程序所用到的,所以当然能被你的程序调用。而其他的异常只能被处于特权级0的进程调用,也就是说这些异常只能被内核所处理,道理非常明显,但是实现起来就不是那么直接了。

