【Linux 0.12】内核代码——概述
内核代码
位于 linux/kernel 目录下。包含 10 个 C 语言文件,2 个汇编语言文件,以及一个 Makefile 文件。
总体功能
中断处理程序
源文件:asm.s traps.c
asm.s
:实现大部分硬件异常所引起中断的处理过程(调用 traps.c 中的函数),主要涉及对中断 int0~int16的处理。traps.c
:实现了 asm.s 的中断处理过程中调用的 C 函数
在用户进程将控制权交给中断处理程序之前,会保存现场(EFLAGS,CS,EIP),放入进程的内核态栈。如果优先级发生了变化,会额外保存栈信息(SS,ESP)。由于异常引起中断时,还会保存出错码。
系统调用处理相关程序
源文件:sys_call.s fork.c signal.c sys.c exit.c
通过系统调用 int 0x80 实现。其中 eax 保存系统调用号,ebx ecx edx 保存系统调用的参数。
sys_call.s
:类似asm.c
的功能fork.c signal.c
:类似trap.c
的功能sys.c exit
:实现了其它一些sys_xxx()
系统调用函数
其它通用类程序
源文件:schedule.c mktime.c panic.c printk.c vsprintf.c