《Linux内核分析》课程总结
朱宇轲 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
不知不觉,在网易云课堂上追了两个多月的课程《Linux内核分析》就要告一段落了。在课程即将结束的时刻,我想将这八周的课程串起来,进行一个简单的总结,同时讲一讲自己上这门课的感悟和体会,以期再接再厉,继往开来。
每一周的视频,我都认真看过,并完成了测验,撰写了相关的博客,下面首先进行简单的回顾和总结:
第一周老师介绍了计算机的基础架构:冯诺依曼架构,CPU将内存中的代码和数据读取到自己的寄存器中,再根据一条条命令调用寄存器进行进一步的操作;同时,老师对基础的汇编语言语法进行了讲解。第二周则是第一周的延伸,在课上老师讲解了一个基于C和汇编语言的程序,实现了时间片轮转多通道程序的功能,我也亲自体验了一遍上下文保存、切换、代码跳转的具体实现。
第三周,老师带我们分析了linux启动的过程,我们亲眼目睹了第一个进程的创建和idle进程的循环,对操作系统的启动过程有了更深入的了解。
第四和第五周,深入到了系统调用这个linux内核中一个重要的模块里,我们了解了系统调用的“三层皮”(API、中断向量、中断服务程序);通过汇编实现一个系统调用,认识了int 0x80的作用(这应该是我印象最深刻的一句汇编代码,O(∩_∩)O哈哈~);通过深入追踪sys_call系统调用的内核代码,我们对系统调用的具体实现有了更为深入的理解。(感谢老师提供的简化汇编代码,大大方便了我分析的工作ORz)
第六、七、八周则是分别分析了Linux内核的三个具体功能模块:进程创建、可执行程序装载、进程上下文切换,尤其注意fork这个比较特殊的系统调用,它具有“一次调用,两次返回”的特点,这是和linux中一般的进程不一样的地方。
在第八周的最后,老师对linux系统的架构和执行过程进行了总结,简单来说,用户态进程位于内存的0~3G空间中, 内核代码则位于内存3G以上的部分,如同大(cang)舞(lao)女(shi)一样任由用户态进程公共地使用。在进程由用户态陷入内核态或者进程间切换之前,都要进行上下文的保存,以便返回时回复之前的环境。
linux系统架构镇楼

/*---------------------------------------------我是萌萌的分割线,咿呀咿呀呦-----------------------------------------*/
我是一名西电大四的学生,如今已经保送浙江大学CAD实验室,即将开始自己的研究生生涯。本科期间,我们也上过操作系统之类的课程,但课上老师对操作系统的讲解偏于理论,很少涉及操作系统具体的实现,以至于我一直对操作系统的实现细节一头雾水。而通过学习这门课,我一方面复习了本科时所学习的操作系统概念,更重要的是,通过分析linux系统的内核代码,我初窥操作系统内核编程的门径,对操作系统各种功能的具体实现,如进程创建、切换、操作系统启动都有了更为深入的认识和理解,这就是我上这门课最大的收获。
上完这门课之后,我想重新捧起本科时操作系统课程的教科书《现代操作系统》,认真地再看一遍书中后面探讨各种操作系统实现细节的章节(我们本科时只讲了理论部分,后面没讲);有机会的话,希望深入钻研操作系统架构,参考《三十天自制操作系统》、《Orange S:一个操作系统的实现》等书自己实现一个小型的操作系统,毕竟操作系统的知识对于以后的上研、工作还是很有帮助的。
说起遗憾,主要是这门课开设期间正好也是我本科毕业设计时间,我每天忙于毕业设计,晚上10点多从实验室回到宿舍后才能开始课程的学习,很多时候包括做作业都搞得比较仓促,有一次甚至忘了提交作业(TAT),感觉自己对课上老师讲解的知识点还是有待进一步消化。课程已经结束,自己研究生阶段会继续关注这一领域,不断提升自己在这一方面的专业技能。
另外,我觉得老师这门课没有讲文件系统这个linux内核的大头实在是有点遗憾,如果以后开课的话,希望能将这个模块纳入课程的讲解中。
这就是我在这门课期间的总结,感谢网易云课堂和孟宁老师提供了这个学习的机会,也祝云课堂平台越办越好,孟老师家庭生活幸福美满,事业步步高升!
路漫漫其修远兮,吾将上下而求索!
《Linux内核分析》课程总结的更多相关文章
- java程序设计课程实验报告3
北京电子科技学院(BESTI) 实 验 报 告 课程:java程序设计 班级:1353 姓名:陈都 学号:20135328 成绩: 指导教师:娄 ...
- java程序设计课程实验报告1
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:陈都 学号:20135328 成绩: 指导 ...
- 20145206邹京儒《Java程序设计》课程总结
20145206邹京儒<Java程序设计>课程总结 (按顺序)每周读书笔记链接汇总 第一周:http://www.cnblogs.com/ZouJR/p/5213572.html http ...
- 20165301 2017-2018-2《Java程序设计》课程总结
20165301 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期待的师生关系 预备作业2:学习基础与c语言学习心得 预备作业3: Linux安装及命 ...
- 《Java程序设计》终极不改版
半年前的作品,上传只为纪念~ 成绩: ____0.1______ Java程序设计 课程设计 题 目:大学生信息管理系统 学 院: 计算机与软件学院 专 业: 网络工程_____ . ...
- java期末课程总结
期末课程总结 转眼间,这个学期就要过去了,我们Java的学习也接近了尾声,回想到这个学期刚开始接触到Java的时候,感觉什么都不懂,但现在似乎有了门路,不会载懵懵懂懂, 虽然本学期面向对象与Java程 ...
- Java期末课程学习汇总。
本学期面向对象与Java程序设计课程已经结束了,给自己学习来个总结. 本学期过的非常快,不得不说这一学期学到的东西很少,感觉自己的进步很小. 而且感觉自己总少了点什么,在写这篇总结前,我认真想了,很多 ...
- 《Java程序设计》 课程教学
<Java程序设计> 课程教学 给学生 考核方式 100分构成 翻转课堂考核12次(5*12 = 60):每次考试20-30道题目,考试成绩规格化成5分(比如总分20分就除以4) 注意:不 ...
- 2016-2017-2 《Java程序设计》课程学生博客和代码托管链接
2016-2017-2 <Java程序设计>课程学生博客和代码托管链接 博客 1552 20155201 李卓雯 20155202 张 旭 20155203 杜可欣 20155204 王 ...
- # 2015-2016-2 《Java程序设计》课程总结
2015-2016-2 <Java程序设计>课程总结
随机推荐
- js浏览器检测
1.判断浏览器类型 if navigator.userAgent.indexOf(”MSIE”)>0) {} //判断是否IE浏览器 if(isFirefox=navigator.userAge ...
- adb error: device not found
我的adt无法调试一个平板,我的手机却能调试,百度了好多次,折腾了两个周,换了几个版本的adt,都不成. 就在刚才,我在设备管理器找到那个设备Samsung xxx,点更新驱动,自动搜索,那个设备就变 ...
- sourceTree 更新svn提示can't locate SVN/Core.pm
装了sourceTree一直没有怎么用,今天试着用用,居然报错 can't locate SVN/Core.pm 详细报错如下: Can't locate SVN/Core.pm in @INC (y ...
- autotools工具使用记录
参考 http://blog.chinaunix.net/uid-25100840-id-271131.html http://blog.sina.com.cn/s/blog_4c2bf01a0101 ...
- php中json_encode UTF-8中文乱码问题
最近在接口代码当中用到过json_encode,在网上找到说json_encode编码设置为UTF-8中文就不会乱码,经验证这办法确实是有效果的,但是不知道为什么,代码在用过一段时间之后就不太管用了. ...
- Different types of keystore in Java Overview
Different types of keystore in Java JKS DKS JCEKS PKCS12 PKCS11 http://www.pixelstech.net/article/14 ...
- Logistic回归小结
1.梯度上升优化 1). 伪代码: 所有回归系数初始化为1-------------------weights = ones((colNum,1)) 重复r次: 计算整个数据集的梯度gradient ...
- Android应用增加计时器
昨天写的Sudoku游戏需要增加计时器功能,使用Chronometer实现如下,由于Chronometer自己在调用stop之后后台的计时器还会继续增加,所以暂停功能需要额外实现: 在StartAct ...
- 【LeetCode】Binary Tree Preorder Traversal
Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' valu ...
- 从零开始学习Node.js例子零 永远的Hello World
index.js var http = require("http"); http.createServer(function(request, response) { respo ...