期末总结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 一,心得体会 关于网上听课这 ...
随机推荐
- 学习C++服务端一:MySql与C++
mysql学习: http://www.cnblogs.com/cy163/archive/2008/10/16/1312277.html http://developer.51cto.com/art ...
- C++中的三种继承public,protected,private
( c++默认class是private继承且class内的成员默认都是private struct 默认位public 继承,struct内成员默认是public ) 三种访问权限 public: ...
- 手机QQ会员H5加速方案——sonic技术内幕
版权声明:本文由况鹰原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/141 来源:腾云阁 https://www.qclou ...
- 关于用phonegap 3.0+ 打包后sencha touch按钮点击切换动画延迟接近一秒的以及界面闪烁的解决方案
android的webview对硬件加速的支持貌似很不理想,在开启硬件加速的情况下,css3这些需要调用硬件加速的样式会大幅拖慢html5的webapp,在htc的部分手机上还会因开启硬件加速而导致闪 ...
- 删除编辑文件警告Swap file “…” already exists!
Linux下多个用户同时编辑一个文件,或编辑时非正常关闭,再下次编辑打开文件时均为显示如下警告信息: Swap file "test.xml.swp" already exists ...
- 【BZOJ1045】[HAOI2008] 糖果传递 贪心
[BZOJ1045][HAOI2008] 糖果传递 Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正 ...
- fiddler 面板内显示IP地址
1.打开fiddler, 快捷键Ctrl+R (菜单->Rules->Customize Rules…) 然后在CustomRules.js文件里Ctrl+F查找字符串:static f ...
- 用到了yii2 hasMany() 方法,一对多关联
view页面代码:其中supply,item,price是一个AR类都是一个类,item和prices是一对多关系: [ 'label' => '参考', 'format' => 'htm ...
- SaltStack生产案例-服务部署(redis,mysql,apache+php,haproxy+keepalived)
顺序代码资料链接 课上资料.zip 接上篇:SaltStack生产案例-系统初始化 1,redis 主从 2,mysql 主从 2.1 mysql-install.sls (安装 初始化) 2.2 ...
- 使用log4net做应用程序全局日志记录保存在数据库中
几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.经验表明,日志记录往往 ...