《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内核分析》第三周学习报告的更多相关文章

  1. 《Linux内核分析》第二周学习报告

    <Linux内核分析>第二周学习报告 ——操作系统是如何工作的 姓名:王玮怡  学号:20135116 第一节 函数调用堆栈 一.三个法宝 二.深入理解函数调用堆栈 三.参数传递与局部变量 ...

  2. LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS

    LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163. ...

  3. Linux内核分析第三周学习笔记

    linux内核分析第三周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

  5. 20135320赵瀚青LINUX内核分析第三周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周是学习的主要是构造 ...

  6. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  7. Linux内核分析——第三周学习笔记

    20135313吴子怡.北京电子科技学院 chapter1 知识点梳理 一.Linux内核源代码简介 (视频中对目录下的文件进行了简介,记录如下) arch目录 占有相当庞大的空间 arch/x86目 ...

  8. 《Linux内核分析》第一周学习报告

    第一周:计算机是如何工作的 姓名:王玮怡  学号:20135116 第一节 存储程序计算机工作模型(冯诺依曼体系结构) IP指向的内存地址,取指令执行,完成后,IP值自加一,取下一条指令再执行. AP ...

  9. Linux内核分析——第三周学习笔记20135308

    第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...

  10. Linux内核分析第三周学习总结

    Linux内核源码简介 arch/ 该目录中包含和硬件体系结构相关的代码,每种平台占一个相应的目录. 和32位PC相关的代码存放在x86目录下. 每种平台至少包含3个子目录:kernel(存放支持体系 ...

随机推荐

  1. 使用Socket开发http服务器时碰到的问题及处理方法

    1. 前言 ​ 最近正在为QA测试开发压力测试框架,要为测试人员提供一个结果的图形化表示界面.为了展示数据的及时性,不得不使用lua语言实现一个http服务器.由于http服务需要提供的服务比较简单 ...

  2. ArcGIS API for JS4.7加载FeatureLayer,点击弹出信息并高亮显示

    我加载的是ArcGIS Server本地发布的FeatureService,ArcGIS API for JS4.7记载FeatureLayer时,在二维需要通过代码启用WebGL渲染,在三维模式下, ...

  3. Articulate Presenter文字乱码的排除

    Articulate Presenter乱码的问题如何设置? 字体乱码的设置: 1.首先如果ppt中有中文内容,肯定需要将Articulate Presenter的Character Set设置为No ...

  4. Drool实战系列(二)之eclipse安装drools插件

    这里演示是drools7.5.0,大家可以根据自己需要安装不同的drools版本 drools安装地址: http://download.jboss.org/drools/release/ 一. 二. ...

  5. 【转】Python 可视化神器-Plotly Express

    转自:https://mp.weixin.qq.com/s/FNpNJSMK5Vs8pwi0PbbBzw 说明:图片无法直接复制,请查看原文 导读:Plotly Express 是一个新的高级 Pyt ...

  6. -bash: fork: retry: Resource temporarily unavailable;centos6.5

    Last login: Wed Jun 18 14:04:11 2014 from 1.1.1.135 -bash: fork: retry: Resource temporarily unavail ...

  7. VBA读取、增加自定义和修改文档属性

    读取系统文档属性 Sub read()On Error Resume Nextrw = 1Worksheets(1).ActivateFor Each p In ActiveWorkbook.Buil ...

  8. ISCSI工作流程target和initiator

    随着企业级的数据呈指数增长,传统的集中式存储方案已无法满足其存储要求,因而存储区域网(storage area network,SAN)技术被广泛应用,但其存在距离短.价格贵和构建复杂等不足.基于iS ...

  9. Delphi 7~XE系列升级安装Indy10.6

    由于低版本Indy无法满足网络技术的日益更新,如SSL/TLS请求.RawHeaders与Cookie管理等问题处理. 我本身一直在用Delphi 2007,因为D2009开始底层的编码已不同,旧项目 ...

  10. Android WebView漏洞(转)

    一.漏洞描述 近期,微信等多款安卓流行应用曝出高危挂马漏洞:只要点击好友消息或朋友圈中的一条网址,手机就会自动执行黑客指令,出现被安装恶意扣费软件.向好友 发送欺诈短信.通讯录和短信被窃取等严重后果. ...