IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 2021-2022-1 20212810《Linux内核原理与分析》第四周作业 -> 正文阅读

[系统运维]2021-2022-1 20212810《Linux内核原理与分析》第四周作业

跟踪分析 Linux 内核的启动过程

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

使用实验楼的虚拟机打开 shell,执行该命令
请添加图片描述
请添加图片描述
执行后如图所示

二、使用gdb跟踪调试Linux内核的方法

1、使用 gdb 跟踪调试内核

执行以下指令

$ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

关于-s和-S选项的说明:

  1. -S
    -S freeze CPU at startup (use ’c’ to start execution)
  2. -s
    -s shorthand for -gdb tcp::1234
    若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项

请添加图片描述
执行后结果如上图所示

2、另开一个 shell 窗口,设置断点

另开一个shell窗口,执行以下指令:

打开 GDB 调试器
$ gdb

(gdb)file linux-3.18.6/vmlinux

(gdb)target remote:1234

(gdb)break start_kernel

请添加图片描述
按c系统开始执行到断点处暂停,如图所示:
请添加图片描述
此时执行到start_kernel的位置。
使用list命令,可以看到start_kernel上下的代码:请添加图片描述
在rest_init处设置断点,如图所示:请添加图片描述
用list来看代码:
请添加图片描述

三、简单分析 start_kernel 函数的执行过程

start_kernel里的main.c :内核启动的起点
start_kernel里的init_task变量:在这进行初始
init_task():几乎涵盖了内核的所有主要模块
sched_init():初始化调度模块
build_all_zonelists():初始化内存管理
page_alloc_init():初始化伙伴系统分配程序
trap_init():初始化中断向量
mm_init():初始化内存管理模块
rest_init():启动1号进程
call_cpu_idle:当系统没有进程需要执行的时候就调用idle进程

四、总结和问题

mian.c中没有main函数,start_kernel()相当于c语言中的main函数,start_kernel是一切的起点,在此函数被调用前,内核代码主要是用汇编语言写的,用于完成硬件系统的初始化工作,为c代码的运行设置环境。
start_kernel几乎涉及了内核的所有主要模块,如trap_init(),mm_init()等。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:20:35  更:2021-10-17 12:22:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:53:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码