关于MOOC的学习总结

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的内核代码全部分析一变,希望以后有时间可以完成这个艰巨的任务。

时间: 2024-09-29 19:27:50

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

记一次网易云课堂MOOC课程学习经历——《软件工程(C编码实践篇)》

刘东晓 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 一.对课程的简要理解 正如计算机业内的一个非常经典的等式所言: 程序     =算法+数据结构 软件     =程序+软件工程 软件企业    =软件+商业模式 现代软件企业的成功离不开优秀的软件以及杰出的商业模式,同时,作为企业运营核心的软件亦离不开软件工程的指导. 作为商业软件而言,程序是软件的"内功&q

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

#include "acllib.h"ACL_Sound sound1;//背景音乐ACL_Image img;//开始图ACL_Image img1;//涂鸦图ACL_Color c=RED;//默认画笔颜色int cx=0;int cy=0;int j=0;//开始界面和绘图界面分离int m=0;//重置当前绘图点and监控鼠标左或右键是否一直按着void BEGIN(void){ loadImage("begin_one.jpg",&img); lo

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

MOOC是网络开放教育创新发展的产物,也是备受人们欢迎的网络学习途径.当前制约MOOC能否可持续深入发展的问题聚焦于MOOC学习成果能否得到合理的认证.MOOC学习成果认证分为非学分认证和学分认证.MOOC非学分认证包括课程证书认证.项目证书认证和学习者自我认证,由于其未触及大学教学制度的内核——学分,因而遭致不少非议:而MOOC学分认证由于受到教学测评.学习者身份识别.大学文化传统和学分管理制度等多种因素的限制,运作起来也并不顺畅.MOOC的发展使大学具有越来越鲜明的虚拟结构特性,但不会出现将

Canvas 练习及学习笔记

2016-11-02 在MOOC上 学习了关于 Canvas 的教程 受益匪浅 先上练习的demo 本人用的是 Chorme 暂时没有考虑兼容性问题 1 时钟 https://fanyear.github.io/Canvas/Clock/index.html 2 (放大镜)鼠标左键   https://fanyear.github.io/Canvas/Magnifier/index.html 3 缩放图像  https://fanyear.github.io/Canvas/ScaleImage/

好的学习资源

公开课:http://www.icourses.cn/mooc/ OPenGL学习:http://learnopengl.com/#!Introduction Learn C++:http://www.learncpp.com/ 计蒜课:http://nanti.jisuanke.com/

北航MOOC系统Android客户端NABC

北航MOOC手机客户端NABC分析 1) N (Need 需求) MOOC是Massive Open Online Course的缩写,通常被译为大型开放式网络课程,它最早在08年的时候由一位加拿大的学者提出,经过了几年的沉寂,终于在2012年随着几大课程平台:Coursera.edX.Udacity的崛起而迅速成为全球最为热门的教育话题之一.MOOC这是一种在线教育形式,任何人都能免费注册使用,它有与线下课程类似的作业评估体系和考核方式.按时完成作业和考试的学习者还可能收获导师签署的课程证书.

python学习之网页数据获取

由于需要学习机器学习的内容,了解到python在机器学习中使用很方便,开始学习之,机器学习目前主要在学<机器学习实战>这本书.python是在MOOC中学习<用python玩转数据>这门公开课.以后可以将课程的作业解答的答案放上来. 用python获取网页数据,题目要求如下: 我使用的是spyder开发环境,python的版本是3.5.代码如下: import urllib.request #python 3.5 for i in range(10): response = url

编程学习指南

我个人十分喜欢的编程学习指南,也将作为自己的编程学习和技能提升的重要参考. 本文作者是@萧井陌,基于个人收藏的缘故,在格式上略有改动. 前言 如今编程成为了一个越来越重要的技能:作为设计师,懂一些编程可能会帮你更好地理解自己工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或许根本不知道从哪里开始:入门轻松度过初级材料的学习后,发现学习越来越困难,陡峭的学习曲线又让你望而却步:你知道如何在页面上打印输出一些文本行,但是你不知道何时该进行

编程入门指南

前言 如今编程成为了一个越来越重要的「技能」:作为设计师,懂一些编程可能会帮你更好地理解自己的工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或许根本不知道从哪里开始:入门轻松度过初级材料的学习后,发现学习越来越困难,陡峭的学习曲线又让你望而却步:你知道如何在页面上打印输出一些文本行,但是你不知道何时该进行一个真正的有用的项目:你不清楚自己还有哪些不知道的东西,你甚至搞不清下一步该学什么. 这篇文章的内容对此不仅会有一些方向性的建议,