Linux内核分析(九)——总结篇

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

一、Linux内核分析目录

1. Linux内核分析(一):计算机工作原理
  本节简述了计算机的工作原理,冯诺依曼架构。
  CPU将内存中的代码和数据读取到自己的寄存器中,再根据一条条命令调用寄存器进行进一步的操作;同时,老师对基础的汇编语言语法进行了讲解。通过程序的汇编级运行分析来表现计算机运行的大致过程。

2. Linux内核分析(二):操作系统如何工作
  第二周则是第一周的延伸,通过mykernel小内核的演示和代码的分析,从宏观调度算法等角度表现操作系统的运行过程及其对各个进程的切换过程,实现了时间片轮转多通道程序的功能。

3.Linux内核分析(三):构造一个简单的Linux系统MenuOS
  通过gdb分析menuOS的启动过程,演示Linux启动前需要加载的各个模块,以及Linux的启动过程和0号进程,1号进程及之后所有进程间的关系。

4. Linux内核分析(四):系统调用,用户态及内核态
  从宏观上介绍了如何通过两种方式实现一个系统调用的。一种是通过系统API函数的方式实现,另外一种通过软中断int0x80来实现,通过软中断实现的时候,我们需要在之前先传入中断入口参数,然后中断时候系统就可以知道要执行哪个服务程序。入口参数就是一些必要的标识和系统执行这个功能必要的输入数据。

5. Linux内核分析(五):系统调用深入分析
  从微观上,即汇编层面上分析系统调用的具体实现形式,以fork系统调用为例分析其实现过程。 system_call是所有系统调用的入口,也是程序由用户态转入内核态执行时无法越过的一个函数,其重要性不言而喻,

6. Linux内核分析(六):进程的描述和进程的创建
  介绍进程的知识及分析其创建过程。通过fork、vfork和clone等API来创建一个子进程,它们在Linux内核中对应的系统调用分别为sys_fork、sys_vfork和sys_clone函数,而这些函数最终都会调用do_fork完成子进程的创建。

7. Linux内核分析(七):可执行程序的装载
  介绍c程序编译链接过程,ELF文件格式,静态编译和动态编译的区别,以及可执行程序的装载过程。通过execve API启动一个新进程,该API又呼叫sys_execve系统调用,负责将新的程序代码和数据替换到新的进程中,打开可执行文件,载入依赖的库文件,申请新的内存空间,最后执行 start_thread(regs, elf_entry, bprm->p) ,设置 new_ip, new_sp ,完成新进程的代码和数据替换,然后返回,接下来就是执行新的进程代码了。
  
8. Linux内核分析(八):Linux进程调度的时机和进程切换
  从Linux内核源码层面介绍linux中进程的切换过程,以及进程上下文的切换和中断上下文切换的关系。其中关键性的代码switch_to的与第二周my_kernel中的my_schedule函数有异曲同工之妙

二、课程收获与不足

   经过了两个月的学习,我对linux系统整体上有了一定的了解。《linux内核分析》是我第一次在网易云课堂上学习课程,授课形式很新颖。孟宁老师精心详细的讲解让我对linux内核有了一个全新的认识。
  在每一次的线上课程以及课后的实验学习过程中,孟宁老师可以说是逐渐帮我拨开了蒙在Linux内核上的一层面纱,从一开始的计算机的工作原理,程序顺序执行到函数调用堆栈的细致分析让我印象深刻,同时也理解了linux的系统的组成,启动过程及各个进程间的关系。明白了进程的创建原理及可执行程序的编译,链接和装载原理。理解了系统调用的概念,原理及实现方法。深入理解了中断和进程切换实现的具体过程及两者之间的关系。
  另外,我觉得老师这门课没有涉及到文件系统linux内核的实在是有点遗憾,如果以后开课的话,希望能将这个模块纳入课程的讲解中。而且在课程中也没有太多阐述存储管理内容和调度算法的内容。如果孟宁老师能够再为我们讲授这些内容,我相信一定是收获匪浅。
  最后,感谢孟宁老师的辛苦付出和网易云课堂提供的平台,为我们呈现了如此精彩的课程。孟宁老师讲课条理清晰,能够高屋建瓴地为我们揭开Linux内核的奥秘,例如老师自己写的mykernel小型内核就让我对进程调度有了一个极为精准的初步认识;同时孟宁老师又十分幽默风趣,遇到比较抽象比较难解释的地方,经常会通过一些生动形象的例子与具体的事物联系起来,就比如说那个舞女的比喻,让大家印象深刻。孟宁老师为我们打开了一个新世界的大门,我们将带着您的教诲在Linux这片天地中探索前行!

你可能感兴趣的:(孟Linux内核分析)