Linux源代码阅读方法

Linux的源代码是很庞大的,如果没有一个好的方法是很难能够有一个比较高的效率的。所以我首先要写的就是我在阅读linux源代码的时候所采用的方法。希望会对大家有所帮助!


首先,我找了几本分析linux源代码的书。有一本关于linux源代码分析的书是必须的,因为没有人能在第一次阅读linux源代码的时候能够很好的理 解他,甚至有了书籍也不一定能很好的理解他。我找到了《linux源代码完全注释》和《linux源代码情景分析》。其中,《linux源代码完全注释》 是一个对早期的linux内核源代码的分析,而《linux源代码情景分析》是对2。4版的内核源代码进行了分析。实际上很长一段时间我只是在看这两本 书。


接下来,我并没有直接去仔细的去研究这两本书,而是先花了一段时间通读了一遍。这样做的目的就是对linux有一个整体的认识。我在这一步里,大体上了解 了 linux源代码中大多数文件的作用。这样做会对以后的阅读有很大的帮助。如果这一步做不好,你在以后的阅读中会感觉到很大的困难,这种困难可能会使你丧 失阅读下去的信心。因为,你会发现你根本不知道他在讲些什么,即使有书籍的帮助。


然后,我们就可以开始我们的阅读源代码的激动人心的时刻了!但是应该注意的是,我们阅读源代码应该有一个固定的顺序。而不应该翻到那儿看到那儿!一般按照 书上的顺序就可以了。但是很不幸,好像每本书的顺序都是不一样的!这样我们就应该按照我们自己的具体情况来选择一种。我的建议是:如果你的数据结构学的很 好的话,你就先读那些内核数据结构,例如进程控制块等等。但是,如果很不幸数据结构学的不怎么样,甚至根本就是不怎么地,那么就以引导程序开始阅读,以系 统的引导为主线一直读下去。读boot文件夹里的文件,应该注意的是,你应该有一定的汇编语言的知识,不然你很难能真正理解里面的内容。我读这儿的时候就 专门补习的汇编语言的知识。然后是init里面的 main.c文件,这儿是一个汇聚点。这个文件就好像一栋大楼的大厅,我们要从这儿走到这栋楼的个个部分。我们下一步就是按照main中的顺序来阅读整个 linux内核的个个部分,这些部分包括了linux源代码的绝大部分内容。我就是按照后者来阅读的,因为我的数据结构基本上就是白板。很不幸,直到现在 我还没有完全阅读完linux内核早期版本的源代码。也就是说,我对于linux内核源代码的阅读方法的经验就只有这些了。


最后,我还想说的是,如果你有时间的话,可以阅读一下近期的内核版本中的相应的文件,看看有什么变化,这样会加深对linux内核的理解!

读核感悟-Linux内核启动-内核的生成...........................................2 读核感悟-Linux内核启动-从hello world说起...................................3 读核感悟-Linux内核启动-BIOS.................................................5 读核感悟-Linux内核启动-setup辅助程序........................................6 读核感悟-Linux内核启动-内核解压缩...........................................8 读核感悟-Linux内核启动-开启页面映射.........................................9 读核感悟-Linux内核启动-链接脚本............................................11 读核感悟-伪装现场-系统调用参数.............................................13 读核感悟-伪装现场-fork()系统调用...........................................15 读核感悟-伪装现场-内核线程:...............................................17 读核感悟-伪装现场-信号通信.................................................19 读核感悟-kbuild系统-内核模块的编译.........................................22 读核感悟-kbuild系统-编译到内核和编译成模块的区别...........................24 读核感悟-kbuild系统-make bzImage的过程.....................................26 读核感悟-kbuild系统-make menuconfig........................................31 读核感悟-文件系统-用C来实现面向对象........................................32 读核感悟-设计模式-用C来实现虚函数表和多态..................................32 读核感悟-设计模式-用C来实现继承和模板......................................33 读核感悟-设计模式-文件系统和设备的继承和接口...............................34 读核感悟-设计模式-文件系统与抽象工厂.......................................36 读核感悟-阅读源代码技巧-查找定义...........................................37 读核感悟-阅读源代码技巧-变量命名规则.......................................42 读核感悟-内存管理-内核中的页表映射总结.....................................43 读核感悟-健壮的代码-exception table-内核中的刑事档案.......................44 读核感悟-定时器-巧妙的定时器算法...........................................45 读核感悟-内存管理-page fault处理流程.......................................45 读核感悟-文件读写-select实现原理...........................................47 读核感悟-文件读写-poll的实现原理...........................................49 1 功能介绍:.............................................................49 2 关键的结构体:.........................................................49 3 poll的实现.............................................................49 4 性能分析:.............................................................50 读核感悟-文件读写-epoll的实现原理..........................................50 1 功能介绍...............................................................50 2 关键结构体:...........................................................51 3 epoll_create的实现.....................................................53 4 epoll_ctl的实现........................................................53 5 epoll_wait的实现.......................................................54 6 性能分析...............................................................54 读核感悟-同步问题-同步问题概述.............................................55 1 同步问题的产生背景.....................................................55 2 内核态与用户态的区别...................................................55 读核感悟-同步问题-内核态自旋锁的实现.......................................56 1自旋锁的总述............................................................56 2非抢占式的自旋锁........................................................56 3 锁的释放...............................................................57 4 与用户态的自旋锁的比较.................................................57 5 总结...................................................................58 读核感悟-内存管理-free命令详解.............................................58 读核感悟-文件读写-2.6.9内核中的AIO.........................................59 1 AIO概述................................................................59 2 内核态AIO的使用.......................................................61 读核感悟-文件读写-内核态AIO相关结构体......................................61 1 内核态AIO操作相关信息.................................................61 2 AIO上下文:............................................................63 3 AIO ring...............................................................63 4 异步I/O事件的返回信息.................................................64 读核感悟-文件读写-内核态AIO创建和提交操作..................................65 1 AIO上下文的创建-io_setup().............................................65 2 AIO请求的提交:io_submit实现机制......................................66 读核感悟-文件操作-AIO操作的执行............................................66 1.在提交时执行AIO........................................................66 2.在工作队列中执行AIO....................................................66 3.负责AIO执行的核心函数aio_run_iocb.....................................67 4 AIO操作的完成..........................................................67 读核感悟-文件读写-内核态是否支持非direct I/O方式的AIO.....................67
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值