《Linux内核分析》第三周学习报告
《Linux内核分析》第三周学习报告
——构造一个简单的Linux系统MenuOS
姓名:王玮怡 学号:20135116
第一节 Linux内核源代码简介
Linux内核源代码(重点关注arch/x86目录下的代码)
1、linux-3.18.6/init中存储很多内核启动相关的代码,其中main.c中的代码为整个内核启动的起点
2、main.c中,start_kernel函数相当于普通C程序的main函数,内核开始初始化
3、linux-3.18.6/kernel中有Linux内核的核心代码
4、如何安装内核源代码:
(1)解压:gzip –cd linux-3.X.tar.gz
(2)打补丁:gzip –cd../patcj-3.x.gz
(3)进入Linu并进行清理中间代码:cd linux make mrproper-
第二节 构造一个简单的Linux系统MenuOS
1、启动Linux内核
cd LinuxKernel
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
2、内核启动完成进入menu程序,支持三个命令quit、version、help
3、ipc和进程通信相关的目录
第三节 跟踪调试Linux的内核启动过程
一、使用gdb跟踪调试Linux内核的方法
1、qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
#-S:在CPU初始化之前将其冻结起来
#-s:在-gdb tcp::1234端口上创建了一个gdbserver(若不想1234端口,可以使用-gdb tcp:xxxx)
2、另外打开一个shell窗口,就可以使用gdb (使用水平分割)
(gdb)file linux-3.18.6/vmlinux #将带有符号表对应的内核镜像加载进来
(gdb)target remote:1234 #建立与gdbserver之间的链接(按C让qemu上的Linux解除冻结状态,继续运行)
(gdb)break start_kernel #设置断点,跟踪内核(可以在target remote之前,也可以在其之后),按C让qemu上的Linux解除冻结状态,继续运行至start_kernel
(gdb)list #可以看到start_kernel附近的代码
二、简单分析start_kernel
1、在init/main.c代码中找到start_kernel

其中第510行的init_task即手工创建的PCB,0号进程即最终的idle进程
2、不管分析内核的哪一部分都会涉及到start_kernel
3、trap init:初始化中断向量,mm init资源管理初始化,sched init进程调度初始化
4、rest init:其他中断,其中包括kernel_thread(kernel_init),就是start_kernel从内核已启动是就一直存在的0号进程
5、kernel_init中有run_init_process,run_init_process创建了一号进程,默认路径下的程序 init_process 一号进程默认的
6、CPU_idle_loop:当系统没有进程需要执行时就调度到idle进程
总结:
在这周的学习中,我们首先复习了计算机有三个法宝:存储程序计算机、函数调用堆栈、中断,操作系统有两把剑:中断上下文的切换(保存现场和恢复现场)和进程上下文的切换。此外,我们这周还跟踪调试Linux的内核启动过程。关于idle进程,内核启动完毕后,会进入CPU_idle_loop循环,当系统没有进程需要执行时就调度到idle进程;关于1号进程,rest_init()中有kernel_thread,其中包括kernel_init,kernel_init中有run_init_process,创建了一号进程。通过这周的学习,我们对Linux内核有了进一步的了解。
《Linux内核分析》第三周学习报告的更多相关文章
- 《Linux内核分析》第二周学习报告
<Linux内核分析>第二周学习报告 ——操作系统是如何工作的 姓名:王玮怡 学号:20135116 第一节 函数调用堆栈 一.三个法宝 二.深入理解函数调用堆栈 三.参数传递与局部变量 ...
- LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS
LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163. ...
- Linux内核分析第三周学习笔记
linux内核分析第三周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...
- 20135320赵瀚青LINUX内核分析第三周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周是学习的主要是构造 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- Linux内核分析——第三周学习笔记
20135313吴子怡.北京电子科技学院 chapter1 知识点梳理 一.Linux内核源代码简介 (视频中对目录下的文件进行了简介,记录如下) arch目录 占有相当庞大的空间 arch/x86目 ...
- 《Linux内核分析》第一周学习报告
第一周:计算机是如何工作的 姓名:王玮怡 学号:20135116 第一节 存储程序计算机工作模型(冯诺依曼体系结构) IP指向的内存地址,取指令执行,完成后,IP值自加一,取下一条指令再执行. AP ...
- Linux内核分析——第三周学习笔记20135308
第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...
- Linux内核分析第三周学习总结
Linux内核源码简介 arch/ 该目录中包含和硬件体系结构相关的代码,每种平台占一个相应的目录. 和32位PC相关的代码存放在x86目录下. 每种平台至少包含3个子目录:kernel(存放支持体系 ...
随机推荐
- 水壶-[Kruskal重构树] [解题报告]
水壶 本来从不写针对某题的题解,但因为自己实在是太蠢了,这道题也神TM的恶心,于是就写篇博客纪念一下 H水壶 时间限制 : 50000 MS 空间限制 : 565536 KB 评测说明 : 2s,51 ...
- 死磕nginx系列-nginx日志配置
nginx access日志配置 access_log日志配置 access_log用来定义日志级别,日志位置.语法如下: 日志级别: debug > info > notice > ...
- Centos7 Nginx 开机启动
Centos 系统服务脚本目录: 用户(user) 用户登录后才能运行的程序,存在用户(user) /usr/lib/systemd/ 系统(system) 如需要开机没有登陆情况下就能运行的程序,存 ...
- Guava 的EventBus示例代码(简单笔记,后期补充)
package guavademo.event.bus; import com.google.common.eventbus.EventBus; import com.google.common.ev ...
- Spark项目之电商用户行为分析大数据平台之(三)大数据集群的搭建
Zookeeper集群搭建 http://www.cnblogs.com/qingyunzong/p/8619184.html Hadoop集群搭建 http://www.cnblogs.com/qi ...
- php的匿名函数和闭包函数
php的匿名函数和闭包函数 tags: 匿名函数 闭包函数 php闭包函数 php匿名函数 function use 引言:匿名函数和闭包函数都不是特别高深的知识,但是很多刚入门的朋友却总是很困惑,因 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- P2157 [SDOI2009]学校食堂Dining
题目描述 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴.当然,不同的人口味也不一定相同,但每个人的口味都可以用一个非负整数 ...
- 开关电源五种PWM反馈控制模式
开关电源五种PWM反馈控制模式 来源:--作者:--浏览:178时间:2016-08-10 14:18 关键词: 1 引言 PWM开关稳压或稳流电源基本工作原理就是在输入电压变化.内部参数变化.外接负 ...
- cf244D. Match & Catch 字符串hash (模板)或 后缀数组。。。
D. Match & Catch 能够用各种方法做.字符串hash.后缀数组,dp.拓展kmp,字典树.. . 字符串hash(模板) http://blog.csdn.net/gdujian ...