《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.5 异常处理类中断服务程序挂接
2.5 异常处理类中断服务程序挂接
不论是用户进程还是系统内核都要经常使用中断或遇到很多异常情况需要处理,如CPU在参与运算过程中,可能会遇到除零错误、溢出错误、边界检查错误、缺页错误……免不了需要“异常处理”。中断技术也是广泛使用的,系统调用就是利用中断技术实现的。这些中断、异常都需要具体的服务程序来执行。trap_init()函数将中断、异常处理的服务程序与IDT进行挂接,逐步重建中断服务体系,支持内核、进程在主机中的运算。挂接的具体过程及异常处理类中断服务程序在IDT中所占用的位置如图2-6所示。
执行代码如下:
//代码路径:init/main.c:
void main(void)
{
…
trap_init();
…
}
//代码路径:kernel/traps.c:
void trap_init(vo
