首页 技术 正文
技术 2022年11月9日
0 收藏 901 点赞 4,715 浏览 1081 个字

郝智宇 无转载 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

第三周

构造一个简单的Linux系统MenuOS

一、Linux内核源代码简介

  1. 三个法宝和两把宝剑:

(1)       三个法宝:存储程序计算机、函数调用堆栈、终断

(2)       操作系统的两把宝剑:中断上下文的切换(保存现场和恢复现场)、进程上下文的切换

  1. arch/x86目录下的代码是我们重点关注的
  2. 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS
  3. init目录:内核启动相关的代码基本都在init目录下

main.c在init目录中

4. kernel:  start_kernel函数相当于普通C程序的main函数

Linux内核的核心代码在kernel目录中

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

二、构造一个简单的Linux系统MenuOS

  1. Init是第一个用户态进程,是1号进程
  2. 用实验楼构造

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

有关help命令的参数与说明:

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

三、跟踪调试Linux内核的启动过程

1.使用gdb跟踪调试Linux内核的方法:

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明:
    // -S freeze CPU at startup
(use ’c’ to start execution) cpu初始化之前把它冻结起来
    // -s shorthand for -gdb
tcp::1234 在1234端口上建立了一个gdb
server
     若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项

结果:

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

另开一个shell窗口:

输入gdb,打开;加载符号表;连接到刚刚被冻结的Linux系统;设置断点

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

输入c继续执行:

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

输入list查看断点处的代码:

《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

2.简单分析一下start_kernel

init_task即手工创建的,0号进程即最终的idle进程

不管分析内核的哪一部分都会涉及到start_kernel

当系统没有进程需要执行时就调度到idle进程

一、总结

对Linux系统启动过程的理解:

有一个全局变量init_task,即手工创建的PCB,0号进程,即最终的idle进程。Kernelthread是0号进程,它创建了1号进程kernelinit,以及它的一些服务的内核线程,

这样整个系统启动起来了。

        rest_init()中有kernel_thread(kernel_init,NULL,CLONE_FS)
    kernel_init中有run_init_process,
    run_init_process创建了1号进程

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295