《Linux内核分析》期终总结
作者:杨舒雯,原创作品转载请注明出处,《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
目录:
1.通过简单的汇编程序谈谈对计算机工作方式的认识
http://www.cnblogs.com/yswysw/p/5210942.html
2.浅析基于mykernel实现的时间片轮转调度代码
http://www.cnblogs.com/yswysw/p/5242408.html
3.初始内核启动
http://www.cnblogs.com/yswysw/p/5258239.html
4.从一个简单的系统调用开始
http://www.cnblogs.com/yswysw/p/5280771.html
5.从内核角度浅析系统调用Linux
http://www.cnblogs.com/yswysw/p/5303777.html
6.Linux内核如何创建一个新进程
http://www.cnblogs.com/yswysw/p/5329994.html
7.浅谈Linux内核对可执行程序的装载、启动
http://www.cnblogs.com/yswysw/p/5352054.html
8.gdb跟踪分析进程调度和进程切换
http://www.cnblogs.com/yswysw/p/5388906.html
1. 对Linux操作系统的理解:
我认为linux系统是这样运行的:
- 首先由0号进程idle创建其子进程1号进程init和2号进程kthreadd,1号进程init是所有用户态进程的祖先,init将会创建新的子进程用来执行用户命令;,2号进程kthreadd是所有内核线程的祖先。
- 在这个过程中,有可能会发生冲突,根据进程优先级的不同,或者该进程是否是I/O密集型进程来决定谁先抢占CPU,这涉及到进程调度策略,并且在这个过程中会发生进程切换。
- 进程切换的具体细节,就涉及到内核堆栈和用户堆栈之间数据保存和交换,即保存进程上下文。
- 进程是依附于程序存在的,这就需要读取文件信息,通过预编译、编译、汇编、链接,生成可执行未见,才能执行。Linux中大部分可执行文件都是ELF格式,通过该格式文件头信息,可以找到程序执行的起点。
2. 收获
- 系统的了解了操作系统内核的相关结构和设计原理,学会了gdb调试与分析内核代码的方法。
- 虽然,学完linux内核分析之后我并不能自己编写一个小型的操作系统,但是我学会了分析内核代码的方法,如何使用gdb调试内核代码,以及在调试的过程中,理解内核代码的具体实现。
3. 学习完《Linux内核分析》课程后您最大的遗憾是什么?
这八周的MOOC学习下来,我觉得只是简单的了解了Linux内核的相关知识,在脑海里形成了大致的框架。但是在实际的操作应用层面上,自己还很缺乏。在学习的过程中,大多数实验只能根据老师的指导来进行,对于内核中其他的东西还没有彻底的了解。
最后,感谢孟老师八周来的幸苦教学!