期末总结20135320赵瀚青LINUX内核分析与设计期末总结
赵瀚青原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
对LINUX内核分析与设计这门课程的理解
LINUX内核在我看来就是操作系统和深入理解计算机系统的结合。Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。我觉得LINUX操作系统和WINDOWS操作系统最大的不同就是,WINDOWS操作系统的内核源代码是不公开的,也不共享,这样一些编程的爱好者无法参与自己的思想,但是这样有利于形成自己的逻辑体系,LINUX则相反,各个编程爱好者可以提交自己的想法,一同进步。
而从体系结构上来看Linux 内核实现了很多重要的体系结构属性。在或高或低的层次上,内核被划分为多个子系统。Linux 也可以看作是一个整体,因为它会将所有这些基本服务都集成到内核中。这与微内核的体系结构不同,后者会提供一些基本的服务,例如通信、I/O、内存和进程管理,更具体的服务都是插入到微内核层中的。
而我认为,LINUX操作系统最重要的就是,进程的创建,可执行程序的装载以及进程的切换。我认为一个操作系统的运行,无疑是需要各个进程相互配合。而如何很好的调用这些进程,同时又不降低处理器的处理速度,以及用户的体验,则是衡量一个操作系统优劣的标准。而堆栈我觉是理解一个程序的核心,它反映了代码中各个函数的调用关系,以及占用内存的情况。而本学期理解LINUX内核最重要的方式也是通过gdb调试,看这些操作系统行为究竟是如何发生的,存在什么,调用了什么,以及是如何结束的。上述就是我对这门课的理解,如果有失偏颇,还请老师见谅
链接总结
第一周学习笔记:http://www.cnblogs.com/5320zhq/p/5225661.html
第二周学习笔记:http://www.cnblogs.com/5320zhq/p/5246702.html
第三周学习笔记:http://www.cnblogs.com/5320zhq/p/5270056.html
第四周学习笔记:http://www.cnblogs.com/5320zhq/p/5299100.html
第五周学习笔记:http://www.cnblogs.com/5320zhq/p/5317422.html
第六周学习笔记:http://www.cnblogs.com/5320zhq/p/5339327.html
第七周学习笔记: http://www.cnblogs.com/5320zhq/p/5361310.html
第八周学习笔记:http://www.cnblogs.com/5320zhq/p/5388756.html
期中总结:http://www.cnblogs.com/5320zhq/p/5408103.html
每周学习内容概括
1.计算机是如何工作的?
- 冯诺依曼体系结构
- X86汇编基础
- 汇编一个简单的C程序分析其汇编指令执行过程
2.操作系统是如何工作的?
- 函数调用堆栈
- 借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断
- 在mykernel基础上构造一个简单的操作系统内核
3.构造一个简单的Linux系统MenuOS
- Linux内核源代码简介
- 构造一个简单的Linux系统
- 跟踪调试Linux内核的启动过程
4.扒开系统调用的三层皮(上)
- 用户态、内核态和中断处理过程
- 系统调用概括
- 使用库函数API获取系统当前时间
- 使用C代码中嵌入汇编代码触发系统调用获取系统当前时间
5.扒开应用系统的三层皮(下)
- 给MenuOS增加time和time-asm命令
- 使用gdb跟踪系统调用内核函数sys_time
- 系统调用在内核代码中的工作机制和初始化
系统调用在内核代码中的工作机制和初始化,简化后便于理解的system_call伪代码,简单浏览system_call和iret之间的主要代码。
6.进程的描述和进程的创建
- 进程的描述
- 进程的创建
进程的创建概览及fork一个进程的用户态代码
理解进程创建过程复杂代码的方法
浏览进程创建过程相关的关键代码
使用gdb跟踪创建新进程的过程
7.可执行程序的装载
(一)预处理、编译、链接和目标文件的格式
1.可执行程序是怎么得来的
2.目标文件的格式ELF
3.静态链接的ELF可执行文件和进程的地址空间
(二)可执行程序、共享库和动态加载
1.装载可执行程序之前的工作
2.装载时动态链接和运行时动态链接应用举例
(三)可执行程序的装载
1.可执行程序的装载相关关键问题分析
2.sys_execve的内部处理过程
3.使用gdb跟踪sys_execve内核函数的处理过程
4.可执行程序的装载与庄生梦蝶的故事
5.浅析动态链接的可执行程序的装载
8.进程的切换和系统的一般执行过程
(一)进程切换的关键代码switch_to分析
1.进程进度与进程调度的时机分析
2.进程上下文切换相关代码分析
(二)Linux系统的一般执行过程
1.Linux系统的一般执行过程分析
2.Linux系统执行过程中的几个特殊情况
(三)Linux系统架构和执行过程概览
1.Linux操作系统架构概览
2.最简单也是最复杂的操作——执行ls操作
3.从CPU和内存的角度看Linux系统的执行
心得与体会以及遗憾
本学期学了LINUX内核分析与设计最大的感受我觉得可以分为以下四点来说
1、拥有了每周定时学习的习惯,以前的学习大多数为突击式学习, 快到考试或者快到测试才突然学习,但是本门课不允许这种行为,每周要看视频,做实验,以及小测,根本不可能堆积在一下做完,也不可能理解好知识,只有每天学习一点,慢慢理解,才能将一周的内容理解完全。
2、第二点就是动手操作能力得到了提高,以前的大多数课程都是学习书本上的知识,但是这门课学到了许多操作的知识,例如用gdb调试程序,可以让我们理解程序的堆栈变化,以及各个函数之间的调用情况。
3、第三点就是养成了写笔记的习惯,每周的博客,以及读书笔记,让我养成了将重要的知识点记下来的习惯,不一定要写在博客上,但是总结成几个小点是十分有用的解决方式。
4、第四点也是最重要的一点就是学会了自己动手解决问题,以前碰到问题,大多数都是放弃,或者是等着老师讲,但是每周实验,让我们必须要自己去解决,要么需要去百度,或者请教同学或者老师,然后解决了问题的那种成就感,也是以前从未有过的体验。
遗憾之处
遗憾之处总的来说可以概括为两点
对老师不要求的问题没有深入研究,每次实验或者视频,老师都会讲到一些比较高深的东西,这些东西不理解,或者说在百度上也没有明确解释的时候,往往就不了了之,没有想办法再去深究,这也是我以后需要加强的地方。
还有一个遗憾之处就是对这门课还没有一个明确的系统,感觉理解的知识点都是分散的,没有整合在一起,用一条线串起来,但是相信在日后的学习中我能够克服这些问题,更加好的投入未来的学习中。
参考资料
- 360百科LINUX内核讲解
- cindy_忻博客
期末总结20135320赵瀚青LINUX内核分析与设计期末总结的更多相关文章
- 20135320赵瀚青LINUX内核分析第一周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主 ...
- 三20135320赵瀚青LINUX内核分析第二周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机的三个法宝 存储程 ...
- 20135320赵瀚青LINUX内核分析第三周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周是学习的主要是构造 ...
- 20135320赵瀚青LINUX内核分析第四周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周的内容主要是讲解系 ...
- 20135320赵瀚青LINUX第八周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的是linux ...
- 20135320赵瀚青LINUX第七周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的内容主要是讨 ...
- 20135320赵瀚青LINUX第五周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 按照刘老师的周从三个角 ...
- 20135320赵瀚青LINUX第六周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 这周主要讲解的是进程. ...
- 期末总结:LINUX内核分析与设计期末总结
朱国庆原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一,心得体会 关于网上听课这 ...
随机推荐
- MQTT的学习研究(十五) MQTT 和android整合文章
详细参考: How to Implement Push Notifications for Android http://tokudu.com/2010/how-to-implement-push- ...
- Java多线程详解(三)
1)死锁 两个线程相互等待对方释放同步监视器时会出现死锁的现象,这时所有的线程都处于阻塞状态,程序无法继续向下执行. 如下就是会出现死锁的程序. 首先flag = 1,线程d1开始执行,锁住对象o1, ...
- 2012Noip提高组Day2 T3 疫情控制
题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到 ...
- map容器结构体离散化
小数坐标离散化: #include"string.h" #include"stdio.h" #include"iostream" #incl ...
- 如何通过命令在Ubuntu中安装PyCharm
对于Ubuntu 16.10和Ubuntu 17.04,通过Ctrl + Alt + T打开终端,或通过从应用启动器搜索“terminal”,打开后,执行以下步骤: 安装: 1.通过命令添加PPA存储 ...
- 2.title
1.母版页里写title,标题会:会显示母版页里的. 结果如下: 2.母版页和实现模板页同时都设置了title,会显示实现模板页里的title 运行结果页:
- Groovy中的面向对象
Groovy中的面向对象 前面说到groovy支持脚本和类,前面一节已将简单说了脚本和类之间的关系,这一节主要介绍一下groovy中类的相关知识,即面向对象相关知识. 1.类型 1.1 原始类型 gr ...
- javascript 执行环境,作用域链和闭包
首先看下这条语句: (function($) {…})(jQuery): 1.原理: function(arg){…}这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的, ...
- 由于dns服务为启动导致的GI集群启动故障
1.物业由于突然断电导致grid集群重新启动后rac数据库无法正常启动,对集群进行检查,结果如下,发现其中有4个数据库状态为instance shutdown.[root@node1 ~]# su - ...
- Django - rest - framework - 上
一.快速实例 http://www.django-rest-framework.org/tutorial/quickstart/#quickstart http://www.cnblogs.com/y ...