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

20232826王朝昆 2023-11-10 08:02:24

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信号触发。

 

...全文
479 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文针对交直流混合数据中心园区的能源供应与算力资源协同问题,提出了一种多源-算力协同供电协调规划方法。该方法深度融合电力系统与信息计算系统,综合考虑光伏、风电、市电等多种能源形式与算力负载的时空耦合特性,通过构建多目标优化模型实现能源供给与算力需求的动态匹配与联合优化。研究设计了兼顾经济性、能效性与供电可靠性的综合评价体系,并采用Matlab进行建模仿真,对不同运行场景下的规划方案进行了对比分析,有效验证了所提方法在降低综合运营成本、提升能源利用效率和增强系统韧性的优越性能。; 适合人群:具备电力系统、能源管理、计算机系统或自动化等相关专业背景,从事数据中心、综合能源系统(IES)、新能源优化、算力网络等交叉领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为交直流混合架构的数据中心园区提供科学合理的多能协同供电与算力资源联合规划方案;②实现算力任务调度与多源供电策略的深度协调优化,最大化可再生能源消纳,提升整体能源效率与系统运行可靠性;③为其他涉及“能源-信息”深度融合的综合能源系统优化调度研究提供理论参考与Matlab代码实现基础。; 阅读建议:本文是典型的跨学科交叉研究,阅读时应重点关注其多目标优化建模的构建逻辑、多源-算力协同机制的设计原理以及目标函数与约束条件的数学表达。建议结合所提供的Matlab代码,动手复现仿真过程,深入理解模型求解细节,从而更好地掌握该方法的核心思想,并尝试将其迁移应用于自身相关的优化问题研究中。

39

社区成员

发帖
与我相关
我的任务
社区描述
北京电子科技学院 《Linux内核原理与分析》课程
linuxarm开发系统安全 高校 北京·丰台区
社区管理员
  • rocflytosky
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧