Linux内核学习总结
张明赫 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
Linux内核的理解
计算机有三大法宝:1.存储程序计算机工作模型(操作系统中最基础的逻辑结构);2.函数调用堆栈(高级语言得以运行的基础);3.中断(多道程序操作系统的基点)。
操作系统也有“两把宝剑":操作系统是靠中断机制实现多道系统的进程管理的,这离不开中断上下文和进程上下文的切换,而这两个要点都离不开堆栈的操作。
而Linux作为一个多进程的操作系统,所以,其他的进程必须等到正在运行的进程空闲CPU后才能运行,这就需要引入中断机制与之配合工作了。当正在运行的进程等待其他的系统资源时,Linux内核将取得CPU的控制权,并将CPU分配给其他正在等待的进程,这就是进程切换。内核中的调度算法决定将CPU分配给哪一个进程。Linux系统有一个进程控制表,一个进程就是其中的一项。进程控制表中的每一项都是一个task_struct结构,在task_struct结构中存储各种低级和高级的信息,包括从一些硬件设备的寄存器拷贝到进程的工作目录的链接点。进程控制表既是一个数组,又是一个双向链表,同时又是一个树,其物理实现是一个包括多个指针的静态数组。系统启动后,内核通常作为某一个进程的代表。一个指向task_struct的全局指针变量current用来记录正在运行的进程。变量current只能由kernel /sched.c中的进程调度改变。
学习内容链接
1.通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
4.使用库函数API和C代码中嵌入汇编代码两种方式使用同一个
学习总结
通过这门课的学习,加深了我对操作系统理论的理解,知道了Linux系统是如何工作的,如何通过代码阅读、调试去跟踪验证Linux系统的运行机制。
Linux作为一个极其成功的操作系统,其内核纷繁复杂、博大精深,无疑是很难学习的,虽然在课程中孟老师化繁为简、抽丝剥茧,我也很努力地学完了本课程所有的视频,跟着老师的指导完成了全部的练习和测验,但也只感觉我是刚刚站在这一知识宝库的大门前,大门刚刚露了一个缝隙,要学习的东西真是太多太多了!
个人觉得,在这门课程中,最重要的是学习方法,即从何处着手学习Linux内核,课程中给了我们很多这方面的提示,例如:如何调试内核,如何看懂内核中的汇编代码,如何分析系统调用,等等。
总之,作为入门,这门课程起到了很好的引导作用;师傅领进门,修行靠自身。所以于我来说,虽然这门课结束了,但Linux内核的学习还有很长的路要走。