对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。
另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就可看出,各个目录大致对应了这些方面。Linux内核源代码的组成如下(假设相对于linux目录):
arch 这个子目录包含了此核心源代码所支持的硬件体系结构相关的核心代码。如对于X86平台就是i386。
include 这个目录包括了核心的大多数include文件。另外对于每种支持的体系结构分别有一个子目录。
init 此目录包含核心启动代码。
mm 此目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/-/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
drivers 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
ipc 此目录包含了核心的进程间通讯代码。
modules 此目录包含已建好可动态加载的模块。
fs Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
kernel 主要核心代码。同时与处理器结构相关代码都放在arch/-/kernel目录下。
net 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
lib 此目录包含了核心的库代码。与处理器结构相关库代码被放在arch/-/lib/目录下。
scripts 此目录包含用于配置核心的脚本文件。
Documentation 此目录是一些文档,起参考作用。
直接打出来?????您真有创意……
现在稳定版的Linux内核源码在600万行左右
即便是最初的那个可以稳定运行的v0.11版Linux内核的代码也有2万多行
还不要网址,还直接打出来……
你当Linux操作系统是你平时练手的小程序呢……
想学习源码建议不要直接看最新版的代码,
600万行的代码量相信你不会愿意一行一行的去看……那样能看到你八十岁生日去……
但有挑选的看的话对新手来说不现实,既不知道怎么挑,挑出来也未必能看懂
建议去看Linux
v0.11版的源代码或者Minix的源代码
(Linux和Minix内核结构有所不同,如果是为了学习操作系统对硬件的操作原理,可以学Minix,因为这个系统写出来就是为了给学生们上课学习用的。而如果是为了学习Linux内核原理,那还是看Linux早期版本的源码吧,毕竟和Minix在构造上还是有区别的)
推荐去OldLinux网站看v0.11的源代码
还有一本书:同济大学的赵炯博士写的《Linux内核完全注释》
网上有电子版,也能买大出版的书籍。这本书就是对Linux
v0.11内核代码的完全注释和解析,对于学习Linux内核非常有帮助
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)