(2023-2024-1)20232811《Linux内核原理分析与设计》第八周作业
目录
一、实验七:装载和启动可执行程序
1.使用“exec库函数”加载一个可执行文件
在实验楼的终端中执行以下命令,发现test.c文件中新增“exec”命令:
cd LinuxKernel
rm -rf menu
git clone https://github.com/mengning/menu.git
# 克隆失败执行该命令
# git config --global http.sslVerify false
cd menu
mv test_exec.c test.c
vi test.c
返回menu文件夹 ,编译运行
make roofs
查看exec函数实现:

可以看到,Exec函数使用了fork()和execlp()等系统调用。
- 函数定义了一个名为Exec的函数,它接受两个参数:argc表示命令行参数的数量,argv是一个指向参数字符串数组的指针。
- 函数中使用了fork()系统调用来创建一个新的进程。fork()会复制当前进程,创建一个新的子进程。在原始进程中,fork()返回子进程的进程ID(pid),而在子进程中,fork()返回0。
- 通过检查fork()的返回值,可以确定当前代码是在父进程还是子进程中执行。
- 如果fork()返回值小于0,表示创建子进程失败,程序会打印错误信息并退出。
- 如果fork()返回值等于0,表示当前代码在子进程中执行。子进程会输出一条信息 “This is Child Process!,然后使用execlp()系统调用执行名为”/hello"的可执行文件。
- 如果fork()返回值大于0,表示当前代码在父进程中执行。父进程会输出一条信息 “This is Parent Process!”,然后使用wait()系统调用等待子进程的结束。
- 当子进程执行完毕后,父进程会继续执行,并输出一条信息 “Child Complete!”。
总体来说,这个函数创建了一个子进程,并在子进程中执行了一个名为"/hello"的程序。父进程等待子进程执行完毕后才继续执行。
2. 通过gdb进行跟踪分析
回退到父目录,使用下面的命令启动内核并在CPU运行代码前停下以便调试:
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
打开一个新的终端窗口,依次使用下面的命令启动gdb调试:
gdb
file linux-3.18.6/vmlinux
target remote:1234
在系统调用sys_execve的入口处设置断点:
b sys_execve
继续运行程序,在QEMU窗口中输入exec,系统就会停在上面设置的断点处:

继续设置以下断点,可完整跟踪进程的创建和启动代码:
b load_elf_binary
b start_thread
二、相关知识及问答

三、实验总结
exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件,如果不是可以执行的文件,那么就解释成为一个shell文件,shell执行。当Linux内核或程序使用fork函数创建子进程后,子进程往往要调用一种exec函数(exec家族的一种)以执行另一个程序;在调用一种exec函数时,该进程执行的程序完全被替换为新程序,而新程序则从其main函数处开始执行,因为调用exec函数并不创建新进程,所以前后的进程ID并未改变,或者说exec函数只是用了一个全新的程序替换了当前进程的正文、数据段和堆栈段
相关推荐
不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略(Simulink仿真实现)
内容概要:本文围绕不平衡电网条件下的无功补偿问题,重点研究了基于级联H桥结构的静止无功发生器(SVG/STATCOM)的控制策略。通过Simulink仿真平台,构建了完整的系统模型,并采用三层控制架构实现精确的无功电流跟踪与直流侧电压稳定控制。该策略兼顾了系统动态响应速度与稳态补偿精度,有效解决了电网电压不平衡所导致的电流畸变、功率波动等问题,显著提升了SVG在复杂工况下的运行性能与鲁棒性。; 适合人群:从事电力电子、电能质量治理、新能源并网等领域的科研人员及电气工程专业的高年级本科生、研究生。; 使用场景及目标:① 掌握级联H桥SVG在不平衡电网下的工作原理与建模方法;② 学习并实现适用于实际工程的多层协同控制策略;③ 通过仿真验证控制算法的有效性,为后续硬件实验或工程应用提供理论支撑。; 阅读建议:建议结合Simulink仿真模型同步学习,重点关注控制器参数设计、坐标变换逻辑与各控制层之间的信号交互关系,有条件者可进一步拓展至硬件在环(HIL)测试以验证实际控制效果。
国央企创新负责人如何通过智能体提升企业技术需求挖掘与精准匹配能力?.docx
国央企创新负责人如何通过智能体提升企业技术需求挖掘与精准匹配能力?
【电力变压器故障诊断的组合DGA方法】基于k均值聚类和支持向量机的电力变压器故障诊断的组合技术研究(Matlab代码实现)
内容概要:本文研究了一种基于k均值聚类和支持向量机(SVM)的组合技术,用于电力变压器故障诊断,采用溶解气体分析(DGA)方法。通过Matlab代码实现该组合模型,首先利用k均值聚类对变压器油中溶解气体数据进行初步分类,挖掘潜在的故障模式分布,再结合支持向量机进行精确故障类型识别,有效提升了诊断的准确性与自动化水平。研究涵盖模型构建、算法实现、实验验证及结果分析全过程,充分展示了该组合方法在处理复杂、非线性DGA数据方面的优越性能。; 适合人群:具备电力系统基础知识和一定Matlab编程能力的高校研究生、科研人员及电力行业从事设备状态监测与故障诊断的工程技术人员。; 使用场景及目标:①应用于电力系统中变压器早期故障预警与智能诊断;②为相关科研提供基于机器学习的DGA分析方法参考;③目标是提高传统DGA方法的诊断精度,减少误判漏判,实现变压器故障的高效、智能识别。; 阅读建议:读者应结合Matlab代码与文中原理讲解进行对照学习,重点关注k均值聚类的预处理作用与SVM分类器的设计细节,并建议复现实验以深入理解算法参数对诊断性能的影响。
产业园区运营负责人如何提升园区内企业技术需求与高校科研成果的精准对接效率?.docx
产业园区运营负责人如何提升园区内企业技术需求与高校科研成果的精准对接效率?
飞轮储能系统机侧PQ控制+网侧变流器恒压双闭环控制【附参考文献】
内容概要:本文提出了一种针对含分布式电源的配电网在发生多线路故障后的多时段故障恢复优化模型,重点实现了网络重构与孤岛划分的协同优化。该模型以最小化网损和甩负荷惩罚为双重目标,采用混合整数二阶锥规划(MISOCP)方法进行求解。通过引入虚拟流理论确保供电孤岛内部的连通性,并利用二阶锥松弛技术将非线性的潮流方程转化为凸优化问题,显著提升了计算效率与求解可行性。模型在IEEE 33节点系统上进行了仿真验证,能够根据检修进度动态调整恢复策略,逐时段生成最优的开关操作方案与负荷恢复计划,有效提高了配电网在极端事件下的韧性与供电恢复能力。此外,该模型统一考虑了故障修复时序、拓扑连通性、电压安全约束与辐射状结构要求,具备较强的工程应用潜力。; 适合人群:电力系统、自动化、电气工程等相关专业的研究生、科研人员及从事配电网规划、运行与恢复策略研究的工程师。; 使用场景及目标:①研究配电网在自然灾害或人为破坏等极端情况下的多时段故障恢复策略;②实现孤岛划分与网络重构的协同优化,提升关键负荷的供电恢复率;③掌握基于二阶锥松弛与虚拟流建模的先进优化方法,用于处理非线性潮流约束与拓扑连通性建模问题。; 阅读建议:本文理论性强,建模过程复杂,建议读者结合文中引用的参考文献及提供的MATLAB/YALMIP代码实现进行复现实验,重点关注虚拟流在网络连通性建模中的作用、二阶锥松弛的构造逻辑以及多时段动态优化框架的设计思路,以便深入理解模型的数学本质与工程适用性。


