-
对Linux系统的理解:
之前学过一些操作系统和数据结构,计算机组成等相关课程,对于linux系统,有了更加深入的理解。
在我看来,linux系统是这样的:硬件上电以后执行汇编代码,之后运行my_kernel,它是linux内核的入口。my_kernel会根据静态创造的0号进程,陷入中断,进入内核态,调用fork复制0号进程成为1号进程,1号进程是所有用户态进程的祖先,然后返回用户态。之后就类似的方法产生许多不同的进程,进程调度时,陷入中断,执行schedule内核函数;进程执行可执行文件时,通过中断来调用execve系统调用,修改eip的值来修改下一条指令入口地址,从而能执行不同的可执行文件。。。就这样周而复始,linux通过不断地中断(系统调用fork来产生新的进程,系统调用execve来执行可执行文件,执行内核函数schedule来完成进程切换等等),来完成我们需要的各种任务。
其中还涉及到了许多寄存器的变化,比如中断现场保存与恢复,进程上下文保存与恢复等等。
当然这个只是一个简单的理解,真正的linux内核实现要比上述复杂的多。
2.学习完《Linux内核分析》课程后最大的收获:
这门课最大的收获就是看到了许多代码。我通过代码更好地理解了之前学习的操作系统,数据结构,计算机组成等知识,尤其是其中的系统调用,中断,寄存器,堆栈,程序装载等概念,知其然而知其所以然,并且融会贯通。
3.学习完《Linux内核分析》课程后最大的遗憾:
最大的遗憾就是没有早点学这门课。这门课课程设置最大的亮点,当然也是难点就在于它的课后作业。
我抱着和其他网课一样,作业就是做几道题那种心态报名参加,没想到作业真的需要投入很大的精力来完成。
因此我没有按照我自己的计划完成课程学习,耽误了一些其他事情,所以最大的遗憾还是能早点学就好了!
还有个小的建议,就是linux内核中最重要的模块孟老师都讲解很透彻,不过linux还有许多地方可以分析,希望后续课程中,老师能够推出linux更多模块的内核分析。
4.博客汇总:
第一周:http://blog.csdn.net/u012587011/article/details/77336571
第二周:http://blog.csdn.net/u012587011/article/details/77389175
http://blog.csdn.net/u012587011/article/details/77453475
第三周:http://blog.csdn.net/u012587011/article/details/77529678
第四周:http://blog.csdn.net/u012587011/article/details/77600077
第五周:http://blog.csdn.net/u012587011/article/details/77648484
第六周:http://blog.csdn.net/u012587011/article/details/77716974
第七周:http://blog.csdn.net/u012587011/article/details/77775159
第八周:http://blog.csdn.net/u012587011/article/details/77823092
张何灿 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000