Linux内核学习总结

时间:2023-11-26 12:12:02
1.《简单C程序生成的汇编代码分析》
2.《时间片轮转多道程序代码分析》(未完成)
3.《Linux内核启动过程start_kernel分析》
4.《库函数API和C语言汇编语言混合式编程》
5.《system_call中断处理过程分析》
6.《fork函数创建新进程过程分析》
7.《可执行程序的装载过程》(完成大部分)
8.《进程调度时机的跟踪分析》(未完成)
看到这门课即将推出还是在新年,当时就打定主意一定要报这门课,首先是因为这门课讲的内容我很感兴趣。我觉得作为一个软件开发者,应该在熟悉API、业务逻辑和开发工具的前提下,了解开发环境中操作系统的内核运行的机理。其次,在这门课之前我刚好也看过些汇编语言的基础知识,这门课的内容,涉及到汇编语言的部分,刚好可以作为一个比较复杂的实例,加深我对汇编语言的理解。
在这门课的学习过程中,我觉得最大的收获是学到了分析操作系统系统内核的方法,具体有两点:
内核分析必须要结合具体的程序进行分析,由于自己不是科班出身,之前对Linux内核的了解更多是基于书籍,比如《现代操作系统》,看书的时候只能记得概念,对于其具体实现则是一头雾水,看后感觉自己好像了解到操作系统的特点,模块的工作原理,落到实处则一处也无。跟着学这门课,我学会从分析最基本的程序功能与执行流程入手,反证之前学到的理论知识。我觉得这是非常有效的学习方法。手头还买过一本《Linux内核设计与实现》,之前总是翻不下去,不得要领,现在用着调试工具,特别是实验楼提供的linux源码,追踪起来非常方便,也有乐趣。
另外一方面,可能是由于性格使然,对于未知的内容,总是在心底有种紧张感,总是妄图掌握所有的细节。之前并没觉得有多么不妥,但是在学习内核分析的过程中,逐渐发现这种思维的局限所在。首先,精力是有限的,特别是在工作以后,不再有大块的时间可以挥霍,做任何事不得不功利的考虑产出比。过分的抠细节,理解函数的每一行代码,只是让自己感觉踏实,却忽视了函数间的调用关系,执行流程。并且,耗费了大量的时间去理解内核具体实现中一些折衷的办法,炫技般的代码,难以应用,容易过时。这门课对我的最大提示,就是把分析的精力花在20%的关键代码上。目前,我适应地很艰难,但我仍然要去适应。
学习这门课最大的遗憾,就是未能跟上进度。虽然我有记笔记,但是博客不等于笔记。到目前为止,仍有博客没写完,另有几篇是评价的时候还未完成。这里我承认我钻了空子。这是不对的。我这么做,只是希望自己能参与到互评的环节,读到其他人的好文章,学习学习。在这里,再次向受到影响的同学道歉。

By:昆仑雪狐

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000