實驗6時間片輪轉調度_第1頁
實驗6時間片輪轉調度_第2頁
實驗6時間片輪轉調度_第3頁
實驗6時間片輪轉調度_第4頁
實驗6時間片輪轉調度_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、華北電力大學實驗報告|實驗名稱時間片輪轉調度課程名稱計算機操作系統(tǒng)專業(yè)班級:軟件1002學生姓名:趙策學 號:201009020228 成 績:指導教師:宋亞奇實驗日期:實驗目的及要求調試EOS的線程調度程序,熟悉基于優(yōu)先級的搶先式調度。為EOS添加時間片輪轉調度,了解其它常用的調度算法。實驗設備及儀器OS Lab集成實驗環(huán)境二.實驗方法及環(huán)境準備實驗1)啟動OS Lab。2)新建一個EOS Kernel項目。閱讀控制臺命令“rr”相關的源代碼1)按F7生成在本實驗3. 1中創(chuàng)建的EOS Kernel項目。2)按F5啟動調試。3)待EOS啟動完畢,在EOS控制臺中輸入命令“rr”后按回車。 O

2、S Lab FC - licrosoft Virtual FC 200TAction Edi t CD Floppy HelpCONSOLE-1 (Press Ctrl+F1F8 to switch console uindou.) Thread 0 (8): 497403.調試線程調度程序a)調試當前線程不被搶先的情況1)結束之前的調試。2)在ke/sysproc.c文件的ThreadFunction函數(shù)中,調用fprintf函數(shù)的代碼行(第680 行)添加一個斷點。3)按F5啟動調試。4)待EOS啟動完畢,在EOS控制臺中輸入命令“rr”后按回車?!皉r”命令開始執(zhí)行后, 會在斷點處中斷。

3、5)查看ThreadFunction函數(shù)中變量pThreadParameter-Y的值應該為0,說明正在調試 的是第0個新建的線程。6)激活虛擬機窗口,可以看到第0個新建的線程還沒有在控制臺中輸出任何內容,原因 是fprintf函數(shù)還沒有執(zhí)行。7)激活OS Lab窗口后按F5使第0個新建的線程繼續(xù)執(zhí)行,又會在斷點處中斷。再次 激活虛擬機窗口,可以看到第0個新建的線程已經在控制臺中輸出了第一輪循環(huán)的內 容??梢远喟磶状蜦5查看每輪循環(huán)輸出的內容。b)調試當前線程被搶先的情況1)選擇“調試”菜單中的“刪除所有斷點”,刪除之前添加的所有斷點。2)在ps/sched.c文件的PspSelectNext

4、Thread函數(shù)的第395行添加一個斷點。3)按F5繼續(xù)執(zhí)行,激活虛擬機窗口,可看到第0個新建的線程正在執(zhí)行。4)在虛擬機窗口中按下一次空格鍵,EOS會在之前添加的斷點處中斷。5)在“監(jiān)視”窗口中查看就緒位圖的值為1000000000000000100000001,說明此時在 優(yōu)先級為24的就緒隊列中存在就緒線程。在“監(jiān)視”窗口中添加表達式 “ListGetCount(&PspReadyListHeads24) ”,其值為 1,說明優(yōu)先級為 24 的就緒隊列 中只有一個就緒線程。掃描就緒位圖后獲得的最高優(yōu)先級的值HighestPriority也就應 該是24。6)按F10單步調試一次,執(zhí)行的語

5、句會將當前正在執(zhí)行的第0個新建的線程,放入 優(yōu)先級為8的就緒隊列的隊首?!氨O(jiān)視”窗口中顯示的優(yōu)先級為8的就緒隊列中的線程 數(shù)量就會增加1,變?yōu)?0。7)繼續(xù)按F10單步調試,直到在第444行中斷執(zhí)行,注意觀察線程調度執(zhí)行的每一 個步驟。此時,正在執(zhí)行的第0個新建的線程已經進入了 “就緒”狀態(tài),讓出了 CPU。 線程調度程序接下來的工作就是選擇優(yōu)先級最高的非空就緒隊列的隊首線程作為當前運 行線程,也就是讓優(yōu)先級為24的線程在CPU上執(zhí)行。8)按F10單步調試一次,當前線程PspCurrentThread指向了優(yōu)先級為24的線程。 可以在快速監(jiān)視”窗口中查看表達式“*PspCurrentThrea

6、d”的值,注意線程控制塊中 StartAddr 域的值為 IopConsoleDispatchThread 函數(shù)(在文件 io/console.c 中定義), 說明這個優(yōu)先級為24的線程是控制臺派遣線程。9)繼續(xù)按F10單步調試,直到在PspSelectNextThread函數(shù)返回前(第465行)中 斷執(zhí)行,注意觀察線程調度執(zhí)行的每一個步驟。此時,優(yōu)先級為24的線程已經進入了“運 行”狀態(tài),在中斷返回后,就可以開始執(zhí)行了。在“監(jiān)視”窗口中,就緒位圖的值變?yōu)?100000001,優(yōu)先級為24的就緒隊列中線程的數(shù)量變?yōu)?,就緒位圖和就緒隊列都是在 剛剛被調用過的PspUnreadyThread函數(shù)

7、內更新的。10)刪除所有斷點后結束調試。4.為EOS添加時間片輪轉調度a)要求:修改ps/sched.c文件中的PspRoundRobin函數(shù)(第337行),在其中實現(xiàn)時 間片輪轉調度算法。b)測試:1)代碼修改完畢后,按F7生成EOS內核項目。2)按F5啟動調試。3)在EOS控制臺中輸入命令“rr”后按回車。應能看到20個線程輪流執(zhí)行的效果.設計代碼VOIDPspRoundRobin(VOID)(if(NULL!二PspCurrentThread&Running=PspCurrentThread-State)(PspCurrentThread-RemainderTicks-;if (0 =

8、PspCurrentThread-RemainderTicks) (PspCurrentThread-RemainderTicks = TICKS_OF_TIME_SLICE;if(BIT_TEST(PspReadyBitmap,PspCurrentThread-Priority)( PspReadyThread(PspCurrentThread);四.思考題修改線程時間片的大?。涸诔晒镋OS添加了時間片輪轉調度后,將ps/psp.h第104行定義的 TICKS_OF_TIME_SLICE的值修改為1。在EOS控制臺中輸入命令“rr”后按回車。觀 察執(zhí)行的效果。還可以按照上面的步驟為TICK

9、S OF TIME SLICE取一些其它的極端值,例如20或100等,分別觀察“rr”命令執(zhí)行的效果。通過分析造成執(zhí)行效果不同 的原因,理解時間片的大小對時間片輪轉調度造成的影響。1) TICKS_OF_TIME_SLICE 的值為 12)3) TICKS_OF_TIME_SLICE 的值為 100; OS l_3b PC - Microsoft Virtual PC 2007I Action_Edit_CD Floppy_HelpCOMSOLE-l (Press Ctrl+F1F8 to switch console uindcu.)ThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThreadThread0 (8): TOC o 1-5 h z (8):(8):(8):(8):(8):(8):(8): B (8):(8)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論