欢迎来到天天文库
浏览记录
ID:62553948
大小:56.92 KB
页数:5页
时间:2021-05-12
《计算机操作系统实验_解析ELF文件.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、精品文档西北工业大学操作系统实验实验报告一、实验目的熟悉可执行链接文件(ELF)的结构,了解GeekOS等ELF格式的可执行程序加载到内存,建立内核线程并运行的实现技术。二、实验要求1.修改Projectl项目中的/GeekOS/elf.c文件:在函数Parse_ELF_Executable()中添加代码,分析ELF格式的可执行文件(包括分析得出ELF文件头、程序头),获取可执行文件长度、代码段、数据段等信息,并打印输出。并且,填充Exe_Format数据结构中的值域。2.掌握GeekOSft核心态运行可执行程序的原理,绘制出可执行程序在内核中加载、运行的流程图(需反映关键函数的
2、调用关系)。3.回答实验讲义P125页的思考题。三、实验过程及结果1、修改Projectl项目中的/GeekOS/elf.c文件:在函数Parse_ELF_Executable()中添加代码,分析ELF格式的可执行文件(包括分析得出ELF文件头、程序头),获取可执行文件长度、代码段、数据段等信息,并打印输出。并且,填充Exe_Format数据结构中的值域。答:修改Project1项目中的/GeekOS/elf.c文件:在函数Parse_ELF_Executable()中添加代码,如下:==============elf.c===================intParse_E
3、LF_Executable(char*exeFileData,ulong_texeFileLength,structExe_Format*exeFormat){inti;elfHeader*head=(elfHeader*)exeFileData;programHeader*proHeader=(programHeader*)(exeFileData+head->phoff);KASSERT(exeFileData!=NULL);KASSERT(exeFileLength>head->ehsize+head->phentsize*head->phnum);KASSERT(head
4、->entry%4==0);exeFormat->numSegments=head->phnum;.。1欢迎下载精品文档exeFormat->entryAddr=head->entry;for(i=0;iphnum;i++){exeFormat->segmentList[i].offsetInFile=proHeader->offset;exeFormat->segmentList[i].lengthInFile=proHeader->fileSize;exeFormat->segmentList[i].startAddress=proHeader->vaddr;e
5、xeFormat->segmentList[i].sizeInMemory=proHeader->memSize;exeFormat->segmentList[i].protFlags=proHeader->flags;proHeader++;}return0;}==============elf.c===================运行结果如图:T•Bwhsemufatar,http;//bochs.sourceforge,net/F*in;HI18192KBmemorydetected1670patfesinfreeHst1948576bytesinkerneIheapI
6、nitializingIDT...
7、Initiali^ingtimer...belayloop:"641iterationspertickllnitiallzIngkeyboard.4.ilnitia1izin^DMAControIler...Initializingfloppycontroller,..fdO:tyIheads=2,secttjrs=18initializingIDEcantroIler...ide0:ug】=4露heads=B,sectors=63HnuntedflesystBMfWeIcofhetoGeekOS!StartingtheHiHiHiIlfTT
8、his*ThisisTThisisSpawnerthread...thefirststringthesecondstringthethird(andlast)stringyouseethifyou'rchappy2、掌握GeekOSS核心态运行可执行程序的原理,绘制出可执行程序在内核中加载、运行的流程图(需反映关键函数的调用关系)。答:ELF(Executableandlinkingformat)文件是UNIX系统实验室作为应用程序二进制接口而开发的可执行文件,是x86Linux
此文档下载收益归作者所有