Linux内核分析 期中总结
2016-04-24 17:07 KG35 阅读(192) 评论(0) 编辑 收藏 举报期中总结
学习笔记链接
第一周: http://www.cnblogs.com/KG35/p/5224713.html
第二周:http://www.cnblogs.com/KG35/p/5247310.html
第三周:http://www.cnblogs.com/KG35/p/5269204.html
第四周:http://www.cnblogs.com/KG35/p/5297548.html
第五周:http://www.cnblogs.com/KG35/p/5325476.html
第六周:http://www.cnblogs.com/KG35/p/5329850.html
第七周:http://www.cnblogs.com/KG35/p/5358278.html
第八周:http://www.cnblogs.com/KG35/p/5378872.html
第一周老师介绍了计算机的基础架构:冯诺依曼架构,CPU将内存中的代码和数据读取到自己的寄存器中,再根据一条条命令调用寄存器进行进一步的操作;同时,老师对基础的汇编语言语法进行了讲解。第二周则是第一周的延伸,在课上老师讲解了一个基于C和汇编语言的程序,实现了时间片轮转多通道程序的功能,我也亲自体验了一遍上下文保存、切换、代码跳转的具体实现。
第三周,老师带我们分析了linux启动的过程,我们亲眼目睹了第一个进程的创建和idle进程的循环,对操作系统的启动过程有了更深入的了解。
第四和第五周,深入到了系统调用这个linux内核中一个重要的模块里,我们了解了系统调用的“三层皮”(API、中断向量、中断服务程序);通过汇编实现一个系统调用,认识了int 0x80的作用(这应该是我印象最深刻的一句汇编代码,O(∩_∩)O~);通过深入追踪sys_call系统调用的内核代码,我们对系统调用的具体实现有了更为深入的理解。(感谢老师提供的简化汇编代码,大大方便了我分析的工作ORz)
第六、七、八周则是分别分析了Linux内核的三个具体功能模块:进程创建、可执行程序装载、进程上下文切换,尤其注意fork这个比较特殊的系统调用,它具有“一次调用,两次返回”的特点,这是和linux中一般的进程不一样的地方。
在第八周的最后,老师对linux系统的架构和执行过程进行了总结,简单来说,用户态进程位于内存的0~3G空间中, 内核代码则位于内存3G以上的部分,如同大(cang)舞(lao)女(shi)一样任由用户态进程公共地使用。在进程由用户态陷入内核态或者进程间切换之前,都要进行上下文的保存,以便返回时之前的环境。
课程收获与不足
知识性的总结都在前面的学习笔记链接里面了,这里就说说自己在学习这门课程的过程中所领会到的和一些有用没用的收获吧。
经过了八周的学习,我对linux有了总体的了解。《linux内核分析》是我上大学以来第一次在网络上学习课程,授课形式很新颖。孟宁老师精心详细的讲解让我对linux内核有了初步的认识和自己的体会。通过观看视频,对基础知识展开学习。老师布置的作业和实验也非常的有针对性,让我能够通过实际的操作更加熟练的掌握老师所授知识。孟老师在第八周说的‘舞女前来助兴’,我当真信了,结果是关于taxi的一个小话,不禁感受到一丝寒意,但是老师的这种凡是方式比较吸引人的!
在这个过程中,我从一名linux的门外汉,到现在可以大体了解linux的运行机制,安全机制等,可以在实验楼或者自己虚拟机的环境下,验证很多实例,同时加深自己的理解。最后感谢老师的指导与帮助,我会利用学到的知识能不断充实提高自己。
另外,我觉得老师这门课没有讲文件系统这个linux内核的大头实在是有点遗憾,如果以后开课的话,希望能将这个模块纳入课程的讲解中。
谢谢所有同志八周以来的支持与帮助,老师的辛勤付出。拜谢~