首页 > 系统服务 > 详细

《Linux内核分析》第三周学习报告

时间:2016-03-11 20:35:19      阅读:264      评论:0      收藏:0      [点我收藏+]

《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内核分析》第三周学习报告

原文:http://www.cnblogs.com/wwy-20135116/p/5265363.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!