下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件PAGE1-PAGE4-西北工業(yè)大學(xué)操作系統(tǒng)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康氖煜た蓤?zhí)行鏈接文件(ELF)的結(jié)構(gòu),了解GeekOS將ELF格式的可執(zhí)行程序加載到內(nèi)存,建立內(nèi)核線程并運(yùn)行的實(shí)現(xiàn)技術(shù)。二、實(shí)驗(yàn)要求1.修改Project1項(xiàng)目中的/GeekOS/elf.c文件:在函數(shù)Parse_ELF_Executable()中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭),獲取可執(zhí)行文件長(zhǎng)度、代碼段、數(shù)據(jù)段等信息,并打印輸出。并且,填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的值域。2.掌握GeekOS在核心態(tài)運(yùn)行可執(zhí)行程序的原理,繪制出可執(zhí)行程序在內(nèi)核中加載、運(yùn)行的流程圖(需反映關(guān)鍵函數(shù)的調(diào)用關(guān)系)。3.回答實(shí)驗(yàn)講義P125頁(yè)的思考題。三、實(shí)驗(yàn)過(guò)程及結(jié)果1、修改Project1項(xiàng)目中的/GeekOS/elf.c文件:在函數(shù)Parse_ELF_Executable()中添加代碼,分析ELF格式的可執(zhí)行文件(包括分析得出ELF文件頭、程序頭),獲取可執(zhí)行文件長(zhǎng)度、代碼段、數(shù)據(jù)段等信息,并打印輸出。并且,填充Exe_Format數(shù)據(jù)結(jié)構(gòu)中的值域。答:修改Project1項(xiàng)目中的/GeekOS/elf.c文件:在函數(shù)Parse_ELF_Executable()中添加代碼,如下:==============elf.c===================intParse_ELF_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->entry%4==0);計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第1頁(yè)。 exeFormat->numSegments=head->phnum;計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第1頁(yè)。 exeFormat->entryAddr=head->entry; for(i=0;i<head->phnum;i++) { exeFormat->segmentList[i].offsetInFile=proHeader->offset; exeFormat->segmentList[i].lengthInFile=proHeader->fileSize; exeFormat->segmentList[i].startAddress=proHeader->vaddr; exeFormat->segmentList[i].sizeInMemory=proHeader->memSize; exeFormat->segmentList[i].protFlags=proHeader->flags; proHeader++; } return0;}==============elf.c===================運(yùn)行結(jié)果如圖:2、掌握GeekOS在核心態(tài)運(yùn)行可執(zhí)行程序的原理,繪制出可執(zhí)行程序在內(nèi)核中加載、運(yùn)行的流程圖(需反映關(guān)鍵函數(shù)的調(diào)用關(guān)系)。答:ELF(Executableandlinkingformat)文件是UNIX系統(tǒng)實(shí)驗(yàn)室作為應(yīng)用程序二進(jìn)制接口而開(kāi)發(fā)的可執(zhí)行文件,是x86Linux系統(tǒng)下的一種常用目標(biāo)文件(objectfile)格式。ELF文件格式如下表:ELF文件在磁盤(pán)中的映象和在內(nèi)存中的執(zhí)行程序鏡像的對(duì)應(yīng)關(guān)系如下圖:計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第2頁(yè)。表1ELF目標(biāo)文件格式計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第2頁(yè)。連接程序視圖執(zhí)行程序視圖ELF頭部ELF頭部程序頭部表(可選)程序頭部表節(jié)區(qū)1段1...節(jié)區(qū)n段2.........節(jié)區(qū)頭部表節(jié)區(qū)頭部表(可選)ELF文件在磁盤(pán)中的映象和在內(nèi)存中的執(zhí)行程序鏡像的對(duì)應(yīng)關(guān)系如下圖:圖1ELF文件和內(nèi)存中的可執(zhí)行文件鏡像計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第3頁(yè)。流程圖如下:計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第3頁(yè)。四、實(shí)驗(yàn)分析思考題:輸出個(gè)字符串為什么要如此大費(fèi)周章?在a.exe中直接調(diào)用Print函數(shù)是否可行?答:不可行,直接打印Print(s1)則找不到字符串s1的正確位置,字符串變量名即代表地址信息,程序被加載進(jìn)入內(nèi)存時(shí)有了基址,需要通過(guò)基址加偏移量來(lái)找到字符串在內(nèi)存中的正確位置,所以要調(diào)用ELF_Print函數(shù)。五、所遇問(wèn)題及解決方法答:實(shí)驗(yàn)中遇到的問(wèn)題首先就是代碼難以閱讀理解,對(duì)匯編陌生是一個(gè)主要的問(wèn)題,其次就是代碼之間的關(guān)聯(lián)較多,層次較多,代碼量也比較大,導(dǎo)致在閱讀源碼的過(guò)程中造成了很大的困難。最后在老師和同學(xué)們的幫助下,勉強(qiáng)理解了代碼的基本結(jié)構(gòu)以及實(shí)現(xiàn)的功能。計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)-解析ELF文件全文共4頁(yè),當(dāng)前為第4頁(yè)。通過(guò)此次實(shí)驗(yàn),我由
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024污水處理廠運(yùn)營(yíng)合同書(shū)(范本)
- 2024幼兒園租房合同協(xié)議書(shū)樣本
- 房產(chǎn)抵押擔(dān)保借款合同書(shū)范例
- 2024貨船租賃合同范本范文
- 股權(quán)抵押借款合同范文2024年
- 店面租房門(mén)面房租房合同協(xié)議
- 商業(yè)鋪?zhàn)赓U合同格式
- 項(xiàng)目合作協(xié)議書(shū)模板示例
- 2024居間合同,居間合同范例
- 技術(shù)合作協(xié)議樣式
- 精品堆垛機(jī)安裝指導(dǎo)書(shū)
- 前臺(tái)月度績(jī)效考核表(KPI)
- 雞的飼養(yǎng)管理-優(yōu)質(zhì)課件
- 德育課(共19張PPT)
- 歷史幽憤的現(xiàn)代回響——《記念劉和珍君》課堂實(shí)錄
- 化學(xué)微生物學(xué)第7章 微生物轉(zhuǎn)化
- 《少年正是讀書(shū)時(shí)》-完整版PPT課件
- 四、貼標(biāo)機(jī)基本調(diào)整法1
- 船舶建造方案
- 35KV集電線路鐵塔組立專(zhuān)項(xiàng)方案
- 不銹鋼管規(guī)格表大全以及理論重量表大全
評(píng)論
0/150
提交評(píng)論