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 ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...
随机推荐
- POJ 1080( LCS变形)
题目链接: http://poj.org/problem?id=1080 Human Gene Functions Time Limit: 1000MS Memory Limit: 10000K ...
- MySQL数据库 utf-8与utf8mb4
MySQL的“utf8”实际上不是真正的UTF-8. MySQL中的“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节. MySQL ...
- 早上出现的zabbix启动错误
之前根据教程安装好zabbix,MySQL的版本是5.1. 昨天无聊想升级成5.6.不过升级比较麻烦.我就直接把5.1删了再装5.6. 安装中途zabbix挂了一次.把5.6装上启动后就好了. 早上z ...
- FPGA-Xilinx原语调用之ODDR
记录背景:最近由于想实现GMIItoRGMII的功能,因此需要调用ODDR原语. ODDR:Dedicated Dual Data Rate (DDR) Output Register 通过ODDR把 ...
- Oracle保存带&的数据
在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值.这就意味着你无法将一个含有该符号的字符串输入数据库或赋给 ...
- SpringCloud-声明式Rest调用Feign(四)
前言:一般情况下我们通常使用RestTemplate来实现声明式远程调用,但是当参数过多,那么效率就会变得很低,并且难以维护,所以在微服务当中也有声明式Rest调用的组件Feign 一.Feign简介 ...
- caffe windows编译
MicroSoft维护的caffe已经作为官方的caffe分支了,编译方式也改了,刚好最近重装了一次caffe windows, 记录一下里面的坑 https://github.com/BVLC/ca ...
- 【CJOJ2433】陌上花开 CDQ分治
[CJOJ2433]陌上花开 CDQ呲嘚秋分治 WA果然呲嘚秋分治跑得比树套树还快!!!(md理论复杂度不是一样的吗) 但树套树不知道比呲嘚秋高到哪里去辣装X用 Orz hzwer 第一维sort,第 ...
- 一款好看的Sublime Text浅色主题:Ayu大作
上一篇分享的VS Code的文中,界面也是浅色主题,也是Ayu作品.下面看一下Sublime Text中的Ayu浅色主题 不错吧. 如何下载? 首选项——插件控制——安装插件或者ctrl+shift+ ...
- UWP 轨道视图Orbit View
先看一下效果吧 这是我的Music Tags App里面的效果图,当然你也可以做的比我的更炫. 其实这个效果的实现来自于控件UWP Community Toolkit的OrbitView,所以大家要多 ...