2023-2024-1 20232826《Linux内核原理与分析》第八周作业

20232826王朝昆 20232826王朝昆 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

Linux 内核如何装载和启动一个可执行程

 

 

1. 《庖丁解牛Linux分析》第八章AI问答 

                        

 

                       

 

2. 实验过程及分析

(1)将menu目录删除,使用git克隆一个新的menu目录。

cd ~/LinuxeKernel/
rm -rf menu
git clone https://github.com/mengning/menu.git

(2)将test_exec.c将test.c覆盖,重新编译rootfs。查看代码发现,除了增加execlp函数之外,还在Makefile中编译了hello.c,然后在生成跟文件系统时把init和hello都放到rootfs.img中。在这个实验中,hello就是一个加载进来的可执行文件。

mv test_exec.c test.c
make roofts

                

(3)使用help命令可以看到增加了exec指令,执行exec指令发现比fork指令增加了一行输出“hello world!”。实际上是新加载了一个可执行程序来输出了一行语句。

                       

(4)启动内核到调试的状态,加载符号并设置端口,准备单步调试。

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

                      

(5)启动新的终端窗口开始gdb调试

cd ~/LinuxKernel/
gdb
file linux-3.18.6/vmlinux
target remote:1234

                         

(6)设置断点到sys_exec、load_elf_binary、start_thread

b sys_execve
b load_elf_binary
b start_thread

                       

 

(7)使用命令c继续执行发现执行到load_elf_binary处,在继续执行发现执行到start_thread处,继续单步执行,可以看到加载新可执行程序的一系列数据,并构造新的代码段。

                     

 分析:

(1)查看hello(ELF文件)的头部信息

                           

(2)ELF文件格式

ELF文件是一种用于二进制文件、可执行文件、目标代码、共享库和core转存格式文件。是UNIX系统实验室(USL)作为应用程序二进制接口而开发和发布的,也是Linux的主要可执行文件格式。


ELF主要分为四种类型:
1)可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据,即 xxx.o 文件。

2)可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了 exec() 如何创建一个程序的进程映像,即 a.out文件。

3)共享目标文件(Shared Object File) 包含可在两种上下文中链接的代码和数据。首先链接编辑器可以将它和其它可重定位文件和共享目标文件一起处理,生成另外一个目标文件。其次,动态链接器(Dynamic Linker)可能将它与某个可执行文件以及其它共享目标一起组合,创建进程映像,即 xxx.so文件。

4)内核转储(core dumps),存放当前进程的执行上下文,用于dump信号触发。

 

...全文

相关推荐

CheckOutOfDateMrpSteps.py00000

CheckOutOfDateMrpSteps.py00000

大助794

驱动精灵(驱动精灵家用标准版)

1. 硬件扫描 + 驱动匹配 识别声卡、网卡、显卡、芯片组、打印机、外设,找出缺失 / 异常 / 旧驱动,按硬件 ID 匹配驱动包;适合新装系统、设备管理器黄感叹号。 2. 驱动备份 & 一键还原 装机前备份整套驱动,重装系统后直接恢复,不用重新下载;支持导出独立备份包。 3. 驱动卸载、回滚、清理 删掉冲突旧驱动、残留驱动文件;更新翻车可以回退上一版驱动,解决蓝屏、花屏、无声音。 4. 硬件信息查看 CPU、主板、硬盘、内存、显卡基础信息,附带简单温度监控。 5. 附带小工具 网卡修复、音频修复、DirectX 修复、系统组件修复。

YYcsdn56

产业园区运营负责人如何利用数智工具提升企业创新服务能力?.docx

产业园区运营负责人如何利用数智工具提升企业创新服务能力?

BIZKEEN

年会抽奖网页程序2026

用于年会抽奖

洲上渔者

基于模糊PID与传统PID控制无刷直流电机对比仿真模型【说明文档+参考文献等】

内容概要:本文介绍了一套基于Simulink的无刷直流电机(BLDC)控制系统仿真模型资源,重点对比了模糊PID与传统PID控制策略在电机调速中的性能差异。资源包含多个仿真模型,涵盖模糊PID控制、传统PID控制、无位置传感器控制、滑模观测器以及转速电流双闭环PI控制等,总计三个核心仿真系统。通过建模仿真,用户可深入理解不同控制算法在无刷直流电机系统中的动态响应、抗干扰能力、稳定性及控制精度表现。文档提供了详尽的说明材料、参考文献和实现代码,尤其突出了模糊PID相较于传统PID在非线性、时变系统中更强的自适应调节能力。此外,资源还涉及无感控制与滑模观测器的设计,有助于掌握现代电机控制中的先进观测与估算技术,适用于电力电子、电机控制及相关领域的科研与教学实践。 适合人群:从事电机控制、电力电子、自动化、电气工程等专业的科研人员、研究生及高年级本科生,以及工业界从事电机驱动系统开发的工程师和技术人员。 使用场景及目标:①研究模糊PID与传统PID在无刷直流电机调速系统中的控制性能差异,分析其超调量、响应速度与稳态精度;②学习并掌握无位置传感器控制与滑模观测器的设计原理与实现方法,提升对电机状态估计技术的理解;③开展转速电流双闭环控制系统的建模与仿真,支持学术论文复现、课程设计与创新控制算法的验证与优化。 阅读建议:建议结合提供的说明文档与参考文献,按照模块逐步运行各仿真模型,重点关注控制参数调节对系统动态性能的影响;通过对比模糊PID与传统PID的仿真结果,深入理解智能控制策略的优势;在学习过程中应动手修改参数、尝试算法改进,并通过示波器观察波形变化,以增强对控制理论与工程实践结合的理解。

梦想科研社_研学
评论
收藏 已收藏
分享
返回顶部