期末总结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 一,心得体会 关于网上听课这 ...
随机推荐
- iOS实现传递不定长的多个参数
我们在使用苹果官方的文档的时候会发现可传不定数的参数例如: // [[UIAlertView alloc]initWithTitle:<#(nullable NSString *)#> m ...
- 【BZOJ2314】士兵的放置 树形DP
[BZOJ2314]士兵的放置 Description 八中有N个房间和N-1双向通道,任意两个房间均可到达.现在出了一件极BT的事,就是八中开始闹鬼了.老大决定加强安保,现在如果在某个房间中放一个士 ...
- 【BZOJ3387】[Usaco2004 Dec]Fence Obstacle Course栅栏行动 线段树
[BZOJ3387][Usaco2004 Dec]Fence Obstacle Course栅栏行动 Description 约翰建造了N(1≤N≤50000)个栅栏来与牛同乐.第i个栅栏的z坐标为[ ...
- SSL安装方法一:在Windows Server 2008安装SSL证书(IIS 7.0)
购买的是GlobalSign 公司的通配符域名型SSL 大致的意思就是“通配符公用名填写*.域名.com,这个下面的所有子域名是不受数量限制的,*可以换成任意字符” 1 生成数字证书签名请求文件(CS ...
- 百度地图api添加自定义控件
官网栗子:http://lbsyun.baidu.com/jsdemo.htm#b0_6 <!DOCTYPE html><html><head> <meta ...
- java类的成员变量和局部变量的区别
转自:https://jingyan.baidu.com/article/03b2f78c1ba2d05ea237ae9b.html 在类中位置不同:成员变量:在类中方法外.局部变量:在方法定义中或者 ...
- Swift - 实现tableView单选系统样式
// 实现tableView单选 import UIKit class ViewController: UIViewController { var tableView: UITableView! o ...
- SMGP关键代码
从网上下载java的API就可以开发了我们需要修改的类是: import java.io.IOException; import cn.com.zjtelecom.smgp.Client; impor ...
- HDU Humble Numbers
Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The ...
- Python 使用 Matplotlib 做图时,如何画竖直和水平的分割线或者点画线或者直线?
作者:看看链接:https://www.zhihu.com/question/21929761/answer/164975814 可以使用: vlines(x, ymin, ymax) hlines( ...