您的位置:首页 > 运维架构 > Linux

Linux内核分析之九——课程总结

2016-05-01 09:39 316 查看
作者:姚开健

原创作品转载请注明出处

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

课程博客文章目录:
Linux内核分析之一——简单C程序的汇编代码工作过程分析
http://blog.csdn.net/hoikinyiu/article/details/50753103
文章介绍了一个简单C程序的汇编代码,把它编译成汇编后,一行行逐步分析它的执行过程,还有它的堆栈变化,可以学习到一个简单程序的汇编执行过程和堆栈变化过程,还有AT&T汇编的基本知识。

Linux内核分析之二——时间片轮转多道程序上下文切换机制之堆栈分析
http://blog.csdn.net/hoikinyiu/article/details/50811817
文章介绍了在一个有时间片轮转的情况下,多道程序进行轮换的上下文切换机制,最关键的地方就是其切换时堆栈的变化,学习如何通过写汇编代码实现堆栈的变化即上下文切换。

Linux内核分析之三——使用gdb跟踪调试内核从start_kernel到init进程启动
http://blog.csdn.net/hoikinyiu/article/details/50855102
文章介绍了内核是如何启动的,以及在启动过程的一系列步骤中哪些步骤比较重要,启动了内核之后,所谓0号进程,1号进程又是什么?

Linux内核分析之四——系统调用的工作机制
http://blog.csdn.net/hoikinyiu/article/details/50937352
文章介绍了系统调用的框架,即系统的调用的三个重要组成部分:应用程序,封装例程,系统调用处理程序这三者的关系。

Linux内核分析之五——分析系统调用(system_call)的执行机制
http://blog.csdn.net/hoikinyiu/article/details/50994023
文章介绍了系统调用处理程序这个部分的详细执行机制,即获取参数,处理程序,然后返回用户态进程的过程。

Linux内核分析之六——进程的描述与进程的创建
http://blog.csdn.net/hoikinyiu/article/details/51042426
文章介绍了如何通过一些数据结构去描述一个进程,即操作系统中进程的属性是什么,这样就可以管理一个个进程,还有介绍了进程的创建过程,即在系统中创建一个进程需要经历哪些步骤,进程如何从无到有。

Linux内核分析之七——Linux内核如何装载和启动一个可执行程序
http://blog.csdn.net/hoikinyiu/article/details/51114172
文章介绍的是Linux内核如何把一个可执行文件变成一个进程,即通过装载可执行文件,并且启动执行这个可执行文件的过程。

Linux内核分析之八——进程调度与进程切换的过程
http://blog.csdn.net/hoikinyiu/article/details/51169699
文章介绍了进程的调度与切换过程,关键的地方在于学习进程如何调度,以及调度时要进行什么工作才能切换进程。

总结与心得:

不知不觉,短暂的课程就结束了。

当时还以为学习这个课程是多么的困难,Linux系统是多么的复杂而难以分析,但经历了这个课程之后,觉得学习起来也不是很难,而Linux内核还是一如既往的复杂。不管如何,课程让我真真切切地了解了如何抓住重点,抓住关键点从而去分析一个系统内核,从而理解一个系统的运行,而不用陷入内核架构中极其繁复的细枝末节中。当然,此次课程也让我真正阅读了Linux内核的代码,虽然只有部分的关键点,但还是对Linux内核有了一个感性的,初步的认识,毕竟自己不是内核级开发者,不需要对内核有详细了解。

学习了此次课程,感觉最大的收获就是对操作系统的理解的方法,以前对操作系统的理解局限于教科书式的抽象概念,而且不知如何去认识一个系统。从此次课程的学习,最大收获就是学习到了认识操作系统的方法,即从关键概念,关键过程的代码实现出发,认识系统的执行过程,给人一种抓住重点就可抓住全局的认识,我相信这种认识方法不仅仅适用于了解操作系统内核这种复杂的大型系统,也适用于阅读其他大型软件的代码,从关键点把握全局。第二个收获就是更进一步地学习到不只是操作系统教科书式的抽象概念理解,例如从教科书中进程概念理解到进程的描述和创建,进程的调度等等实现过程,从中断的处理过程的文字描述到中断处理过程的代码实现等等,所有这些概念都从以前上学时的抽象认知变成了一行行实际的代码,让你既有种内核代码就是这样的成就感,
也有内核代码也不仅仅这样的畏惧感。除了对系统有了进一步的理解之外,在课程中还学习到了许多工具的使用,如gdb,qemu等等。

学习此次课程最大的遗憾莫过于没有动手写代码去实现一个小小的操作系统内核,哪怕只是其中一个模块。还有就是对于课程一些关键的地方理解不是很清晰,还有一些关键概念并没有学习到,虽然自己在看书的过程会慢慢学习到,但这也是一个漫长的孤独的旅程,缺少一个像老师这样的反馈与点拨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: