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

第八周
阅读学习教材「庖丁解牛Linux 分析 」第8章,有问题优先使用chatgpt等AI工具。或者到蓝墨云班课中提问,24小时内回复,鼓励解答别人问题,提问前请阅读「如何提问」。

教材深入学习关注豆列「Linux内核及安全」。

学习蓝墨云班课中第八周视频「Linux内核的实质和Linux系统的一般执行过程」,并完成实验楼上配套实验七。,注意从下往上看。基于树莓派或其他平台完成ARM相关内容。

在本周日晚12:00前发学习博客(标题 学号《Linux内核原理与分析》第八周作业),重点是遇到的问题和解决方案内容涵盖教材学习和视频,格式用Markdown。不按时交作业会扣分。



























































































一:ELF概述:

ELF即可执行的和可链接的格式。ELF格式的文件用于存储Linux程序。ELF是一种对象文件的格式,用于定义不同类型的对象文件中都有什么内容、以什么样的格式方这些内容。

ELF文件的3种类型:
1.可重定位文件;在编译Linux内核时,每个内核源代码.c文件都会生成一个同名的.o文件,该文件即为可重定位目标文件,最后所有.o文件会链接为一个文件,即Linux内核

2.可执行文件;一般有多个可重定位文件结合生成。

3.共享目标文件;指可以被可执行文件或其他库文件使用的目标文件。

ELF文件的作用:

ELF文件参与程序的链接和程序的运行

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

1.首先打开实验楼,进入LinuxKernel目录下,进入menu目录

在这里插入图片描述
然后使用make rootfs
在这里插入图片描述

2.查看test.c文件,查看更新后的exec函数,如下图:

在这里插入图片描述
输入help,可以发现exec
在这里插入图片描述

3.输入以下指令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s,打开qemu界面进入暂停状态:
在这里插入图片描述
再次打开一个终端界面,进入LinuxKernel文件夹下,输入gdb,连接vmlinux文件,在sys_execve、load_elf_binary和b start_thread处设置断点

在这里插入图片描述
在这里插入图片描述
4、查看hello(ELF文件)的头部信息

readelf -h hello

在这里插入图片描述

特别关注新的可执行程序是从哪里开始执行的?
execve系统调用启动新可执行程序,首先加载可执行文件,解析其结构,分配内存,设置环境,最后跳转到入口点。无论是静态链接还是动态链接的程序,都经过相似的初始化过程,确保程序能在独立的环境中运行。静态链接程序包含所有代码和数据,而动态链接程序依赖于共享库。这些差异影响内存布局和可执行文件大小,但都不妨碍程序在execve返回后成功执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值