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

 

...全文
337 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文针对复杂威胁环境下多无人机的协同路径规划问题,提出一种基于多段杜宾斯(Dubins)路径的优化方法,旨在实现高动态、高风险场景中无人机群的安全、高效与协同飞行。研究充分考虑无人机的实际飞行约束,如最小转弯半径与连续曲率要求,采用杜宾斯曲线构建平滑且符合动力学特性的路径段,并结合优化算法对多机路径进行协同规划,有效规避静态威胁区域与动态障碍物,避免飞行器间发生碰撞。方案在Matlab平台上完成仿真验证,结果表明该方法能够在城市、军事等复杂环境中实现多无人机系统的路径最短化、能耗最低化、安全性最大化与实时性兼顾的多目标优化,具有较强的工程应用潜力。; 适合人群:具备无人机控制、路径规划或智能优化算法基础的科研人员与工程技术人员,特别适用于自动化、航空航天、机器人及相关领域的研究生、高校教师及工业界研发人员。; 使用场景及目标:①应用于复杂城市、战场等高威胁环境下的多无人机协同任务,如侦察监视、应急救援、集群打击与编队巡航;②为解决多无人机系统中的动态避障、冲突消解、路径平滑与资源协同分配等关键技术问题提供理论依据与算法实现参考;③帮助研究人员深入理解Dubins路径在多智能体协同运动规划中的建模方式与优化机制,推动其在无人系统自主导航中的实际落地。; 阅读建议:建议读者结合提供的Matlab代码深入研读算法实现流程,重点分析威胁建模策略、多机冲突协调机制以及多目标代价函数的设计思路,可通过调整环境参数与优化权重在仿真中观察路径生成效果,从而加深对协同决策、运动学约束与全局优化之间耦合关系的理解。
内容概要:本文围绕“基于飞机配电优化负荷管理系统研究”展开,利用Matlab代码实现相关建模仿真与优化分析,旨在提升飞机配电系统的效率与可靠性。研究重点针对飞机电力系统中的动态负荷分配问题,构建了综合考虑电源容量限制、负载优先级划分、供电安全性、能量消耗最小化及系统冗余能力的多约束优化模型。通过引入先进智能优化算法对模型进行高效求解,实现了对机载关键与非关键设备的科学化、智能化供电管理。文中详细展示了算法迭代过程、收敛性分析及不同工况下的仿真结果,验证了该方法在降低整体能耗、均衡电力负载、增强系统稳定性以及应对突发用电需求等方面的优越性能,为现代民用与军用航空器电力系统的自主决策与健康管理提供了坚实的理论支撑与可行的技术路径。; 适合人群:具备电力系统、自动化或航空航天工程背景,熟练掌握Matlab编程语言,从事飞机电气系统设计、航空器能源管理、智能优化算法应用或相关领域研究的科研人员、工程师及研究生。; 使用场景及目标:①应用于新型飞机电气系统的设计与仿真验证,优化机载设备的供电策略与能量管理逻辑;②为复杂封闭电力系统(如舰船、空间站)中的负荷调度与应急电源管理提供可借鉴的解决方案,以提升系统整体能效、安全等级与运行韧性。; 阅读建议:建议结合提供的Matlab代码深入理解优化模型的数学建模过程、约束条件的程序化表达及智能算法的具体实现细节,重点关注目标函数的设计思路、权重系数的选取对优化结果的影响,并可尝试将模型拓展至多目标优化、实时滚动优化或考虑设备故障预测的主动负荷管理等更复杂的应用场景。

39

社区成员

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

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