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. ORACLE 空表不能导出问题解决

    exp不导出空表,是11g的新特性,当表无数据时,不分配segment,以节省空间,所以exp导出的时候,不导出这些表. 先登录要导出的用户执行以下语句 先执行 select 'alter table ...

  2. 国内技术管理人员批阅google的“春运交通图”项目(大公司下的高效率)<转载>

    在整理一份报告的时候,偶然看到2008年春节期间google推出的“春运交通图”项目建设历程报道,很受启发,随以国内的技术管理人员眼光批阅了这篇文章,同时也是自嘲吧. 以下黑色字体是原报道,红色字体是 ...

  3. ORCALE复制表结构

    1.oracle 复制表结构 不要内容 create table 表1 as select * from 表2 where 1=2 2.oracle 复制表结构 要内容 create table 表1 ...

  4. 160个crackme-之Acid burn.exe

    工具: Ollydbg(OD) 中文版 运行: 我们拿到一个小程序时,总要看看它到底有什么功能,或者说它阻碍了我们什么,也就是寻找突破口! 这就是程序运行后的主界面 我们进入Serial/Name后, ...

  5. “iTunes无法连接iPad,因为设备超时”解决办法

    注意一般要两个授权才会连接成功,一是在电脑上的iTunes登陆apple账户,账户授权电脑:二是ipad上信任Trust电脑连接ipad,如果没有重启iPad试试. 法1. 更新iTunes,重启电脑 ...

  6. 第十讲(LINQ)

    一..LINQ查询 例如: static void LINQQuery() { var query = from r in Formula1.GetChampions() where r.Countr ...

  7. ASP通过ADODB读取Access数据库

    <% On Error Resume Next set conn=server.createobject("adodb.connection") mypath=server. ...

  8. android 开发中 添加库文件 和so 文件的存放位置和添加依赖

    so文件一般存储在  main 当中  jniLibs 当中 然后在build.gradle中添加 sourceSets { main { jniLibs.srcDirs = ['src/main/j ...

  9. python tips(持续更新)

    1. 引用上一层目录 import syssys.path.append('..')import xx 2. python json JSON是一种轻量级的数据交换格式.可以解决数据库中文存储问题,对 ...

  10. 【转】图像灰度化方法总结及其VC实现

    转载自:  http://blog.csdn.net/likezhaobin/article/details/6915754 最近一段时间作者开始进行运动目标识别定位系统设计,本文以及后续的几篇文章都 ...