linux 0.11 源码学习(一)

linux源码断断续续看过好多次,可能是工作中用到linux的项目也断断续续的,总感觉理解的东西还浮在面上。本系列文章记录对linux 0.11版本源码的学习,主要参考资料是赵炯的《Linux内核完全注释》。记得买这本书的时候还在念研究生,当时是完全看不下去,工作这些年算是粗读过,但都不求甚解,好像每次都有收获,但每次都不敢说理解这1万来行代码。今年抽年前这一两周又通读了一遍,这篇文章就作为一个引子,等春节回来好好精读一把整理出一批文章,算是伤其十指不如断其一指吧。

linux 0.11版本相对于现在的2.6版本的内核(就是那本经典的《深入理解linux内核》)而言,真简单很多了,从功能块和核心文件看主要分解如下(待完善):

 

备注:在上面这些模块中,我觉得比较复杂是系统调用execuve(把一个执行文件加载到内核),因为跨的模块(内存管理、文件系统、块设备驱动)比较多,又涉及到了保护模式的分段分页,先记录如下:

linux 0.11是通过加载XX.out的执行文件产生新的进程。linuxexec.c的do_execuve中加载执行文件,但此时该执行文件并没有被加载到主存,只是分配了虚拟地址空间(即创建了页表)。当CPU执行该进程时,会产生缺页错误中断,此时内存管理模块的do_no_page会被调用,在这个函数中调用块设备驱动的函数II_rw_blk()将相应的执行文件块拷贝到主存。

 

 

 

posted @ 2013-02-03 20:33  Fredric_2013  阅读(5202)  评论(0编辑  收藏  举报