版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、操作系統(tǒng)課程設(shè)計報告題目:磁盤調(diào)度算法院系:信息學(xué)院班級:信管11-2姓名:王裕辰學(xué)號:1101051024指導(dǎo)教師:趙華、概述本次設(shè)計的程序主要功能是模擬訪問磁盤的過程,實現(xiàn)先來先服務(wù)調(diào)度算法、最短 尋道時間調(diào)度算法、掃描算法、循環(huán)掃描算法四個磁盤調(diào)度算法,并根據(jù)輸入的數(shù)據(jù)和 所選擇的調(diào)度算法輸出每種調(diào)度算法的磁盤訪問順序,計算并輸出四個算法的平均尋道 長度。本程序主要實現(xiàn)磁盤訪問的順序,輸出四種不同的磁盤調(diào)度算法的磁盤訪問結(jié)果, 并計算出各自的平均尋道長度。以此來對四種調(diào)度算法的性能進行評價。、設(shè)計的基本概念和原理1、基本概念(1)當前磁道號:磁頭當前時刻所在磁盤的磁道編號。(2)被訪問的
2、下一個磁道號:需要訪問的下一個磁盤的磁道編號。(3)移動距離:磁頭從當前磁道移動到被訪問的下一個磁道號所需移動的磁道數(shù)。2、基本原理(1)先來先服務(wù)(FCFS,F(xiàn)irst Come First Served)按照進程請求訪問磁盤的先后次序進行從小到大排序,每次訪問最先請求訪問的磁道。 這樣是每個進程的請求都能夠依次地得到處理,不會出現(xiàn)某一進程的請求長期得不到滿 足的情況(2)最短尋道時間優(yōu)先(SSTF, Shortest Seek Time First)要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短。磁頭每次 都移動到距離當前磁道距離最小的磁道上。(3)掃描算法(SCAN)
3、將請求訪問的磁道號進行排序(升序或降序),磁頭按照磁道號從大到小或從小到達的 順序訪問磁盤。(4)循環(huán)掃描算法(CSCAN)磁頭從當前磁道從里向外(或從外向里)訪問磁道,當訪問到最外(或最里)的磁道并 訪問后,磁頭立即返回最里的(或最外)的欲訪問的磁道,即最小(或最大)的磁道號 緊接著最大(或最?。┐诺捞枠?gòu)成循環(huán),進行循環(huán)掃描。三、總體設(shè)計本程序才用了結(jié)構(gòu)化程序設(shè)計方法,將程序進行模塊化處理。首先將進程訪問磁盤的請 求抽象為一個類,用用戶所輸入的數(shù)據(jù)來把每個對象來初始化。然后分塊地調(diào)用不同的 函數(shù)實現(xiàn)不同的調(diào)度算法。本程序包括以下三個模塊:(1)預(yù)定義及進程類定義模塊定義程序所用到的頭文件和常
4、量。定義請求類的類成員,成員函數(shù)以及輸出請求類的類成員的輸出函數(shù)(2)主程序模塊包括以下五個步驟選擇進程調(diào)度算法輸入請求調(diào)用所選的磁盤調(diào)度算法計算每個請求的移動距離輸出磁盤訪問順序和每個請求的移動距離,計算并輸出所選算法的平均尋道長度(3)其它函數(shù)模塊定義了四種調(diào)度算法和程序中調(diào)用的其他函數(shù)。程序流程圖如下圖所示四、詳細設(shè)計每個模塊的代碼及分析如下:1、預(yù)定義及進程類定義模塊#include stdafx.h#include #include #include using namespace std;#define Startnumber 100 /開始訪問的磁道號#define Max 10
5、0 進程最大值class Requestprivate:intnumber,distance,difference;/ number-被訪問的下一個磁道號distance-移動距離difference-被訪問的下一 個磁道與當前磁道的距離public:intgetnumber()/返回被訪問的下一個磁道號return number;-intgetdistance()/返回移動距離return distance;intgetdifference()/返回被訪問的下一個磁道與當前磁道的距離return difference;void setnumber(int t)/設(shè)置被訪問的下一個磁道號num
6、ber=t;void setdistance(int t)/ 設(shè)置移動距離distance=t;void setdifference(int t)/設(shè)置被訪問的下一個磁道與當前磁道的距離differencevoid show() const 輸出被訪問的下個磁道號和移動距離coutsetw(17)numbersetw(6)distanceendl;2、主程序模塊 int main(intargc, char* argv)inti,c,num,option,choice;double averdis;/平均尋道長度Request requestMax; /請求數(shù)組存放請求while(1)cout
7、磁盤調(diào)度算法endlendl;cout1.先來先服務(wù)2.最短尋道時間優(yōu)先endl;cout3.掃描算法4.循環(huán)掃描算法endl;cout0.退出endl;coutendl;coutchoice; 輸入選擇的調(diào)度算法if(choice=0)return 0;elsecoutc;for(i=0;ic;i+) 輸入請求中的數(shù)據(jù)并初始化請求數(shù)組cout請輸入第i+1個請求endl;cout被訪問的下一個磁道號num;requesti.setnumber(num);if(choice=1)FCFS(request,c); 調(diào)用先來先服務(wù) if(choice=2) SSTF(request,c);/調(diào)用
8、SSTFFCFS(request,c);/調(diào)用先來先服務(wù)計算移動距離 if(choice=3|choice=4)/若選擇SCAN或CSCAN則需要選擇訪問方向 cout選擇訪問方向:endl;cout”1.向磁道號增加方向2.向磁道號遞減方向endl;coutoption;/選擇訪問方向 if(choice=3)SCAN(request,c,option);/調(diào)用 SCAN if(choice=4)CSAN(request,c,option);/調(diào)用 CSCAN FCFS(request,c);/調(diào)用先來先服務(wù)計算移動距離averdis=calcuaverage(request,c);/ 計算
9、平均尋道長度coutsetw(20)下一個磁道號setw(6)移動距離(磁道數(shù))endl;for(i=0;ic;i+)/輸出調(diào)度結(jié)果和訪問順序。requesti.show();cout平均尋道長度為:;coutaverdisendl;/輸出平均尋道長度return 0;3、其它函數(shù)模塊void FCFS(Request *req,int count)/先來先服務(wù)inti,currentnumber;for(i=0;icount;i+)if(i=0)/第一個請求的移動距離為它的磁道號與Startnumber的差reqi.setdistance(abs(reqi.getnumber()-Start
10、number);currentnumber=reqi.getnumber();else 其他請求的移動距離為其磁道號與上一個請求磁道號的差reqi.setdistance(abs(reqi.getnumber()-currentnumber);currentnumber=reqi.getnumber();double calcuaverage(Request *req,int count)/求平 均尋道長度inti;double aver;aver=0;for(i=0;icount;i+)aver+=reqi.getdistance();aver=aver/count;return aver;
11、void asc(Request *req,int count)/ 按磁道號遞增排序inti,j;Request temp;for(i=0;icount;i+)for(j=i;jcount;j+)if(reqj.getnumber()reqi.getnumber()temp=reqj;reqj=reqi;reqi=temp;void dec(Request *req,int count)/ 按磁道號遞減排序inti,j;Request temp;for(i=0;icount;i+)for(j=i;jreqi.getnumber()temp=reqj;reqj=reqi;reqi=temp;vo
12、id SSTF(Request *req,int count)/最短尋道時間優(yōu)先inti,currentnumber,j,k,min,flagminMax,flag;Request mediareqMax;for(i=0;icount;i+)flagmini=0;currentnumber=Startnumber;k=0;for(i=0;icount;i+)求所有磁道號與當前磁道的差for(j=0;jcount;j+)reqj.setdifference(abs(reqj.getnumber()-currentnumber);找磁道差的最小值,并把此請求放入中間數(shù)組中,其磁道作為當前磁道for
13、(j=0;jcount;j+) 每次將沒有訪問的磁道的磁道差作為最小值if(flagminj=0)min=reqj.getdifference();flag=j;break;for(j=0;jcount;j+)/找磁道差的最小值if(reqj.getdifference()min&flagminj=0)/將磁道差小于 min 且沒有訪問 的磁道差作為最小值min=reqj.getdifference();flag=j;/ flag記錄磁道差最小的請求號flagminflag=1;mediareqk+=reqflag;/找到的請求放入中間數(shù)組中currentnumber=reqflag.getn
14、umber();/ 磁道號作為當前磁道for(i=0;icount;i+)reqi=mediareqi;void SCAN(Request *req,intcount,int p)/掃描算法inti,j,k,l;Request mediamaxMax,mediaminMax;j=0;k=0;for(i=0;iStartnumber)mediamaxj+=reqi;if(reqi.getnumber()Startnumber)mediamink+=reqi;asc(mediamax,j);dec(mediamin,k);if(p=1)/向磁道號增加的方向訪問,先訪問大于開始磁道號的磁道,再訪問小
15、于Startnumber 的for(i=0;ij;i+)reqi=mediamaxi;for(i=j,l=0;icount,lk;i+,l+)reqi=mediaminl;else向磁道號減少的方向訪問,先訪問小于Startnumber的磁道,再訪問大于Startnumber 的for(i=0;ik;i+)reqi=mediamini;for(i=k,l=0;ivcount,lvj;i+,l+)reqi=mediamaxl;void CSAN(Request *req,intcount,int p)inti,j,k,l;Request mediamaxMax,mediaminMax;j=0;k
16、=0;for(i=0;iStartnumber)mediamaxj+=reqi;if(reqi.getnumber()Startnumber)mediamink+=reqi;if(p=1)/向磁道號增加的方向訪問asc(mediamin,k);/將小于Startnumber的磁道的請求按磁道號升序排序asc(mediamax,j);/將大于Startnumber的磁道的請求按磁道號升序排序for(i=0;ij;i+)reqi=mediamaxi;for(i=j,l=0;ivcount,lvk;i+,l+)reqi=mediaminl;elsedec(mediamin,k);/將小于于Start
17、number的磁道的請求按磁道號降序排序dec(mediamax,j);/將大于Startnumber的磁道的請求按磁道號降序排序for(i=0;ik;i+)/將 請求重新排序reqi=mediamini;for(i=k,l=0;ivcount,lvj;i+,l+)reqi=mediamaxl;五、測試與數(shù)據(jù)分析選擇FCFS算法,輸入以下請求信息:被訪問的下一個磁道號移動距離(磁道數(shù))5545583391918219072160701501038112184146可以得到先來先服務(wù)調(diào)度算法的平均尋道時間(應(yīng)為55.3)。選擇最短尋道時間調(diào)度算法,再次輸入上述請求信息??梢缘玫絊STF的平均尋道
18、 時間(應(yīng)為27.5)。選擇掃描算法,再次輸入以上請求信息,選擇向磁道號增加的方向訪問,則得到掃 描算法的平均尋道長度(應(yīng)為27.8)。選擇循環(huán)掃描算法,再次輸入上述請求信息,選擇向磁道號增加的方向訪問,得到 循環(huán)掃描算法的平均尋道時間(應(yīng)為35.8)將上述四個調(diào)度算法得到的平均尋道時間進行比較,可以對這四種算法的性能進行 分析和比較,對這四個磁盤調(diào)度算法有了更深入的理解。六、完成的情況、簡要的使用說明本程序經(jīng)過了調(diào)試,能夠正常運行,并能夠得到正確的結(jié)果。但使用時應(yīng)注意以下 幾個問題:1、選擇調(diào)度算法的時候只能輸入0、1、2、3、4這五個數(shù)字,若輸入其它字符 將造成程序進入死循環(huán)。2、進行掃描
19、算法和循環(huán)掃描算法時,選擇訪問方向只能為1或2,若輸入其它 字符將造成程序進入死循環(huán)。3、在輸入請求信息之前,應(yīng)確定請求的數(shù)目,并輸入。4、本程序需要逐個輸入請求的信息,對于請求數(shù)目比較多的時候會花費較長的 時間。故本程序最好用于請求數(shù)目較少的情況。5、程序中的開始磁道號(Startnumber)為常量,用戶無法輸入但可以在程序代 碼中進行修改。七、結(jié)果分析運行程序界面如如下圖所示C:Use rsWCD es ktop0 深程設(shè)計、磋坦調(diào)度DI SKDi patchDeb u gDIS KDi patch.ex e藏盤調(diào)度算法2遢丑尋道時間優(yōu)先4 ,循環(huán)掃描具法請輸羌你選擇的調(diào)度算法:選擇1,
20、輸入五測試與數(shù)據(jù)分析中的數(shù)據(jù),得到如下所示C:Use rsWCD es ktop0 深呈設(shè)計 L 磋坦調(diào)度DI SKDi pate hDeb u gDIS KD i patch .ex e清輸zfef爾選擇的調(diào)度算法:3ir2遢丑尋道時間優(yōu)先4 ,循環(huán)掃描具法下一個磁道號移動距離其磁道數(shù))5545583391918219072160701501S38184112146平均尋道長度為:55.3333磁盤調(diào)度算法選擇2,再次輸入上述數(shù)據(jù),得到如下所示C:Use rsWVCDes top0 深程設(shè)計、磋坦調(diào)度D1 SKDi patchDeb u gDIS KDi patch.exe清輸:A你選擇的調(diào)度算法:2遢短尋道時間優(yōu)先 4:循環(huán)掃箱算法下頃磁道號移動距離笑磁道數(shù))9S58325533916381182S15S1321S18424平均尋道長度為W 27-55S6磁盤調(diào)度算法選擇3,再輸入上述數(shù)據(jù),選擇向磁道號增加的方向訪問,得到如下所示C:Use rsV/YCD es ktop0 深程設(shè)計 k 磋坦調(diào)度D1 SKDi patchDeb u gDISKOipatch.exe管愕口方向2
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CCAA - 2017年12月環(huán)境管理體系基礎(chǔ)答案及解析 - 詳解版(80題)
- CCAA - 2015服務(wù)標準化與服務(wù)認證答案及解析 - 詳解版(77題)
- 企業(yè)員工培訓(xùn)與技能發(fā)展路徑目標制度
- 人教版(2026)八年級下冊英語寒假預(yù)習(xí)講義(含練習(xí)題及答案)
- 老年終末期認知障礙非藥物干預(yù)策略
- 老年終末期患者跌倒預(yù)防的循證護理方案
- T∕SMA 0081-2025 船舶油水計量系統(tǒng)測試方法
- 2025年長沙瀏陽市人民醫(yī)院招聘筆試真題
- 貴金屬回收提純工安全素養(yǎng)測試考核試卷含答案
- 衛(wèi)星通信機務(wù)員操作水平競賽考核試卷含答案
- CJ/T 164-2014節(jié)水型生活用水器具
- 購銷合同范本(塘渣)8篇
- 貨車充電協(xié)議書范本
- 屋面光伏設(shè)計合同協(xié)議
- 生鮮業(yè)務(wù)采購合同協(xié)議
- 夫妻門衛(wèi)合同協(xié)議
- 公司雙選工作方案
- GB/T 4340.2-2025金屬材料維氏硬度試驗第2部分:硬度計的檢驗與校準
- 銷售合同評審管理制度
- 泳池突發(fā)安全事故應(yīng)急預(yù)案
- 村財務(wù)管理制度
評論
0/150
提交評論