1、操作系统的基本知识;2、对C语言比较熟悉,最好要有汇编语言的知识和GNUC对标准C的扩充的知识的了解。另外在阅读之前linux 内核代码阅读工具,还应当晓得Linux内核源代码的整体分布情况。我们晓得现代的操作系统通常由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了那些方面。Linux内核源代码的组成如下(假定相对于linux目录):
arch这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init此目录包含核心启动代码。
mm此目录包含了所有的显存管理代码。与具体硬件体系结构相关的显存管理代码坐落archkernel目录下。
net核心的网路部份代码。上面的每位子目录对应于网路的一个方面。
lib此目录包含了核心的库代码。与处理器结构相关库代码被置于arch/*/lib/目录下。
scripts此目录包含用于配置核心的脚本文件。
Documentation此目录是一些文档linux 内核代码阅读工具,起参考作用。
Ipc目录包含了核心进程间的通讯代码。
Kernel内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都置于arch/*/kernel目录下。
Maintainers目录储存了维护人员列表,对当前版本的内核各部份都有谁负责。
Makefile目录第一个Makefile文件。拿来组织内核的各模块,记录了个模块间的互相这间的联系和依托关系qq for linuxqq for linux,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助。