电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

计算机操作系统实验_解析ELF文件

5页
  • 卖家[上传人]:cn****1
  • 文档编号:480326164
  • 上传时间:2023-08-18
  • 文档格式:DOCX
  • 文档大小:56.92KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、精品文档西北工业大学操作系统实验实验报告一、实验目的熟悉可执行链接文件(ELF)的结构,了解GeekOS等ELF格式的可执行程序 加载到内存,建立内核线程并运行的实现技术。二、实验要求1 .修改 Projectl 项目中的/GeekOS/elf.c 文件: 在函数 Parse_ELF_Executable()中添加代码,分析ELF格式的可执行文件(包括分析得 出ELF文件头、程序头),获取可执行文件长度、代码段、数据段等信息,并打 印输出。并且,填充Exe_Format数据结构中的值域。2 .掌握GeekOSft核心态运行可执行程序的原理,绘制出可执行程序在内核 中加载、运行的流程图(需反映关键函数的调用关系)。3 .回答实验讲义P125页的思考题。三、实验过程及结果1、修改 Projectl 项目中的 /GeekOS/elf.c 文件:在函数 Parse_ELF_Executable() 中添加代码,分析ELF格式的可执行文件(包括分析得出ELF文件头、程序头), 获取可执行文件长度、代码段、数据段等信息,并打印输出。并且,填充 Exe_Format数据结构中的值域。答: 修改 Pr

      2、oject1 项 目中的/GeekOS/elf.c 文件: 在函数 Parse_ELF_Executable()中添加代码,如下:=elf.c=int Parse_ELF_Executable(char *exeFileData, ulong_t exeFileLength, struct Exe_Format *exeFormat)int i;elfHeader *head=(elfHeader*)exeFileData;programHeader *proHeader=(programHeader *)(exeFileData+head-phoff);KASSERT(exeFileData!=NULL);KASSERT(exeFileLengthhead-ehsize+head-phentsize*head-phnum);KASSERT(head-entry%4=0);exeFormat-numSegments=head-phnum;. 。1欢迎下载精品文档exeFormat-entryAddr=head-entry;for(i=0;iphnum;i+)exeFormat-segm

      3、entListi.offsetInFile=proHeader-offset; exeFormat-segmentListi.lengthInFile=proHeader-fileSize; exeFormat-segmentListi.startAddress=proHeader-vaddr; exeFormat-segmentListi.sizeInMemory=proHeader-memSize; exeFormat-segmentListi.protFlags=proHeader-flags;proHeader+;return 0;=elf.c=运行结果如图:T Bwhs emufatar, http;/bochs.sourceforge,net/F* in;HI18192KB memory detected1670 patfes in free Hst 1948576 bytes in kerne I heap Initializing IDT.|Initialiing timer.belay loop: 64 1 iterations per ticklln it ial

      4、lz Ing keyboard . 4 .ilnitia 1 izin DMA ControIler.Initializing floppy controller,.fdO: tyI heads=2, secttjrs=18initializing IDE cantroIler.ide0: ug】=4露 heads=B, sectors=63Hnunted flesystBMfWe Icofhe to GeekOS!Starting theHi HiHiIlfT This* This isT This isSpawner thread . the f irst string the second string the third (and last) stringyou see th if yourc happy2、掌握GeekOSS核心态运行可执行程序的原理,绘制出可执行程序在内核中加载、运行的流程图(需反映关键函数的调用关系)。答:ELF (Executable and linking format )文件是 UNIX 系统实验室作为 应用程序二进制接口而开发的可执行文件,是x86

      5、 Linux系统下的一种常用目标文件(object file) 格式。ELF文件格式如下表:ELF文件在磁盘中的映象和在内存中的执行程序镜像的对应关系如下图: 表1 ELF目标文件格式_O2欢迎下载连接程序视图执行程序视图ELF头部ELF头部程序头部表(可选)程序头部表节区1段1.节区n段2.节区头部表节区头部表(可选)ELF文件镜像CoCedeffsizeDatDataff磁eELFCodeheadeheaderheaCe seata)ns内存中执行镜像DataCodCodeectionDataStack (4096)ELF文件在磁盘中的映象和在内存中的执行程序镜像的对应关系如下图:图1 ELF文件和内存中的可执行文件镜像流程图如下:四、实验分析思考题:输出个字符串为什么要如此大费周章?在 a.exe中直接调用Print 函数是否可行?答:不可行,直接打印Print(sl)则找不到字符串si的正确位置,字符串 变量名即代表地址信息,程序被加载进入内存时有了基址,需要通过基址加偏移 量来找到字符串在内存中的正确位置,所以要调用 ELF_Print函数。五、所遇问题及解决方法答:实验中遇到的问题首先就是代码难以阅读理解,对汇编陌生是一个主要的问题,其次就是代码之间的关联较多,层次较多,代码量也比较大,导致在阅 读源码的过程中造成了很大的困难。 最后在老师和同学们的帮助下,勉强理解了 代码的基本结构以及实现的功能。通过此次实验,我由原来对操作系统只有一个粗浅的概念的认识的水平上升 到对操作系统有比较深刻印象和理解的程度。不仅概念得到了进一步的理解,更对geekos在核心态下运行用户程序的原理有了更进一步的理解。欢迎您的下载,资料仅供套考!致力为企业和个人提供合同协议, 策划案计划书,学习资料等等打造全网一站式需求#欢迎下载

      《计算机操作系统实验_解析ELF文件》由会员cn****1分享,可在线阅读,更多相关《计算机操作系统实验_解析ELF文件》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.