Linux课程学习之我思
陈民禾,原创作品转载请注明出处《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000,我的博客中有一部分是出自MOOC课程中视频,再加上一些我自己的理解。
经过八周的学习,Linux课程告一段落,在这里,对之前的学习做一个汇总,也简单说一下自己的收获与遗憾。
一.博客笔记汇总
这里每个单独的部分不再赘述,可以点击博客进行查看:
第一周笔记 标题:计算机是这样工作的
链接:http://www.cnblogs.com/20135124freedom/p/5224847.html
第二周笔记 标题:操作系统的运行机制
链接:http://www.cnblogs.com/20135124freedom/p/5248375.html
第三周笔记 标题:Linux系统的启动过程
链接:http://www.cnblogs.com/20135124freedom/p/5273033.html
第四周笔记 标题: 系统调用过程
链接:http://www.cnblogs.com/20135124freedom/p/5299094.html
第五周笔记 标题:system_call中断处理过程
链接:http://www.cnblogs.com/20135124freedom/p/5326346.html
第六周笔记 标题:进程的创建与描述
链接:http://www.cnblogs.com/20135124freedom/p/5336851.html
第七周笔记 标题:内核如何装载和启动一个可执行程序
链接:http://www.cnblogs.com/20135124freedom/p/5363662.html
第八周笔记 标题:进程的切换和一般执行过程
链接:http://www.cnblogs.com/20135124freedom/p/5391170.html
二.课本书籍笔记汇总(课本的名称是《LINUX内核设计与实现》
第一章:Linux内核简介
链接:http://www.cnblogs.com/20135124freedom/p/5281446.html
第二章:从内核出发
链接:http://www.cnblogs.com/20135124freedom/p/5281446.html
第三章:进程管理
链接:http://www.cnblogs.com/20135124freedom/p/5343184.html
第四章:进程调度
链接:http://www.cnblogs.com/20135124freedom/p/5401171.html
第五章:系统调用
链接:http://www.cnblogs.com/20135124freedom/p/5327908.html
第七章:链接
链接:http://www.cnblogs.com/20135124freedom/p/5361838.html
三.对Linux学习内容的汇总想法
知识篇
我觉得学习Linux内核分析之后应该对Linux有了一个系统性的认识。这门课是针对Linux内核的书籍,学习了之后就会对Linux的运行机制有了一个更深刻的理解,其实Linux和windows还是有很大不同的,也有一些想通的部分,我们这门课采用了一个循序渐进的方式。

几个课程中到的比喻,这几个比喻还是比较形象的,串联起来也可以总结一下我们这门课的学习,如下:


内核的启动过程可以简单地这么来看:start_kernel从内核一启动的时候它会一直存在,这个就是0号进程,idle就是一个while0,一直在循环着,当系统没有进程需要执行的时候就调度到idle进程,我们在windows系统上会经常见到,叫做system idle,这是一个一直会存在的0号进程,然后呢就是0号进程创建了1号进程,这个init_process是我们的1号进程也就是第一个用户态进程,也就是它默认的就是根目录下的程序,也就是常会找默认路径下的程序来作为1号进程,1号进程接下来还创建了kthreadd来管理内核的一些线程,这样整个程序就启动起来了。也就是所谓的道生一,一生二,二生三,三生万物。

我们把原来的可执行程序,也就是share可执行程序,int 0x80进入到这个execve的系统调用入睡,当他入睡的时候加载到一个新的可执行程序,加载到新的可执行程序,return 返回之后,也就是它醒来了,蝴蝶执行了在蝴蝶内部的程序,它如果加载庄子,这两者总是想相对的,但都是同一进程,只是把进程里面的可执行程序给替换掉了。

按照网课的总结


从CPU和内存的角度来看Linux系统的执行
1.从在CPU执行指令的角度看:

2.从内存的角度看



.qemu -kernel linux-3.18./arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
.# -S freeze CPU at startup (use ’c’ to start execution)
.# -s shorthand for -gdb tcp:: 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项
另开一个shell窗口
.gdb
.(gdb)file linux-3.18./vmlinux # 在gdb界面中targe remote之前加载符号表
.(gdb)target remote: # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
.(gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后
之后按n执行下去,就这样完成了对内核的调试
四.收获与遗憾
Linux课程学习之我思的更多相关文章
- Linux课程学习 第四课
学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来 这月事比较多,每课的笔记都会慢慢补回来的,做事得有始有终 在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件体积小,在网速相同的情况下,传输时 ...
- Linux课程学习 第三课
生活中的许多事,并不是我们不能做到,而是我们不相信能够做到 https://www.linuxcool.com/ 一个很实用的Linux命令查询网站,并且还有发音 如果我们在系统终端中执行一个命令后想 ...
- Linux课程学习 第二课
工欲善其事,必先利其器 虚拟机安装(链接中有详细的操作方法,这里就不再详细说明了,但有注意事项,会在下文中截图标注) https://www.linuxprobe.com/ 注:为了避免是权限问题导 ...
- Linux网络课程学习第一天
第一天上课主要介绍了LINUX系统和Linux课程的情况.了解了开源系统的四大优势,六大特点. 最具有心得的一句话: 学习是件苦差事: 稻盛和夫先生的话也深深激励着我:“工作马马虎虎,只想在兴趣和游戏 ...
- 14门Linux课程,打通你Linux的任督二脉!
Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...
- 别出心裁的Linux命令学习法
别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...
- 别出心裁的Linux系统调用学习法
别出心裁的Linux系统调用学习法 操作系统与系统调用 操作系统(Operating System,简称OS)是计算机中最重要的系统软件,是这样的一组系统程序的集成:这些系统程序在用户对计算机的使用中 ...
- Linux驱动学习步骤(转载)
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ls ...
- Linux 第一次学习笔记
一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...
随机推荐
- 你的安全设置不允许网站使用安装在你的计算机上的ActiveX控件
在IE中,工具--INTERNET选项--安全--自定义级别--"下载未签名的ActiveX控件"选项改成"提示"或"允许"就好了.
- iOS 多线程:『RunLoop』详尽总结
1. RunLoop 简介 1.1 什么是 RunLoop? 可以理解为字面意思:Run 表示运行,Loop 表示循环.结合在一起就是运行的循环的意思.哈哈,我更愿意翻译为『跑圈』.直观理解就像是不停 ...
- (一)U盘安装ubuntu18.04.1
我选择安装的ubuntu18.04.1因为我的显卡是Amd RX470 ,Amd官方所兼容的版本是18.04.1, 跳过的坑:用18.04.2 18.04.3 安装amdgpu驱动各种报错 0X:下载 ...
- 三、用Delphi10.3 创建一条JSON数据的第三种方法,非常简洁的写法
一.用Delphi10.3构造一个JSON数据的第三种方法,并格式化输出,代码如下: uses // System.JSON, System.JSON.Types, System.JSON.Write ...
- Kotlin基础篇(一)
写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...
- 20155211 课下测试ch11补做
20155211 课下测试ch11补做 Web服务器的实现基于HTTP协议,有关HTTP协议,下面说法正确的是() A.可以用telnet充当Web服务器的客户端进行调试 B.HTTP请求的GET和P ...
- 2-功能1:基于用户认证组件和Ajax实现登录验证(图片验证码)
1.登录页面的设计 (1)label标签的id属性 label标签的id属性,点击label标记,相当于点击了input框 bootstarp样式 class="form-group&quo ...
- 4569: [Scoi2016]萌萌哒
4569: [Scoi2016]萌萌哒 链接 分析: 每次给出的两个区间长度是一样的,对应位置的数字也是一样的,那么可以将两两对应的数字用并查集合并,设最后有$cnt$个不同的集合,答案就是$9\ti ...
- Codeforces 909 D. Colorful Points (模拟)
题目链接: Colorful Points 题意: 给出一段字符串(长度最大为1e6),每次操作可以删除字符串中所有相邻字符与其不同的字符.例如:aabcaa 删除一次就变成了aa,就无法再删除了.题 ...
- 【windows server 2008R2】windows server 2008R2自动重启
客户反映2018.3.20早上8点多数据库重启. 我找了半天原因,看了一下告警日志没发现什么问题.后来我再跟他确认,他说他练上去的时候正在准备桌面.这感觉像是服务器重启导致数据库重启. 于是我远程上去 ...