南京大学CSAPP Lab 5-9:ELF加载与监控实验详解

4星 · 超过85%的资源 需积分: 50 17 下载量 141 浏览量 更新于2024-07-18 1 收藏 831KB PDF 举报
南京大学计算机科学与技术系的《计算机系统基础》课程实验手册,专注于lab5-9,即"ELF加载与监控"。该实验旨在帮助学生深入理解ELF(Executable and Linkable Format)可执行文件格式,并通过编写一个简单的静态链接程序加载器来实践相关知识。在实验中,参与者需要实现以下关键点: 1. **目标:** 实现一个静态链接的ELF加载器,而不是动态链接加载器,以避免复杂的GOT地址管理和重定位项处理。这有助于简化实验,让学生专注于基础的ELF结构。 2. **实验流程:** 学生需要在提供的代码目录下执行`make`命令,编译`main.c`文件,生成名为`a.out`的加载器可执行文件。运行方式为`./a.out prog`,其中`prog`是预设的静态链接、无参数的ELF可执行文件。 3. **可执行文件组织:** 加载器需解决可执行文件内部代码和数据的位置问题,包括确定它们在文件中的开始位置、数据量以及程序的入口点。这涉及到对文件结构的理解,如代码区和数据区的区分,以及ELF头部分包含的元数据,如节表和重定位表。 4. **ELF文件格式:** 作为Linux主流的可执行文件格式,ELF提供了一套标准化的方式来组织程序,包括头部、节(section)、重定位表等。理解这些结构对于正确解析和加载ELF文件至关重要。 5. **实验目的:** 通过这个实验,学生不仅可以巩固对ELF格式的认识,还能提升对程序加载过程的理解,以及基本的C/C++编程技能。 在进行实验时,学生需要阅读实验前的文档,理解实验的目标和预期结果,然后逐步分析ELF文件结构,编写和调试加载器代码,确保它能正确地将程序加载到内存并执行。整个过程既锻炼了理论知识的应用,也培养了实际操作和调试能力。完成实验后,学生将对计算机系统的底层工作原理有更深的认识。