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

对Linux系统的理解及学习Linux内核的心得:

  1. Linux是一个极为庞大的,由C与汇编语言写成的操作系统。
  2. Linux分开内核态和保护态,内核态拥有最高的访问权限,常常帮助用户态进程实现功能。
  3. Linux创建新进程的代码十分的漂亮,fork()函数和execve()函数创建进程的方式是把父进程的复制一遍再破坏掉。
  4. Linux的进程切换做到了“智能”,在schedule()中有一个类似于OOD的策略模式封装在pick_next_task,挺让我惊讶的,而且随着内核版本迈进4.0时代,Linux的运行将有可能更高效。
  5. Linux的设计处处精巧,在这八个星期里面我们只学了汇编基础、程序的装载、线程的切换。让我们受益良多。

实验目录:

第一周实验

反汇编一个简单的C程序,分析汇编代码在计算机中的工作过程 http://user.qzone.qq.com/617434934/blog/1425827080

第二周实验

一个简单的时间片轮转多道程序内核代码 http://rc.qzone.qq.com/blog

第三周实验

跟踪分析Linux内核的启动过程查看 http://user.qzone.qq.com/617434934/2

第四周实验

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 http://weibo.com/p/1001603825522235866495?from=page_100505_profile&wvr=6&mod=wenzhangmod

系统调用是进程进入内核空间的一种方法,稍后我们会接触到第二种进入内核的方式:中断。

第五周实验

分析system_call中断处理过程 http://weibo.com/p/1001603828405169700271?from=page_100505_profile&wvr=6&mod=wenzhangmod

中断异常也是一种进入内核态的方法之一,不过这个方法是不受程序所控制的,既我们无法预知和控制中断的到来。所以在中断的到来之前,我们必须做好准备。中断和系统调用一样,都会进入核心态,而且他们使用了一个同样的办法。定时器中断,它给系统提供了固定时间的中断间隔,也就是每过一个固定的时间,定时器都会发生一次中断。通过上面的学习,我们知道中断的发生,可以检查是否要发生进程的切换。所以在一定程度上,定时器中断可以调高系统的相应时间,尽量减少了进程长时间得到不处理器运行的饥饿情况。

第六周实验

分析Linux内核创建一个新进程的过程 http://weibo.com/p/1001603830732274442197?from=page_100505_profile&wvr=6&mod=wenzhangmod

内核同步是保证整个软件系统安全运行的一个非常重要的手段。进程是占用了一定的系统资源的一个程序的实体,或者说是正处于执行期的程序。进程不仅仅是一段可执行的代码,它还包括一些其他系统资源,如打开的文件、挂起的信号、内核内部数据、处理器的状态、地址空间以及一个或多个执行线程,当然还包括用来存放全局变量的数据段。

第七周实验

Linux内核如何装载和启动一个可执行程序http://weibo.com/p/1001603833670539597307?from=page_100505_profile&wvr=6&mod=wenzhangmod

第八周实验

理解进程调度时机跟踪分析进程调度与进程切换的过程 http://www.cnblogs.com/emochuanshuo/p/4394972.html

进程的调度是内核里面非常重要的一个部分,该模块完成了进程的切换功能,既它要选择一个最合适的进程去执行。

总结:

学习这门课最大的收获就是明白了一些分析代码问题的思路与方法,我觉得这也是最重要的的,抓住零散的代码中的关键才是深入理解的必要条件。也学会了边上课便做笔记,这样子的学习效率特别高,而且可以拓展到Offline的课堂,甚至到生活中去。夸张一点地说,学会记笔记,延长了自己的生命。因为当一天过去以后,不用思考自己这一天是不是又浑浑噩噩地度过了,至少我知道我记录下了我今天遇到的东西。等到有一天自己大脑的记忆体不再好用的时候,我还可以查看以前的笔记。学习了孟宁老师的课程收获挺多的,实在找不到什么最大的遗憾。要说遗憾就是因为时间有限,没能把Linux-3.18.6的内核代码全部分析一变,希望以后有时间可以完成这个艰巨的任务。

关于MOOC的学习总结的更多相关文章

  1. MOOC视频学习

    mooc地址 2018/2/6-2/7学习计划: 学习第一周(1.1-1.4)内容. 学习笔记 2018/2/8-2/9学习计划: 学习第二周(1.5.2.1-2.5)内容. 学习笔记 2018/2/ ...

  2. 【MOOC课程学习记录】数据结构

    看了中国大学MOOC zju的<数据结构>2019夏的第九次开课.做了一些PTA上的习题,没有全做,因为做得慢,老是不会,加上并不能做到一有空就学习,所以做不完了,给跪了Orz. 以后有时 ...

  3. mooc linux学习总结

    通过八周的学习获得了很多知识.       首先,通过网课老师形象生动的讲述和描述一些专业词汇,使我更加深刻的记住并掌握了这些内容:动态的展示堆栈的变化,更容易理解一段汇编代码:分析操作系统的工作,记 ...

  4. 【MOOC课程学习记录】程序设计与算法(一)C语言程序设计

    课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励. ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来. ...

  5. mooc上学习acllib后写的包含背景音乐的小涂鸦板(初入江湖,大佬勿喷)

    #include "acllib.h"ACL_Sound sound1;ACL_Image img;//开始图ACL_Image img1;//涂鸦图ACL_Color c=RED ...

  6. MOOC学习成果认证及对高等教育变革路径的影响

    MOOC是网络开放教育创新发展的产物,也是备受人们欢迎的网络学习途径.当前制约MOOC能否可持续深入发展的问题聚焦于MOOC学习成果能否得到合理的认证.MOOC学习成果认证分为非学分认证和学分认证.M ...

  7. python学习之网页数据获取

    由于需要学习机器学习的内容,了解到python在机器学习中使用很方便,开始学习之,机器学习目前主要在学<机器学习实战>这本书.python是在MOOC中学习<用python玩转数据& ...

  8. '"千"第一周学习情况记录

    一周过去了,今天将我这一周的学习内容和主要感想记录与此和大家共同分享,一起进步.我将自己的学习计划命名为"千",因为我喜欢这个字,希望能用此来鼓舞自己不断前进.时间总是很快的,这一 ...

  9. Python入门学习笔记

    了解 一下Python中的基本语法,发现挺不适应的,例如变量经常想去指定类型或者if加个括号之类的.这是在MOOC中学习到的知识中一点简单的笔记. Python的变量和数据类型: 1.Python这种 ...

随机推荐

  1. WEB安全性测试

    SQL注入   所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令 ...

  2. 专家解读:BPM与OA的区别

    演进历程 传统OA 模块化架构,仅能满足管理执行的刚性效率,系统的专业化程度有限. BPM 平台化架构,管理要求精细化程度高,系统更专业化,更注重整合. BPM SAAS 基于云架构,跨组织社交化,系 ...

  3. 正则匹配中文 UTF-8 & GBK

    在php 中: //GB2312汉字字母数字下划线正则表达式 GBK: preg_match("/^[".chr(0xa1)."-".chr(0xff).&qu ...

  4. 【python】闭包、@修饰符(装饰器)、

    闭包:(返回函数的行为叫闭包??) #函数也是对象,所以可以被传递 def line_conf(a,b): def line(x): return a*x+b return line line1=li ...

  5. Java HttpGet

    String urlStr ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?a=a&b=b"; URL url = null; ...

  6. 数据存储之CoreData

    #import "ViewController.h" #import <CoreData/CoreData.h> #import "Person.h" ...

  7. ubuntu安装谷歌输入法

    1,sudo apt-get install fcitx-googlepinyin 2,在settings->Language Support里将keyboard input method sy ...

  8. oracle:ORACLE 实际返回的行数超出请求的行数

    写的存储过程,执行后一直报实际返回的行数超出请求的行数的错误. 原因:select prdt_id into prdt_id from.... 两个变量名称相同造成的..哎  第一个变量换成大写..问 ...

  9. PHP初学者都该掌握哪些技能

    初学PHP时,不要好高骛远,脚踏实地的把LNMP搞熟练,打好基础再往更高的层次发展.今天给大家总结初学者应该学会的技能. 1.Linux 基本命令.操作.启动.基本服务配置(包括rpm安装文件,各种服 ...

  10. java异常架构图 和几个面试题

    1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...