《Linux内核分析》学习总结

来源:互联网 发布:直播平台用户数据分析 编辑:程序博客网 时间:2024/06/05 12:34

邹翔宇 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000


通过这门课程的学习,我对于linux的代码有了一个初步的认识。

整个课程分为了八次实验。


第一次实验

https://www.shiyanlou.com/courses/reports/1259851

这次实验主要学习了从汇编角度上来看,函数调用是如何进行的和在函数调用时进程栈的变化。


https://www.shiyanlou.com/courses/reports/1262067

第二次实验模拟了一个时间片轮转的程序。大致搞明白了linux系统中进程切换的过程。


https://www.shiyanlou.com/courses/reports/1262428

第三次实验学习了linux系统启动的过程,从start_kernel开始,逐步找到启动时简历的三个初始进程。


https://www.shiyanlou.com/courses/reports/1264527

第四次实验分别用调用库函数和直接用汇编调用系统调用的方式,调用了一个系统调用,大致了解了系统调用的整个过程。


https://www.shiyanlou.com/courses/reports/1266424

第五次实验学习了系统调用中中断处理的过程,通过读entry代码了解了中断处理中各寄存器的变化。


https://www.shiyanlou.com/courses/reports/1267835

第六次试验学习了linux创建一个新进程的过程,通过读do_fork函数的代码了解了新的进程是如何建立起来的。


https://www.shiyanlou.com/courses/reports/1268977

第七次试验学习了装载一个可执行程序的过程,大致了解了装载程序的过程,通过读execve系统调用的代码了解了新程序装载过程中,对原进程数据结构中关键位置的修改。


https://www.shiyanlou.com/courses/reports/1269949

第八次试验学习了进程切换的过程,读switch_to函数的代码了解了进程切换过程中寄存器的具体变化及其顺序。


课程总结

之前我只是通过操作系统原理课程了解了一些有关操作系统的一些抽象的理论,通过学习这门课程,我对于linux系统有了具体的认识。

课程的主要内容其实就是,代码是如何正确的按照意图被执行的。从普通函数调用,到系统调用,再到创建进程,进程切换,以及程序装载,这基本包括了系统运行中的大部分内容。这些功能其实都离不开保存之前的状态,结束之后再恢复原来的状态,只是它们各自的方式都不同。普通函数调用很简单,利用进程栈就足够了;系统调用要中断,所以就需要保存现场,x86中断也没有自己的栈,就需要用原进程的栈来保存;新建进程就是创建一个新的进程数据结构,然后将原本进程的信息复制一部分,不过原进程和新进程最后返回的时候稍有不同;程序装载就是先新建进程然后将其中相关的寄存器改为将被装载程序的对应的内容;进程切换就是对现场的保存和对esp(决定和弹出写入哪个栈),eip(决定下一条执行谁)这些关键寄存器的修改。

虽然内容不多,但也算是入门了吧,我相信这门课程对于将来自己学习linux会有更多的帮助。


要说课程缺陷的话,大概就是动手写代码的内容太少了吧。

0 0
原创粉丝点击