社区
BESTI.Linux内核原理与分析
作业
帖子详情
《Linux内核原理与分析》第八周作业
娄老师
2021-11-14 08:56:40
完成
《Linux内核原理与分析》教学进程
中第八周的任务。
...全文
976
回复
打赏
收藏
《Linux内核原理与分析》第八周作业
完成《Linux内核原理与分析》教学进程中第八周的任务。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
0人已提交
完成率0%
提交任务
暂无数据
暂无数据
提交任务
修改积分
请选择导出文件
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
20242803《
Linux
内核
原理
与
分析
》
第八
周
作业
当execve系统调用返回时,返回新的可执行程序的执行起点(main函数),所以execve系统调用返回后新的可执行程序能顺利执行。新的可执行程序通过修改
内核
堆栈eip作为新程序的起点,从new_ip开始执行后start_thread把返回到用户态的位置从int 0x80的下一条指令变成新加载的可执行文件的入口位置。int Exec(int argc, char *argv[]):函数定义,函数名为Exec,它接受两个参数:整数argc(命令行参数的数量)和字符指针数组argv(命令行参数的值)。
2024-2025-1 20242828《
Linux
内核
原理
与
分析
》
第八
周
作业
在
Linux
中,exec函数族的作用是根据指定的文件名找到可执行文件,并用它来替换调用进程的内容。这意味着当前进程的可执行文件被完全替换为新的可执行文件。可执行文件的开始执行起点是根据执行execve系统调用时压入
内核
堆栈的EIP寄存器的值来确定的。尽管进程的可执行文件已经被替换,但实际开始执行新的可执行文件中的指令需要等到执行新程序定义的入口地址位置,通常是0x8048xx。通过修改
内核
堆栈中EIP寄存器的值,将其设置为新程序的起点,使得execve系统调用返回到用户态时可以开始执行新程序。
20242807《
Linux
内核
原理
与
分析
》
第八
周
作业
整个流程展示了静态链接和动态加载库的组合使用,增强了程序的灵活性。操作系统将负责把需要的动态库加载到内存中,然后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库去执行代码,最终达到运行时链接的目的。因此,对于动态链接的程序来说,execve 返回时包含一个额外的动态链接器初始化步骤,之后才进入程序的执行。execve 返回后,新的可执行程序之所以能顺利执行,是因为它在替换地址空间后,将控制权转交给新程序的入口地址,并清除了原有程序的资源,使新的程序可以从一个干净的、符合预期的状态开始运行。
20252803《
Linux
内核
原理
与
分析
》
第八
周
作业
阅读学习教材「庖丁解牛
Linux
操作系统
分析
」第8章,有问题优先使用chatgpt等AI工具。或者到蓝墨云班课中提问,24小时内回复,鼓励解答别人问题,提问前请阅读「如何提问」。教材深入学习关注豆列「
Linux
内核
及安全」。学习蓝墨云班课中
第八
周
视频「
Linux
内核
的实质和
Linux
系统的一般执行过程」,并完成实验楼上配套实验七。,注意从下往上看。基于树莓派或其他平台完成ARM相关内容。
20242811《
Linux
内核
原理
与
分析
》
第八
周
作业
3、使用 gdb 跟踪
分析
一个 execve 系统调用
内核
处理函数 sys_execve ,验证您对
Linux
系统加载可执行程序所需处理过程的理解,详细内容参考本
周
第三节;对于静态链接的可执行程序和动态链接的可执行程序 execve 系统调用返回时会有什么不同?2、编程使用 exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式,详细内容参3考本
周
第二节;1、理解编译链接的过程和 ELF 可执行文件格式,详细内容参考本
周
第一节;
BESTI.Linux内核原理与分析
31
社区成员
13
社区内容
发帖
与我相关
我的任务
BESTI.Linux内核原理与分析
北京电子科技学院 《Linux内核原理与分析》课程
复制链接
扫一扫
分享
社区描述
北京电子科技学院 《Linux内核原理与分析》课程
linux
高校
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章