5、中断和异常处理程序的嵌套执行
一个中断处理程序可以抢占其他的中断处理程序,也可以抢占异常处理程序。相反,异常处理程序从不抢占中断处理程序。在内核态能触发的唯一异常就是刚刚描述的缺页异常。
6、初始化中断描述符
(1)中断门、陷阱门及系统门:中断门、系统门、系统中断门、陷阱门和任务门。
(2)IDT的初始化操作:先由BIOS进行初始化,全部设置成ignore_int(),之后由内核再一次进行初始化,设置成相应的处理函数。
7、异常处理:
(1)两种情况下Linux利用CPU异常更为有效的管理硬件资源:保存和加载FPU、MMX及XMM寄存器和缺页异常。
8、中断处理
(1)I/O中断处理:所有的I/O中断处理程序都执行四个相同的基本操作:
1)在内核中保存IPQ的值和寄存器的内容
2)为正在给IRQ线服务的PIC发送一个应答,这将允许PIC进一步发出中断。
3)执行共享这个IRQ的所有设备的中断服务例程。
4)跳到ret_from_intr()的地址后终止。
9、软中断和tasklet
(1)软中断可以并发的运行在多个CPU上。因此,软中断是可重入函数而且必须明确地使用自旋锁保护其数据结构。而tasklet与之相反。
一般而言,在可延迟函数上可以执行四种操作:初始化、激活、屏蔽和执行。
10、软中断
(1)tasklet
(2)工作队列
11、从中断中返回
(1)当中断或异常处理完毕时,会分别从ret_from_intr()或ret_from_exception()返回。