linux内核学习线路

时间:2021-03-18 15:48:31

现在稀里糊涂的在linux内核驱动中作一年,回头来整理自己所拥有的知识好零碎,现在想统一的学习下,通过网上找,按照下面线路先学学看:

这里总结一下需要的基础知识。按学习顺序:
《汇编语言_第2版》,王爽
《x86汇编-从实模式到保护模式》,余洁。操作系统知识的核心
《C语言XXX》,就不多介绍了,网上一堆
《Orange'S 一个操作系统的实现》,于渊。傻瓜式教程,从0开发一个简易操作系统
《AT&T汇编》,这个内容比较少,只要注意一下语法就行了。linux内核到处用到
学完以上所有,再来看linux内核非常轻松。最后就是下面这本
《Linux内核0.11完全注释》,赵炯


有几个地方需要注意:
1.
网上总有人说内核中汇编用到不多,不用学。这是个极大的误区,在整个内核代码中,汇编代码确实不是很多,但地位极度重要,而且穿插用在很多核心模块,并不只是启动那块才用到汇编。比如说进程切换,从高层到底层的层层流程下来,最终就是汇编的切换进程代码;还有系统调用,也是最终调用的是80中断。例子太多。
而且,汇编讲的不只是汇编代码,还有计算机底层的运行机制,这对于想学操作系统的你来说,简直就是必学课程。比如说计算机刚启动时,内存是什么情况,那些中断代码放在哪里,那操作系统就不能动这里的代码等等。
2.
《x86汇编-从实模式到保护模式》这本书不是讲汇编的,实际上是讲操作系统的书,直接从实模式开始看,实模式是讲以前的操作系统架构,然后就是现代操作系统架构32位保护模式。这本要是不看,就不用往下进行了。
3.
于渊的那本书只看到上篇就好了,因为他的下篇是按照Minix的微内核来实现的,linux是宏内核,两者在代码实现上有很大的不同。但他上篇的内容很有价值,因为讲解得非常详细*都能看懂,而且基本上每章内容都和Linux内核相似。毕竟操作系统的底层基本知识都差不多。看完这本相当于有人带你学习了一遍简易版的linux内核。
4.
AT&T汇编不是讲汇编知识的,而是讲另一种汇编语法的,所以内容比较少,linux内核里大量用到这种语法格式的汇编。分析linux内核用到的时候再看也可以,我就是这样。
5.
最后提一点非常非常重要的,就是每看一本书一定要做笔记。因为操作系统包含大量的知识,用笔记记录每个知识点的核心,能很方便下次翻阅,因为你必定会回头来翻阅的,你不可能记住每个知识点。如果你没有这种习惯,到时候知识一多就会引发混乱,然后导致放弃。


下面是我的学习路线。
1.一些基础知识的笔记我就不贴了
2.一个操作系统的实现笔记—http://www.cnblogs.com/joey-hua/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/


下面是我的linux0.11版内核分析:
1.Linux0.11内核--引导程序分析
http://www.cnblogs.com/joey-hua/p/5528228.html
2.Linux0.11内核--系统调用机制分析
http://www.cnblogs.com/joey-hua/p/5570691.html
3.Linux0.11内核--进程调度分析之1.初始化
http://www.cnblogs.com/joey-hua/p/5596746.html
4.Linux0.11内核--进程调度分析之2.调度
http://www.cnblogs.com/joey-hua/p/5596830.html
5.Linux0.11内核--内存管理之1.初始化
http://www.cnblogs.com/joey-hua/p/5597705.html
6.Linux0.11内核--fork进程分析
http://www.cnblogs.com/joey-hua/p/5597818.html
7.Linux0.11内核--内存管理之2.配合fork
http://www.cnblogs.com/joey-hua/p/5598451.html
8.Linux0.11内核--加载可执行二进制文件之3.exec
http://www.cnblogs.com/joey-hua/p/5638591.html