【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