




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
操作系統實驗報告課程名稱操作系統實驗課程編號0920311實驗工程名稱操作系統的啟動學號年級2011級姓名專業軟件工程學生所在學院軟件學院指導教師王紅濱實驗室名稱地點軟件工程實驗室21B282哈爾濱工程大學軟件學院
第二講實驗系統的啟動一、實驗概述1.實驗名稱實驗系統的啟動2.實驗目的跟蹤調試EOS在PC機上從加電復位到成功啟動的全過程,了解操作系統的啟動過程。查看EOS啟動后的狀態和行為,理解操作系統啟動后的工作方式。3.實驗類型〔驗證、設計〕驗證4.實驗內容調試EOS操作系統的啟動過程包括:〔1〕.使用Bochs做為遠程目標機;〔2〕.調試BIOS程序;〔3〕.調試軟盤引導扇區程序;〔4〕.調試加載程序;〔5〕.調試內核;〔6〕.查看EOS啟動后的狀態和行為二、實驗環境操作系統:windowsxp編譯環境:OSLab三、實驗過程1.設計思路和流程圖CPU從默認位置執行BIOS的開機自檢和初始化程序,之后BIOS將軟盤引導扇區加載到0x7C00并執行。CPU從默認位置執行BIOS的開機自檢和初始化程序,之后BIOS將軟盤引導扇區加載到0x7C00并執行。軟盤引導扇區中的Boot程序開始執行,將軟盤根目錄中的Loader程序文件Loader.bin加載到0x1000并執行軟盤引導扇區中的Boot程序開始執行,將軟盤根目錄中的Loader程序文件Loader.bin加載到0x1000并執行Loader程序開始執行,先加載Kernel.dll,然后啟動保護模式和分頁機制,最后跳到Kernel.dll的入口點執行Loader程序開始執行,先加載Kernel.dll,然后啟動保護模式和分頁機制,最后跳到Kernel.dll的入口點執行Kernel.dll開始執行,初始化EOS內核,EOS啟動完畢Kernel.dll開始執行,初始化EOS內核,EOS啟動完畢圖2-1.EOS操作系統的啟動過程流程圖2.需要解決的問題及解答(1).為什么EOS操作系統從軟盤啟動時要使用boot.bin和loader.bin兩個程序?使用一個可以嗎?它們各自的主要功能是什么?如果將loader.bin的功能移動到boot.bin文件中,則boot.bin文件的大小是否仍然能保持小于512字節?答:boot文件夾包含了兩個匯編文件boot.asm和loader.asm。這兩個文件生成的二進制文件boot.bin和loader.bin會被寫入軟盤鏡像文件。操作系統啟動時boot.bin和loader.bin引導軟盤加載程序,二者缺一不可。使用Boot.bin的主要功能是引導軟盤;loader.bin的主要功能是加載程序。如果把loader.bin功能移動到boot.bin程序中,必然導致程序規模擴大,可能使其大于512字節。(2).軟盤引導扇區加載完畢后內存中有兩個用戶可用的區域,為什么軟盤引導扇區程序選擇將loader.bin加載到第一個可用區域的0x1000處呢?這樣做有什么好處?這樣做會對loader.bin文件的大小有哪些限制。答:首先用戶只用兩個可用區域,加載位置非此即彼。第一個可用用戶區是低地址區,且空間大小比擬小,適合容納小文件,所以我們選擇將占用空間小的loder.bin加載到第一用戶區。優點:由低地址開始,便于檢索查找。小文件占用小空間,節約資源。限制:loader.bin文件必須小于1c00k.(3).練習使用Bochs單步調試BIOS程序、軟盤引導扇區程序和loader程序,加深對操作系統啟動過程的理解。(4).仔細比擬實驗指導10-5圖和圖10-6,嘗試說明哪個是應用程序的進程,它和系統進程有什么區別,哪個是應用程序的主線程,它和系統線程有什么區別。答:圖10-6是應用程序的進程,在進程列表中只有一個ID為1的系統進程,其優先級為24,包含有10個線程,其中的ID為2的線程是該進程的主線程,系統進程沒有映像名稱。在線程列表中有10個線程,它們都是系統線程。區別:主線程的優先級別高。存放在物理內存的低端。3.程序運行時的初值和運行結果1.調試BIOS程序(1).在Console窗口中輸入調試命令sreg后按回車,顯示當前CPU中各個段存放器的值。其中CS存放器信息行中的“s=0xf000〞表示CS存放器的值為0xf000.(2).輸入調試命令r后按回車,顯示當前CPU中各個通用存放器的值。其中“rip:0x00000000:0000fff0〞表示IP存放器的值為0xfff0。(3).輸入調試命令xp/1024b0x0000,查看開始的1024個字節的物理內存。在Console中輸出的這1K物理內存的值都為0,說明BIOS中斷向量表還沒有被加載到此處。.輸入調試命令xp/512b0x7c00,查看軟盤引導扇區應該被加載到的內存位置。輸出的內存值都為0,說明軟盤引導扇區還沒有被加載到此處。2.調試軟盤引導扇區程序a.輸入調試命令vb0x0000:0x7c00,這樣就在邏輯地址0x0000:0x7c00〔相當于物理地址0x7c00〕處添加了一個斷點。b.輸入調試命令c繼續執行,在0x7c00處的斷點中斷。中斷后會在Console窗口中輸出下一個要執行的指令,即軟盤引導扇區程序的第一條指令,如下(0)[0x00007c00]0000:7c00(unk.ctxt):jmp.+0x006d(0x00007c6f);eb6dc.為了方便后面的使用,先在紙上分別記錄下此條指令的字節碼〔eb6d〕和此條指令要跳轉執行的下一條指令的地址〔括號中的0x00007c6f〕。d.輸入調試命令sreg驗證CS存放器〔0x0000〕的值。e.輸入調試命令r驗證IP存放器〔0x7c00〕的值。f.由于BIOS程序此時已經執行完畢,輸入調試命令xp/1024b0x0000驗證此時BIOS中斷向量表已經被載入。g.輸入調試命令xp/512b0x7c00顯示軟盤引導扇區程序的所有字節碼。觀察此塊內存最開始的兩個字節分別為0xeb和0x6d,這和引導程序第一條指令的字節碼〔eb6d〕是相同的。h.輸入調試命令xp/512b0x0600驗證圖3-2中第一個用戶可用區域是空白的。i.輸入調試命令xp/512b0x7e00驗證圖3-2中第二個用戶可用區域是空白的。j.自己設計兩個查看內存的調試命令,分別驗證這兩個用戶可用區域的高地址端也是空白的。k.輸入調試命令xp/512b0xa0000驗證圖3-2中上位內存已經被系統占用。l.自己設計一個查看內存的調試命令,驗證上位內存的高地址端已經被系統占用。查看boot.lst文件(1).在“工程管理器〞窗口中,右鍵點擊“boot〞文件夾中的boot.asm文件。(2).在彈出的快捷菜單中選擇“翻開生成的列表文件〞,在源代碼編輯器中就會翻開文件boot.lst。(3).將boot.lst文件和boot.asm文件比照可以發現,此文件包含了boot.asm文件中所有的匯編代碼,同時在代碼的左側又添加了更多的信息。(4).在boot.lst中查找到軟盤引導扇區程序第一條指令所在的行〔第73行〕7300000000EB6DjmpshortStart此行包含的信息有:73是行號。00000000是此條指令相對于程序開始位置的偏移〔第一條指令應該為0〕。EB6D是此條指令的字節碼,和之前記錄下來的指令字節碼是一致的。軟盤引導扇區程序的主要任務就是將軟盤中的loader.bin文件加載到物理內存的0x1000處,然后跳轉到loader程序的第一條指令〔物理地址0x1000處的指令〕繼續執行loader程序。按照下面的步驟調試此過程:(1).在boot.lst文件中查找到加載完畢loader.bin文件后要跳轉到loader程序中執行的指令〔第278行〕27800000181EA00100000jmp0:LOADER_ORG根據此指令相對于程序開始〔0x7C00〕的偏移〔0x0181〕可以得到此指令的邏輯地址為0x0000:7D81。(2).輸入調試命令vb0x0000:0x7d81添加一個斷點。(3).輸入調試命令c繼續執行,到斷點處中斷。在Console窗口中顯示(0)[0x00007d81]0000:7d81(unk.ctxt):jmpfar0000:1000;ea00100000此條指令會跳轉到物理內存0x1000處〔即Loader程序的第一條指令〕繼續執行。(4).按照翻開boot.lst文件的方法翻開loader.lst文件,并在此文件中查找到loader程序的第一條指令〔第33行〕3300000000E91801jmpStart(5).輸入調試命令xp/8b0x1000查看內存0x1000處的數據,驗證此塊內存的前三個字節和loader.lst文件中的第一條指令的字節碼是相同的。(6).根據之前記錄的loader.bin文件的大小,自己設計一個查看內存的調試命令,查看內存中loader程序結束位置的字節碼,并與loader.lst文件中最后指令的字節碼比擬,驗證loader程序被完全加載到了正確的位置。調試加載程序Loader程序的主要任務是將操作系統內核〔kernel.dll文件〕加載到內存中,然后讓CPU進入保護模式并且啟用分頁機制,最后進入操作系統內核開始執行〔跳轉到kernel.dll的入口點執行〕。按照下面的步驟調試上述過程:(1).在loader.lst文件中查找到準備進入EOS操作系統內核執行的指令〔第755行〕7550000014FFF15[17010080]calldword[va_ImageEntry](2).計算此條指令的物理地址要復雜一些:偏移地址實際上是相對于節〔節SECTION是NASM匯編中的概念〕開始的。由于在boot.asm程序中只有一個節,所以之前計算的結果都是正確的,但是在loader.asm程序中有兩個節,并且此條指令是在第二個節中。下面引用的代碼是loader.lst中第一個節的最后一條指令〔第593行〕593000003C1C20600ret6因為第一個節中最后一條指令的偏移為0x03c1,并占用了3個字節〔字節碼為C20600〕,所以可以計算出進入內核執行的指令所在的物理地址為0x1513〔0x1000+0x03c1+0x3+0x14f〕。(3).使用添加物理地址斷點的調試命令pb0x1513添加一個斷點。(4).輸入調試命令c繼續執行,到斷點處中斷。在Console窗口中顯示要執行的下一條指令〔注意,此時的邏輯地址都為虛擬地址〕:(0)[0x00001513]0008:0000000080001513(unk.ctxt):calldwordptrds:0x80001117;ff1517110080由于這里使用了函數指針的概念,所以,根據反匯編指令可以確定內核入口點函數的地址就保存在虛擬地址0x8000117處的四個字節中。(5).使用查看虛擬內存的調試命令x/1wx0x80001117查看內存中保存的32位函數入口地址,在Console窗口中會輸出類似下面的內容:0x0000000080001117<bogus+0>:0x800*****記錄下此塊內存中保存的函數地址,后面的實驗會驗證內核入口點函數的地址與此地址是一致的。調試內核:(1).在OSLab的“工程管理器〞窗口中翻開ke文件夾中的start.c文件,此文件中只定義了一個函數,就是操作系統內核的入口點函數KiSystemStartup。(2).在KiSystemStartup函數中的代碼行〔第61行〕KiInitializePic();添加一個斷點。(3).現在可以在Console窗口中輸入調試命令c繼續調試,在剛剛添加的斷點處中斷。(4).在start.c源代碼文件中的KiSystemStartup函數名上點擊鼠標右鍵,在彈出的快捷菜單中選擇“添加監視〞,KiSystemStartup函數就被添加到了“監視〞窗口中。在“監視〞窗口中可以看到此函數地址為{void(PVOID)}0x800*****<KiSystemStartup>與在虛擬內存x80001117處保存的函數入口地址相同,說明確實是由Loader程序進入了操作系統內核。(5).按F5繼續執行EOS操作系統內核,在Display窗口中顯示EOS操作系統已經啟動,并且控制臺程序已經開始運行了。EOS啟動后的狀態和行為(1).在控制臺中輸入命令“ver〞后按回車。(2).輸出EOS版本后的控制臺。查看EOS啟動后的進程和線程的信息:(1).在控制臺中輸入命令“pt〞后按回車。(2).輸出的進程和線程信息如下圖。查看有應用程序運行時進程和線程的信息:1.在OSLab中選擇“調試〞菜單中的“停止調試〞,結束之前的調試。2.在O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司房租收取管理辦法
- 供水企業薪酬管理辦法
- 華僑職稱管理暫行辦法
- 公益宣傳印章管理辦法
- 保健原料采購管理辦法
- 辦公用房管理制度優化與實施
- 新學制背景下哲學話語與教育權力的博弈
- 景區建筑維修管理辦法
- 租賃業務風險管理與防控策略探討
- 云計算管理平臺系統建設的策略與實踐
- 棋牌室四人合作協議書范文
- 中國醫院質量安全管理第2-13部分:患者服務臨床用血
- 《籃球原地運球》教案 (共三篇)
- 思維模型之六頂思考帽
- DB34T 1708-2020 電站堵閥檢驗規程
- 2025年高考化學復習備考策略講座
- 《網絡系統建設與運維》課件-第3章 路由技術
- 常用建筑類型疏散寬度計算表格
- QB/T 2660-2024 化妝水(正式版)
- GB/T 4074.1-2024繞組線試驗方法第1部分:一般規定
- 《中國旅游地理》模塊一 項目一解讀中國旅游地理(教案) -《中國旅游地理》(高教版第一版)
評論
0/150
提交評論