操作系統(tǒng)實(shí)驗(yàn)總結(jié)_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)總結(jié)_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)總結(jié)_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)總結(jié)_第4頁(yè)
全文預(yù)覽已結(jié)束

VIP免費(fèi)下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、操作系統(tǒng)實(shí)驗(yàn)總結(jié)學(xué)號(hào): 姓名: 班級(jí): 在本學(xué)期的計(jì)算機(jī)操作系統(tǒng)這門課學(xué)習(xí)當(dāng)中,為了更好的了解操作系統(tǒng)相關(guān)知識(shí),我們通過OS Lab平臺(tái)做了幾個(gè)實(shí)驗(yàn)。在實(shí)驗(yàn)室的過程中,我對(duì)課堂上學(xué)到的操作系統(tǒng)的一些知識(shí)有了新的認(rèn)識(shí),同時(shí)還接觸到了操作系統(tǒng)的相關(guān)源代碼,而且通過實(shí)驗(yàn)的運(yùn)行效果了解了平時(shí)我們看不到的操作系統(tǒng)的一些狀況,收獲還是很大的。下面先簡(jiǎn)要?dú)w納在實(shí)驗(yàn)課上我做的幾個(gè)實(shí)驗(yàn)的主要實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)步驟:實(shí)驗(yàn)一:實(shí)驗(yàn)環(huán)境的使用實(shí)驗(yàn)步驟:1.1啟動(dòng)OS LabOS Lab每次啟動(dòng)后都會(huì)首先彈出一個(gè)用于注冊(cè)用戶信息的對(duì)話框(可以選擇對(duì)話框標(biāo)題欄上的“幫助”按鈕獲得關(guān)于此對(duì)話框的幫助信息)。在此對(duì)話框中填入學(xué)號(hào)

2、和姓名后,點(diǎn)擊“確定”按鈕完成本次注冊(cè)。觀察OS Lab主窗口的布局。OS Lab主要由下面的若干元素組成:菜單欄、工具欄以及停靠在左側(cè)和底部的各種工具窗口,余下的區(qū)域用來(lái)放置編輯器窗口。 1.2 學(xué)習(xí)OS Lab的基本使用方法練習(xí)使用OS Lab編寫一個(gè)Windows控制臺(tái)應(yīng)用程序,熟悉OS Lab的基本使用方法(主要包括新建項(xiàng)目、生成項(xiàng)目、調(diào)試項(xiàng)目等)。實(shí)驗(yàn)二:操作系統(tǒng)的啟動(dòng)實(shí)驗(yàn)步驟:2.1 準(zhǔn)備實(shí)驗(yàn)啟動(dòng)OS Lab,新建一個(gè)EOS Kernel項(xiàng)目,在“項(xiàng)目管理器”窗口中打開boot文件夾中的boot.asm和loader.asm兩個(gè)匯編文件,按F7生成項(xiàng)目,生成完成后,使用Window

3、s資源管理器打開項(xiàng)目文件夾中的Debug文件夾。找到由boot.asm生成的軟盤引導(dǎo)扇區(qū)程序boot.bin文件,找到由loader.asm生成的loader程序loader.bin文件,記錄下此文件的大小1566字節(jié)。2.2 調(diào)試EOS操作系統(tǒng)的啟動(dòng)過程2.2.1 使用Bochs做為遠(yuǎn)程目標(biāo)機(jī)將調(diào)試時(shí)使用的遠(yuǎn)程目標(biāo)機(jī)修改為Bochs2.2.2 調(diào)試BIOS程序按F5啟動(dòng)調(diào)試, Bochs在CPU要執(zhí)行的第一條指令(即BIOS的第一條指令)處中斷,從Console窗口顯示的內(nèi)容中,我們可以獲得關(guān)于BIOS第一條指令的相關(guān)信息,然后查看CPU在沒有執(zhí)行任何指令之前主要寄存器中的數(shù)據(jù),以及內(nèi)存中的

4、數(shù)據(jù)。2.2.3 調(diào)試軟盤引導(dǎo)扇區(qū)程序練習(xí)從0x7c00處調(diào)試軟盤引導(dǎo)扇區(qū)程序;查看boot.lst文件;調(diào)試過程軟盤引導(dǎo)扇區(qū)程序的主要任務(wù)就是將軟盤中的loader.bin文件加載到物理內(nèi)存的0x1000處,然后跳轉(zhuǎn)到loader程序的第一條指令(物理地址0x1000處的指令)繼續(xù)執(zhí)行l(wèi)oader程序;2.2.4 調(diào)試加載程序調(diào)試過程Loader程序的主要任務(wù)是將操作系統(tǒng)內(nèi)核(kernel.dll文件)加載到內(nèi)存中,然后讓CPU進(jìn)入保護(hù)模式并且啟用分頁(yè)機(jī)制,最后進(jìn)入操作系統(tǒng)內(nèi)核開始執(zhí)行(跳轉(zhuǎn)到kernel.dll的入口點(diǎn)執(zhí)行);2.2.5 調(diào)試內(nèi)核2.2.6 EOS啟動(dòng)后的狀態(tài)和行為查看EO

5、S的版本號(hào);查看EOS啟動(dòng)后的進(jìn)程和線程的信息;查看有應(yīng)用程序運(yùn)行時(shí)進(jìn)程和線程的信息實(shí)驗(yàn)三:進(jìn)程的創(chuàng)建實(shí)驗(yàn)步驟:3.1 準(zhǔn)備實(shí)驗(yàn)啟動(dòng)OS Lab;新建一個(gè)EOS Kernel項(xiàng)目;分別使用Debug配置和Release配置生成此項(xiàng)目,從而在該項(xiàng)目文件夾中生成完全版本的EOS SDK文件夾;新建一個(gè)EOS應(yīng)用程序項(xiàng)目;使用在第3步生成的SDK文件夾覆蓋EOS應(yīng)用程序項(xiàng)目文件夾中的SDK文件夾3.2 練習(xí)使用控制臺(tái)命令創(chuàng)建EOS應(yīng)用程序的進(jìn)程3.3 練習(xí)通過編程的方式讓應(yīng)用程序創(chuàng)建另一個(gè)應(yīng)用程序的進(jìn)程使用OS Lab打開本實(shí)驗(yàn)文件夾中的NewProc.c文件;查看應(yīng)用程序創(chuàng)建另一個(gè)應(yīng)用程序的進(jìn)程的

6、執(zhí)行結(jié)果。3.4 調(diào)試CreateProcess函數(shù)調(diào)試CreateProcess函數(shù)創(chuàng)建進(jìn)程的過程;分別驗(yàn)證應(yīng)用程序和操作系統(tǒng)內(nèi)核在進(jìn)程的4G虛擬地址空間中所處的位置;3.5 調(diào)試PsCreateProcess函數(shù)調(diào)試PspCreateProcessEnvironment函數(shù);調(diào)試進(jìn)程控制塊的創(chuàng)建過程;調(diào)試初始化進(jìn)程控制塊中各個(gè)成員變量的過程。3.6 練習(xí)通過編程的方式創(chuàng)建應(yīng)用程序的多個(gè)進(jìn)程使用OS Lab打開本實(shí)驗(yàn)文件夾中的參考源代碼文件NewTwoProc.c,仔細(xì)閱讀此文件中的源代碼。使用NewTwoProc.c文件中的源代碼替換EOS應(yīng)用程序項(xiàng)目中EOSApp.c文件內(nèi)的源代碼,生成

7、后啟動(dòng)調(diào)試,查看多個(gè)進(jìn)程并發(fā)執(zhí)行的結(jié)果。實(shí)驗(yàn)四:線程的狀態(tài)和轉(zhuǎn)換實(shí)驗(yàn)步驟:4.1 準(zhǔn)備實(shí)驗(yàn)啟動(dòng)OS Lab,新建一個(gè)EOS Kernel項(xiàng)目4.2 調(diào)試線程狀態(tài)的轉(zhuǎn)換過程查看一下loop命令執(zhí)行的效果;調(diào)試線程狀態(tài)轉(zhuǎn)換的過程;對(duì)斷點(diǎn)進(jìn)行一些調(diào)整。4.2.1 線程由阻塞狀態(tài)進(jìn)入就緒狀態(tài):將線程從等待隊(duì)列中移除;將線程的狀態(tài)由Waiting修改為Zero;將線程插入其優(yōu)先級(jí)對(duì)應(yīng)的就緒隊(duì)列的隊(duì)尾;將線程的狀態(tài)由Zero修改為Ready。 4.2.2 線程由運(yùn)行狀態(tài)進(jìn)入就緒狀態(tài):線程中斷運(yùn)行,將線程中斷運(yùn)行時(shí)的上下文保存到線程控制塊中;如果處于運(yùn)行狀態(tài)的線程被更高優(yōu)先級(jí)的線程搶先,就需要將該線程插入其

8、優(yōu)先級(jí)對(duì)應(yīng)的就緒隊(duì)列的隊(duì)首。(注意,如果處于運(yùn)行狀態(tài)的線程主動(dòng)讓出處理器,例如時(shí)間片用完,就需要將程插入其優(yōu)先級(jí)對(duì)應(yīng)的就緒隊(duì)列的隊(duì)尾);將線程的狀態(tài)由Running修改為Ready4.2.3 線程由就緒狀態(tài)進(jìn)入運(yùn)行狀態(tài):將線程從其優(yōu)先級(jí)對(duì)應(yīng)的就緒隊(duì)列中移除;將線程的狀態(tài)由Ready修改為Zero;將線程的狀態(tài)由Zero修改為Running;將線程的上下文從線程控制塊(TCB)復(fù)制到處理器的各個(gè)寄存器中,讓線程從上次停止運(yùn)行的位置繼續(xù)運(yùn)行。 4.2.4 線程由運(yùn)行狀態(tài)進(jìn)入阻塞狀態(tài):將線程插入等待隊(duì)列的隊(duì)尾;將線程的狀態(tài)由Running修改為Waiting;將線程中斷執(zhí)行,并將處理器上下文保存到該

9、線程的線程控制塊中。 4.3 為線程增加掛起狀態(tài)觀察loop線程被掛起的情況:刪除之前添加的所有斷點(diǎn);按F5啟動(dòng)調(diào)試;待EOS啟動(dòng)完畢,在EOS控制臺(tái)中輸入命令“l(fā)oop”后按回車。此時(shí)可以看到loop線程的執(zhí)行計(jì)數(shù)在不停增長(zhǎng),說明loop線程正在執(zhí)行,記錄下loop線程的ID;按Ctrl+F2切換到控制臺(tái)2,輸入命令“suspend 31”(如果loop線程的ID是31)后按回車;按Ctrl+1切換回控制臺(tái)1,可以看到由于loop線程已經(jīng)成功被掛起,其執(zhí)行計(jì)數(shù)已經(jīng)停止增長(zhǎng)了。在PsResumThread函數(shù)第119行需要添加的代碼的流程可以是:首先調(diào)用List Remove Entry函數(shù)將

10、線程從掛起線程隊(duì)列中移除, 然后調(diào)用PspReadyThread函數(shù)將線程恢復(fù)為就緒狀態(tài),最后調(diào)用PspThreadSchedule宏函數(shù)執(zhí)行線程調(diào)度,讓剛剛恢復(fù)的線程有機(jī)會(huì)執(zhí)行。 實(shí)驗(yàn)過程:做實(shí)驗(yàn)時(shí),最開始并不是很了解OS Lab平臺(tái)的使用,即使對(duì)著老師給的實(shí)驗(yàn)教程做還是不怎么會(huì),于是請(qǐng)教會(huì)做的同學(xué),通過同學(xué)的講解我知道了怎樣在OS Lab平臺(tái)上建立項(xiàng)目,怎樣更改路徑并找到項(xiàng)目的源文件等等基本操作。掌握對(duì)平臺(tái)的簡(jiǎn)單應(yīng)用后,做后面的實(shí)驗(yàn)我是按照實(shí)驗(yàn)教程上的步驟一步步的實(shí)施,并且每次都認(rèn)真觀察相應(yīng)的運(yùn)行結(jié)果,每個(gè)實(shí)驗(yàn)都會(huì)建議我們學(xué)習(xí)實(shí)驗(yàn)教程前面的理論部分,我想如果對(duì)他的理論不熟悉,就算試驗(yàn)成功了

11、我也不知道為什么,所以我一般在做實(shí)驗(yàn)前會(huì)對(duì)前面的理論部分進(jìn)行簡(jiǎn)要的學(xué)習(xí)和熟悉。做實(shí)驗(yàn)的過程中,有時(shí)候按照實(shí)驗(yàn)教程上的步驟做平臺(tái)還是會(huì)出現(xiàn)一些錯(cuò)誤,比如做實(shí)驗(yàn)三到調(diào)試CreateProcess函數(shù)時(shí),出現(xiàn)的調(diào)試異常對(duì)話框中,本來(lái)是要點(diǎn)擊“是”的,但做到這里電腦總是會(huì)出現(xiàn)像死機(jī)一樣的狀況,關(guān)掉平臺(tái)重做到這里老是出現(xiàn)同樣的問題,最后換電腦也是這樣,然后我嘗試不按照實(shí)驗(yàn)步驟點(diǎn)擊“是”也不行,最后還是又還了電腦才做成功,問其他同學(xué)也有出現(xiàn)同樣的問題,我想可能是平臺(tái)和電腦上有什么地方有沖突吧。之后做試驗(yàn)是遇到問題我還是選擇多問同學(xué),畢竟每個(gè)人擅長(zhǎng)的是不同的,有些問題這個(gè)同學(xué)會(huì)解決,有些問題則是那個(gè)同學(xué)才懂解決,通過互相交流和學(xué)習(xí),我們通過實(shí)驗(yàn)不僅鞏固了課堂上學(xué)到的相關(guān)知識(shí),也對(duì)操作系統(tǒng)有了更深的了解。體會(huì):其實(shí)做完實(shí)驗(yàn)我還是不能保證我對(duì)OS Lab這個(gè)平臺(tái)有很好的全面的了解,但是對(duì)一些基本操作及其快捷鍵我算是大致掌握了,通過這個(gè)平臺(tái)我也是認(rèn)識(shí)到了“沒有做不到的,只有想不到的”,我覺得創(chuàng)建這個(gè)平臺(tái)的人們真的是很了不起,這

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論