本文对内核中断进行概括以及讲述中断的具体实现方法在内核是怎么做的,会结合内核源码中的一些 .s 文件和 .c 文件来具体分析一下内核在中断中的实现方式。
Linux的中断分为硬件中断和软件中断
汇编文件 | 对应的c文件 |
---|---|
linux/kernel/asm.s | trap.c |
linux/kernel/system_call.s | fork.c signal.c exit.c sys.c |
asm.s 和 system_call.s所做的工作是 ① ② ③ ⑤ ⑥,剩余 .c 文件所做工作是 ④
如图所示:
上图与 linux 源码对应关系如下:
中断前的处理过程,中断后的回复过程 | 中断的执行过程 | |
---|---|---|
硬件中断的处理过程 | linux/kernel/asm.s | traps.c |
软件及系统调用的处理过程 | linux/kernel/system_call.s | fork.c signal.c exit.c sys.c |
这里仅分析asm.s 和 trap.c
中断前的处理过程,中断后的回复过程 | 中断的执行过程 | |
---|---|---|
硬件中断的处理过程 | linux/kernel/asm.s | trap.c |
具体详细内容参考 Linux内核完全注释:基于0.11内核(修正版V3.0).pdf P55~P62 和 P256~P279