版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)實 驗 報 告課程名稱操作系統(tǒng)實驗課程編號0906553實驗項目名稱實驗環(huán)境的使用學(xué)號年級姓名專業(yè)學(xué)生所在學(xué)院指導(dǎo)教師實驗室名稱地點哈爾濱工程大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院第一講 實驗環(huán)境的使用一、實驗概述1. 實驗名稱實驗環(huán)境的使用2. 實驗?zāi)康模?)熟悉操作系統(tǒng)集成實驗環(huán)境OS Lab的基本使用方法。(2)練習(xí)編譯、調(diào)試EOS操作系統(tǒng)內(nèi)核以及EOS應(yīng)用程序。3. 實驗類型(驗證、設(shè)計)驗證型實驗4. 實驗內(nèi)容(1)學(xué)習(xí)OS Lab的基本使用方法;(2)EOS內(nèi)核項目的生成和調(diào)試;(3)EOS應(yīng)用程序項目的生成和調(diào)試。二、實驗環(huán)境EOS操作系統(tǒng)和OS Lab集成實驗環(huán)境,主要運用了C語言。
2、三、實驗過程1.源程序并附上注釋/* 定義控制臺應(yīng)用程序的入口點 */#include "console.h"int main(int argc, char* argv)/* TODO: 在此處添加自己的代碼 */ int Func(int n); /聲明Func()函數(shù) int n=0; n=Func(10); /調(diào)用Func()函數(shù)printf("Hello world!n"); /輸出return 0;int Func(int n) /定義Func()函數(shù)n=n+1; return n;2.程序運行時的初值和運行結(jié)果(1)啟動OS Lab在安裝有O
3、S Lab的計算機(jī)上,可以使用兩種不同的方法來啟動OS Lab:在桌面上雙擊“Tevation OS Lab”圖標(biāo);或者點擊“開始”菜單,在“程序”中的“Tevation OS Lab”中選擇“Tevation OS Lab”。OS Lab每次啟動后都會首先彈出一個用于注冊用戶信息的對話框(可以選擇對話框標(biāo)題欄上的“幫助”按鈕獲得關(guān)于此對話框的幫助信息)。在此對話框中填入學(xué)號和姓名后,點擊“確定”按鈕完成本次注冊。(2)學(xué)習(xí)OS Lab的基本使用方法:1)新建Windows控制臺應(yīng)用程序項目新建一個Windows控制臺應(yīng)用程序項目的步驟如下:1.1) 在“文件”菜單中選擇“新建”,然后單擊“項
4、目”。1.2)在“新建項目”對話框中,選擇項目模板“控制臺應(yīng)用程序 (c)”。1.3) 在“名稱”中輸入新項目使用的文件夾名稱“oslab”。1.4)在“位置”中輸入新項目保存在磁盤上的位置“C:test”。1.5)點擊“確定”按鈕。2)生成項目:在“生成”菜單中選擇“生成項目”。在項目生成過程中,“輸出”窗口會實時顯示生成的進(jìn)度和結(jié)果。如果源代碼中不包含語法錯誤,會在最后提示生成成功。如果源代碼中存在語法錯誤,“輸出”窗口會輸出相應(yīng)的錯誤信息(包括錯誤所在文件的路徑,錯誤在文件中的位置,以及錯誤原因),并在最后提示生成失敗。此時在“輸出”窗口中雙擊錯誤信息所在的行,OS Lab會使用源代碼編
5、輯器打開錯誤所在的文件,并自動定位到錯誤對應(yīng)的代碼行??梢栽谠创a文件中故意輸入一些錯誤的代碼(例如刪除一個代碼行結(jié)尾的分號),然后再次生成項目,然后在“輸出”窗口中雙擊錯誤信息來定位存在錯誤的代碼行,將代碼修改正確后再生成項目。3)執(zhí)行項目在OS Lab中選擇“調(diào)試”菜單中的“開始執(zhí)行(不調(diào)試)”,可以執(zhí)行剛剛生成的Windows控制臺應(yīng)用程序。啟動執(zhí)行后會彈出一個Windows控制臺窗口,顯示控制臺應(yīng)用程序輸出的內(nèi)容。按任意鍵即可關(guān)閉此Windows控制臺窗口。4) 調(diào)試項目在開始練習(xí)各種調(diào)試功能之前,首先需要對剛剛創(chuàng)建的例子程序進(jìn)行必要的修改,步驟如下: 4.1) 右鍵點擊“項目管理器”
6、窗口中的“源文件”文件夾節(jié)點,在彈出的快捷菜單中選擇“添加”中的“添加新文件”。 4.2) 在彈出的“添加新文件”對話框中選擇“C 源文件”模板。 4.3) 在“名稱”中輸入文件名稱“func”。 4.4)點擊“添加”按鈕,添加并自動打開文件func.c。4.5)在 func.c 文件中添加函數(shù):Func。4.6) 點擊源代碼編輯器上方的console.c標(biāo)簽,切換到console.c文件。修改main 函數(shù)。代碼修改完畢后按F7(“生成項目”功能的快捷鍵)。注意查看“輸出”窗口中的內(nèi)容,如果代碼中存在語法錯誤,就根據(jù)錯誤信息進(jìn)行修改,直到成功生成項目。(4.1)使用斷點中斷執(zhí)行1. 在mai
7、n函數(shù)中定義變量n的代碼行 int n = 0; 上點擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“插入/刪除斷點”,會在此行左側(cè)的空白處顯示一個紅色圓點,表示已經(jīng)成功在此行代碼添加了一個斷點。2. 在“調(diào)試”菜單中選擇“啟動調(diào)試”,Windows控制臺應(yīng)用程序開始執(zhí)行,隨后OS Lab窗口被自動激活,并且在剛剛添加斷點的代碼行左側(cè)空白中顯示一個黃色箭頭,表示程序已經(jīng)在此行代碼處中斷執(zhí)行(也就是說下一個要執(zhí)行的就是此行代碼)。 3. 激活Windows控制臺應(yīng)用程序的窗口,可以看到窗口中沒有輸出任何內(nèi)容,因為printf函數(shù)還沒有被執(zhí)行。 (4.2)單步調(diào)試按照下面的步驟練習(xí)使用“逐過程”功能: 1.
8、在OS Lab的“調(diào)試”菜單中選擇“逐過程”,“逐過程”功能會執(zhí)行黃色箭頭當(dāng)前指向的代碼行,并將黃色箭頭指向下一個要執(zhí)行的代碼行。 2. 按F10(“逐過程”功能的快捷鍵),黃色箭頭就指向了調(diào)用printf函數(shù)的代碼行。查看控制臺應(yīng)用程序窗口,仍然沒有任何輸出。 3. 再次按F10執(zhí)行printf函數(shù),查看控制臺應(yīng)用程序窗口,可以看到已經(jīng)打印出了內(nèi)容。4. 在“調(diào)試”菜單中選擇“停止調(diào)試”,結(jié)束此次調(diào)試。 (4.3)查看變量的值在調(diào)試的過程中,OS Lab提供了三種查看變量值的方法,按照下面的步驟練習(xí)這些方法: 1. 按F5啟動調(diào)試,仍然會在之前設(shè)置的斷點處中斷。 2. 將鼠標(biāo)移動到源代碼編輯
9、器中變量n的名稱上,此時會彈出一個窗口顯示出變量n當(dāng)前的值(由于此時還沒有給變量n賦值,所以是一個隨機(jī)值)。3. 在源代碼編輯器中變量n的名稱上點擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“快速監(jiān)視”,可以使用“快速監(jiān)視”對話框查看變量n的值。然后,可以點擊“關(guān)閉”按鈕關(guān)閉“快速監(jiān)視”對話框。 4. 在源代碼編輯器中變量n的名稱上點擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加監(jiān)視”,變量n就被添加到了“監(jiān)視”窗口中。使用“監(jiān)視”窗口可以隨時查看變量的值和類型。此時按F10進(jìn)行一次單步調(diào)試,可以看到“監(jiān)視”窗口中變量n的值會變?yōu)?。(4.4)調(diào)用堆棧 使用“調(diào)用堆?!贝翱诳梢栽谡{(diào)試的過程中查看當(dāng)前堆棧上的函
10、數(shù),還可以幫助理解函數(shù)的調(diào)用層次和調(diào)用過程。按照下面的步驟練習(xí)使用“調(diào)用堆棧”窗口: 1. 按F5啟動調(diào)試,仍然會在之前設(shè)置的斷點處中斷。 2. 選擇“調(diào)試”菜單“窗口”中的“調(diào)用堆?!?,激活“調(diào)用堆棧”窗口。可以看到當(dāng)前“調(diào)用堆棧”窗口中只有一個main函數(shù)(顯示的內(nèi)容還包括了參數(shù)值和函數(shù)地址)。3. 按F11(“逐語句”功能的快捷鍵)調(diào)試,直到進(jìn)入Func函數(shù),查看“調(diào)用堆?!贝翱诳梢园l(fā)現(xiàn)在堆棧上有兩個函數(shù)Func和main。其中當(dāng)前正在調(diào)試的Func函數(shù)在棧頂位置,main函數(shù)在棧底位置。說明是在main函數(shù)中調(diào)用了Func函數(shù)。 4. 在“調(diào)用堆?!贝翱谥须p擊main函數(shù)所在的行,會有
11、一個綠色箭頭指向main函數(shù)所在的行,表示此函數(shù)是當(dāng)前調(diào)用堆棧中的活動函數(shù)。同時,會將main函數(shù)所在的源代碼文件打開,并也使用一個綠色箭頭指向Func函數(shù)返回后的位置。5. 在“調(diào)用堆棧”窗口中雙擊Func函數(shù)所在的行,可以重新激活此堆棧幀,并顯示對應(yīng)的源代碼。 6. 反復(fù)雙擊“調(diào)用堆?!贝翱谥蠪unc函數(shù)和main函數(shù)所在的行,查看“監(jiān)視”窗口中變量n的值,可以看到在不同的堆棧幀被激活時,OS Lab調(diào)試器會自動更新“監(jiān)視”窗口中的數(shù)據(jù),顯示出對應(yīng)于當(dāng)前活動堆棧幀的信息。 7. 結(jié)束此次調(diào)試。 (3) EOS內(nèi)核項目的生成和調(diào)試:3.1)新建EOS內(nèi)核項目 新建一個EOS內(nèi)核項目的步驟如下
12、: 1. 在“文件”菜單中選擇“新建”,然后單擊“項目”。 2. 在“新建項目”對話框中,選擇項目模板“EOS Kernel”。 3. 在“名稱”中輸入新項目使用的文件夾名稱“eos”。 4. 在“位置”中輸入新項目保存在磁盤上的位置“C:”。 5. 點擊“確定”按鈕。 此項目就是一個EOS操作系統(tǒng)內(nèi)核項目,包含了EOS操作系統(tǒng)內(nèi)核的所有源代碼文件。3.2)生成項目1. 按F7生成項目,同時查看“輸出”窗口中的內(nèi)容,確認(rèn)生成成功。 2. 打開C:eosdebug文件夾,查看生成的對象文件和目標(biāo)文件。找到boot.bin、loader.bin和kernel.dll三個二進(jìn)制文件,這三個文件就是E
13、OS操作系統(tǒng)在運行時需要的可執(zhí)行文件。OS Lab每次啟動運行EOS操作系統(tǒng)之前,都會將這三個文件寫入一個軟盤鏡像文件中,然后讓虛擬機(jī)運行這個軟盤鏡像中的EOS(相當(dāng)于將寫有這三個二進(jìn)制文件的軟盤放入一個物理機(jī)的軟盤驅(qū)動器中,然后按下開機(jī)按鈕)。找到libkernel.a文件,此文件是EOS內(nèi)核文件kernel.dll對應(yīng)的導(dǎo)入庫文件。3.3)調(diào)試項目 1. 在“項目管理器”窗口的ke文件夾中找到start.c文件節(jié)點,雙擊此文件節(jié)點使用源代碼編輯器打開start.c文件。 2. 在start.c文件中KiSystemStartup函數(shù)的“KiInitializePic();”語句所在行(第6
14、1行)添加一個斷點。EOS啟動時執(zhí)行的第一個內(nèi)核函數(shù)就是KiSystemStartup函數(shù)。 3. 按F5啟動調(diào)試,虛擬機(jī)開始運行軟盤鏡像中的EOS。在虛擬機(jī)窗口中可以看到EOS啟動的過程。隨后EOS會在剛剛添加的斷點處中斷執(zhí)行。激活虛擬機(jī)窗口可以看到EOS也不再繼續(xù)運行了。各種調(diào)試功能(包括單步調(diào)試、查看變量的值和各個調(diào)試工具窗口)的使用方法與調(diào)試Windows控制臺程序完全相同。4. 按F5繼續(xù)執(zhí)行。查看虛擬機(jī)窗口,顯示EOS操作系統(tǒng)已經(jīng)啟動,并且EOS的控制臺程序已經(jīng)開始運行了。5. 在“調(diào)試”菜單中選擇“停止調(diào)試”,結(jié)束此次調(diào)試。 3.4)查看軟盤鏡像文件中的內(nèi)容 在“項目管理器”窗口
15、中雙擊軟盤鏡像文件Floppy.img,就會使用FloppyImageEditor工具打開此文件(在FloppyImageEditor工具中按F1可以查看此工具的幫助文件)。在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,這兩個文件都是在啟動調(diào)試時被寫入軟盤鏡像文件的(可以查看這兩個文件的修改日期)。boot.bin文件在啟動調(diào)試時被寫入了軟盤鏡像的引導(dǎo)扇區(qū)中,不受軟盤文件系統(tǒng)的管理,所以在文件列表中找不到此文件。關(guān)閉FloppyImageEditor工具。3.5) 查看EOS SDK(Software Development K
16、it)文件夾 1. 點擊OS Lab工具欄上的“項目配置”下拉列表,選擇下拉列表中的“Release”項目配置,“Release”項目配置被設(shè)置為新的活動項目配置(原來的活動項目配置是“Debug”)。2. 按F7使用Release配置生成項目。 3. 生成完畢后,使用Windows資源管理器打開C:eos文件夾,可以發(fā)現(xiàn)在文件夾中多出了一個SDK文件夾,此文件夾就是在生成EOS Kernel項目的同時自動生成的。 4. SDK文件夾中提供了開發(fā)EOS應(yīng)用程序需要的所有文件。打開SDK文件夾中的bin文件夾,可以看到有兩個名稱分別為debug和release的文件夾。debug文件夾是在使用d
17、ebug配置生成項目時生成的,其中存放了調(diào)試版本的EOS二進(jìn)制文件。release文件夾是在使用release配置生成項目時生成的,其中存放了發(fā)布版本的EOS二進(jìn)制文件(不包含調(diào)試信息)。分別打開這兩個文件夾查看其中包含的文件。 5. 打開SDK文件夾中的inc文件夾,可以看到此文件夾中存放了EOS用于導(dǎo)出API函數(shù)和重要數(shù)據(jù)類型定義的頭文件,在編寫EOS應(yīng)用程序時必須包含這些頭文件。 每次在開發(fā)EOS應(yīng)用程序之前都應(yīng)該使用EOS Kernel項目的debug配置和release配置來生成EOS Kernel項目,這樣才能夠得到完全版本的SDK文件夾供EOS應(yīng)用程序使用。(4)EOS應(yīng)用程序項
18、目的生成和調(diào)試1)新建EOS應(yīng)用程序項目 新建一個EOS應(yīng)用程序項目的步驟如下: 1. 在“文件”菜單中選擇“新建”,然后單擊“項目”。 2. 在“新建項目”對話框中,選擇項目模板“EOS 應(yīng)用程序”。 3. 在“名稱”中輸入新項目使用的文件夾名稱“eosapp”。 4. 在“位置”中輸入新項目保存在磁盤上的位置“C:”。 5. 點擊“確定”按鈕。 2)生成項目 1. 按F7生成項目,同時查看“輸出”窗口中的內(nèi)容,確認(rèn)生成成功。 2. 打開C:eosappdebug文件夾,查看生成的對象文件和目標(biāo)文件。其中的EOSApp.exe就是EOS應(yīng)用程序的可執(zhí)行文件。OS Lab每次啟動執(zhí)行EOS應(yīng)用
19、程序時,都會將EOS應(yīng)用程序的可執(zhí)行文件寫入軟盤鏡像,并且會將SDK文件夾中對應(yīng)配置(Debug或Release)的二進(jìn)制文件寫入軟盤鏡像,然后讓虛擬機(jī)運行軟盤鏡像中的EOS,待EOS啟動后再自動執(zhí)行EOS應(yīng)用程序。 3)調(diào)試項目 調(diào)試EOS應(yīng)用程序項目與之前的兩個項目有較大的不同,之前的兩個項目在調(diào)試時都是先添加斷點再啟動調(diào)試,而EOS應(yīng)用程序項目必須先啟動調(diào)試再添加斷點,步驟如下: 1. 按F5啟動調(diào)試。OS Lab會彈出一個調(diào)試異常對話框,選擇“是”調(diào)試異常,EOS應(yīng)用程序會中斷執(zhí)行,黃色箭頭指向下一個要執(zhí)行的代碼行。 2. 在eosapp.c的 printf("Hello w
20、orld!n"); 代碼行添加一個斷點,然后按F5繼續(xù)調(diào)試,在此斷點處中斷。 3. 按F10單步調(diào)試,查看虛擬機(jī)窗口,打印輸出了“Hello world!”。 4. 按F5繼續(xù)調(diào)試,查看虛擬機(jī)窗口,EOS應(yīng)用程序執(zhí)行完畢。 5. 在“調(diào)試”菜單中選擇“停止調(diào)試”,調(diào)試被終止。 6. 選擇“調(diào)試”菜單中的“刪除所有斷點”。只有刪除所有斷點后才能按F5再次啟動調(diào)試,否則啟動調(diào)試會失敗。4)查看軟盤鏡像文件中的內(nèi)容 使用FloppyImageEditor工具打開該項目中的Floppy.img文件,查看軟盤鏡像中的文件。loader.bin和kernel.dll是從C:eosappsdkbindebug文件夾寫入C:eosappsdkbindebugboot.bin被寫入了軟盤鏡像文件的引導(dǎo)扇區(qū)中。eosapp.exe就是本項目生成的EOS應(yīng)用程序。EOS操作系統(tǒng)啟動后會根據(jù)autorun.txt文本文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕婦用枕產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 廚房用隔熱手套產(chǎn)品供應(yīng)鏈分析
- 制版機(jī)產(chǎn)品供應(yīng)鏈分析
- 建筑用外墻涂料采購合同
- 5G農(nóng)業(yè)現(xiàn)代化行業(yè)相關(guān)項目經(jīng)營管理報告
- 自行車支架市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 印刷的漫畫書產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 塑料制果汁盒托架產(chǎn)品供應(yīng)鏈分析
- 雙眼皮膠產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 粉撲項目運營指導(dǎo)方案
- 【行業(yè)】電動車動力電池包高清大圖賞析
- 機(jī)械設(shè)備工程工程量清單計價PPT課件
- F1等級砝碼標(biāo)準(zhǔn)報告
- 醫(yī)院物資管理規(guī)定
- 漆黑的魅影5.0二周目圖文攻略
- GL-585W90重負(fù)荷齒輪油質(zhì)量指標(biāo)
- 土地利用現(xiàn)狀上色標(biāo)準(zhǔn)表
- 超聲波—微波輔助酸浸提純硅藻土的試驗研究
- 康復(fù)醫(yī)學(xué)科治療范圍和收費
- kk 2mw控制系統(tǒng)結(jié)構(gòu)(version 40)
- 最新藥品檢驗收費標(biāo)準(zhǔn)
評論
0/150
提交評論