操作系統(tǒng)實驗磁盤調度

操作系統(tǒng)實驗磁盤調度

ID:34181639

大?。?.20 MB

頁數(shù):25頁

時間:2019-03-04

操作系統(tǒng)實驗磁盤調度_第1頁
操作系統(tǒng)實驗磁盤調度_第2頁
操作系統(tǒng)實驗磁盤調度_第3頁
操作系統(tǒng)實驗磁盤調度_第4頁
操作系統(tǒng)實驗磁盤調度_第5頁
資源描述:

《操作系統(tǒng)實驗磁盤調度》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫

1、操作系統(tǒng)實驗報告課程名稱操作系統(tǒng)實驗課程編號0906553實驗項目名稱磁盤調度算法學號年級2012姓名專業(yè)計算機科學與技術學生所在學院計算機科學與技術指導教師初妍實驗室名稱地點21B475哈爾濱工程大學計算機科學與技術學院24第六講磁盤調度算法一、實驗概述1.實驗名稱磁盤調度算法2.實驗目的(1)通過學習EOS實現(xiàn)磁盤調度算法的機制,掌握磁盤調度算法執(zhí)行的條件和時機;(2)觀察EOS實現(xiàn)的FCFS、SSTF和SCAN磁盤調度算法,了解常用的磁盤調度算法;(3)編寫CSCAN和N-Step-SCAN磁盤調度算法,加深對各種掃描算法的理解。3.實驗類型驗證性和設計性實驗4.

2、實驗內容(1)驗證先來先服務(FCFS)磁盤調度算法;(2)驗證最短尋道時間優(yōu)先(SSTF)磁盤調度算法;(3)驗證SSTF算法造成的線程“饑餓”現(xiàn)象;(4)驗證掃描(SCAN)磁盤調度算法;(5)改寫SCAN算法。二、實驗環(huán)境在OSLab實驗環(huán)境的基礎上,利用EOS操作系統(tǒng),由匯編語言及C語言編寫代碼,對需要的項目進行生成、調試、查看和修改,并通過EOS應用程序使內核從源代碼變?yōu)榭梢栽谔摂M機上使用。三、實驗過程1.設計思路和流程圖(1)改寫SCAN算法在已有SCAN算法源代碼的基礎上進行改寫,要求不再使用雙重循環(huán),而是只遍歷一次請求隊列中的請求,就可以選中下一個要處理

3、的請求。算法流程圖如下圖所示。24圖3.1.1SCAN算法IopDiskSchedule函數(shù)流程圖(2)編寫循環(huán)掃描(CSCAN)磁盤調度算法在已經(jīng)完成的SCAN算法源代碼的基礎上進行改寫,不再使用全局變量ScanInside確定磁頭移動的方向,而是規(guī)定磁頭只能從外向內移動。當磁頭移動到最內的被訪問磁道時,磁頭立即移動到最外的被訪問磁道,即將最大磁道號緊接著最小磁道號構成循環(huán),進行掃描。算法流程圖如下圖所示。圖3.1.2CSCAN算法IopDiskSchedule函數(shù)流程圖(3)編寫N-Step-SCAN磁盤調度算法在已經(jīng)完成的SCAN算法源代碼的基礎上進行改寫,將請求

4、隊列分成若干個長度為N的子隊列,調度程序按照FCFS原則依次處理這些子隊列,而每處理一個子隊列時,又是按照SCAN算法。算法流程圖如下圖所示。24圖3.1.3N-Step-SCAN算法IopDiskSchedule函數(shù)流程圖2.算法實現(xiàn)(1)改寫SCAN算法在一次遍歷中,不再關心當前磁頭移動的方向,而是同時找到兩個方向上移動距離最短的線程所對應的請求,這樣就不再需要遍歷兩次。在計算出線程要訪問的磁道與當前磁頭所在磁道的偏移后,可以將偏移分為三種類型:偏移為0,表示線程要訪問的磁道與當前磁頭所在磁道相同,此情況應該優(yōu)先被調度,可立即返回該線程對應的請求的指針;偏移大于0,

5、記錄向內移動距離最短的線程對應的請求;偏移小于0,記錄向外移動距離最短的線程對應的請求。循環(huán)結束后,根據(jù)當前磁頭移動的方向選擇同方向移動距離最短的線程,如果在同方向上沒有線程,就變換方向,選擇反方向移動距離最短的線程。(2)編寫循環(huán)掃描(CSCAN)磁盤調度算法由于規(guī)定了磁頭只能從外向內移動,所以在每次遍歷中,總是同時找到向內移動距離最短的線程和向外移動距離最長的線程。注意,與SCAN算法查找向外移動距離最短線程不同,這里查找向外移動距離最長的線程。在開始遍歷前,可以將用來記錄向外移動最長距離的變量賦值為0。在計算出線程要訪問的磁道與當前磁頭所在磁道的偏移后,同樣可以將

6、偏移分為三種類型:偏移為240,表示線程要訪問的磁道與當前磁頭所在磁道相同,此情況應優(yōu)先被調度,可立即返回該線程對應的請求的指針;偏移大于0,記錄向內移動距離最短的線程對應的請求;偏移小于0,記錄向外移動距離最長的線程對應的請求。循環(huán)結束后,選擇向內移動距離最短的線程,如果沒有向內移動的線程,就選擇向外移動距離最長的線程。(3)編寫N-Step-SCAN磁盤調度算法在block.c文件中的第360行定義了一個宏SUB_QUEUE_LENGTH,表示子隊列的長度(即N值)。目前這個宏定義的值為6。在第367行定義了一個全局變量SubQueueRemainLength,表示

7、第一個子隊列剩余的長度,并初始化其值為SUB_QUEUE_LENGTH。在執(zhí)行N-Step-SCAN算法時,要以第一個子隊列剩余的長度做為計數(shù)器,確保只遍歷第一個子隊列剩余的項。所以,結束遍歷的條件就既包括第一個子隊列結束,又包括整個隊列結束(如果整個隊列的長度小于第一個子隊列剩余的長度)。注意,不要直接使用第一個子隊列剩余的長度做為計數(shù)器,可以定義一個新的局部變量來做為計數(shù)器。按照SCAN算法從第一個子隊列剩余的項中選擇一個合適的請求。最后,需要將第一個子隊列剩余長度減少1(SubQueueRemainLength減少1),如果第一個子

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。