磁盤調(diào)度算法實(shí)驗(yàn)設(shè)計(jì)報(bào)告_第1頁
磁盤調(diào)度算法實(shí)驗(yàn)設(shè)計(jì)報(bào)告_第2頁
磁盤調(diào)度算法實(shí)驗(yàn)設(shè)計(jì)報(bào)告_第3頁
磁盤調(diào)度算法實(shí)驗(yàn)設(shè)計(jì)報(bào)告_第4頁
磁盤調(diào)度算法實(shí)驗(yàn)設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 /18實(shí)驗(yàn)五磁盤調(diào)度算法班級:xxxxxxxxxxxx姓名:xxxxxxxx學(xué)號:xxxxxxxxxxxxxxxxxxxxx上級日期:2018年11月成績:一、實(shí)驗(yàn)?zāi)康?通過磁盤調(diào)度算法設(shè)計(jì)一個磁盤調(diào)度模擬系統(tǒng),從而使磁盤調(diào)度算法更加形象化,容易理解,使磁盤調(diào)度的特點(diǎn)更簡單明了,加深對先來先服務(wù)算法、最短尋道時間優(yōu)先算法、掃描算法以及循環(huán)掃描算法等磁盤調(diào)度算法的理解二、實(shí)驗(yàn)內(nèi)容1、程序流程圖模塊調(diào)用關(guān)系圖模塊程序流程圖輸入磁道號按輸入順序?qū)⒋诺佬蛄休敵銮笃骄鶎さ篱L度輸出移動的平均磁道數(shù)FCFS算法(先來先服務(wù))流程圖開始輸入磁道號V1使用冒泡法從小到大排序X.-1輸出排好序的磁道序列輸入當(dāng)前

2、磁道號選擇與當(dāng)前磁道距離最近的磁道進(jìn)行掃描判斷當(dāng)刖磁頭在序列中的位置移動到最小(大)號,改向外(內(nèi))移動掃描未掃描的磁道求平均尋道長度輸出移動的平均磁道數(shù)結(jié)束SSTF(最短尋道時間優(yōu)先算法)流程圖SCAN算法(掃描算法)流程圖開始結(jié)束判斷當(dāng)前磁頭在序列中的位置掃描到最大號后,直接移動到最小號從內(nèi)向外J掃描未掃描的磁道規(guī)定移動臂單向反復(fù)的從內(nèi)向外掃描使用冒泡法從小到大排序輸出排好序的磁道序列輸出移動的平均磁道數(shù)輸入當(dāng)前磁道號求平均尋道長度輸入磁道號CSCAN算法(循環(huán)掃描算法)流程圖2、程序源碼1.#include2.#include3.#include4.#include5.usingname

3、spacestd;6.#definemaxsize10007/*判斷輸入數(shù)據(jù)是否有效*/8.intdecide(charstr)/判斷輸入數(shù)據(jù)是否有效9.10.inti=0;11.while(stri!=0)12.13.if(stri9)14.15.return0;16.break;17.18.i+;19.20.returni;21.22./*將字符串轉(zhuǎn)換成數(shù)字*/23.inttrans(charstr,inta)/將字符串轉(zhuǎn)換成數(shù)字24.25.inti;26.intsum=0;27.for(i=0;ia;i+)28.29.sum=sum+(int)(stri-0)*pow(10,a-i-1)

4、;30.31.returnsum;32.33/*冒泡排序算法*34.int*bubble(intcidao,intm)35.36.inti,j;37.inttemp;38.for(i=0;im;i+)/使用冒泡法按從小到大順序排列39.for(j=i+1;jcidaoj)42.temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;cout排序后的磁盤序列為:”;for(i=0;im;i+)/輸出排序結(jié)果coutcidaoi;coutendl;returncidao;/*先來先服務(wù)調(diào)度算法*/voidFCFS(intcidao,intm)/磁道號數(shù)組,個數(shù)為m43.44.4

5、4.85.86.intintintnow;/當(dāng)前磁道號sum=0;/總尋道長度j,i;inta;charstr100;floatave;/平均尋道長度cout”磁盤請求序列為:B:for(i=0;im;i+)coutcidaoicoutendl;coutstr;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=cout0)/按先來先服務(wù)的策略輸出磁盤

6、請求序列輸入數(shù)據(jù)的類型錯誤,請重新輸入!”endl;B;/輸出磁盤掃描序列g(shù)otoelsenow=trans(str,a);/輸入當(dāng)前磁道號sum+=abs(cidao0-now);cout”磁盤掃描序列為:for(i=0;im;i+)coutcidaoi87.for(i=0,j=1;jm;i+,j+)/求平均尋道長度88.89.sum+=abs(cidaoj-cidaoi);90.ave=(float)(sum)/(float)(m);91.92.coutendl;93.cout平均尋道長度:”aveendl;94.95/*最短尋道時間優(yōu)先調(diào)度算法*/96.voidSSTF(intcidao

7、,intm)97.98.intk=1;99.intnow,l,r;100.inti,j,sum=0;101.inta;102.charstr100;103.floatave;104.cidao=bubble(cidao,m);/調(diào)用冒泡排序算法排序105.coutstr;/對輸入數(shù)據(jù)進(jìn)行有效性判斷107.a=decide(str);108.if(a=0)109.110.cout輸入數(shù)據(jù)的類型錯誤,請重新輸入!endl;111.gotoC;112.113.else114.now=trans(str,a);/輸入當(dāng)前磁道號115.if(cidaom-1=now)/若當(dāng)前磁道號大于請求序列中最大者,

8、則直接由外向內(nèi)依次給予各請求服務(wù)116.117.cout=0;i-)119.coutcidaoi=now)/若當(dāng)前磁道號小于請求序列中最小者,則直接由內(nèi)向外依次給予各請求服務(wù)123.124.cout磁盤掃描序列為:;125.for(i=0;im;i+)126.coutcidaoicidao0&nowcidaom-1)/若當(dāng)前磁道號大于請求序列中最小者且小于最大者130.131.cout磁盤掃描序列為:”;132.while(cidaok=0)&(rm)/當(dāng)前磁道在請求序列范圍內(nèi)139.140.if(now-cidaol)=(cidaor-now)/選擇與當(dāng)前磁道最近的請求給予服務(wù)141.142

9、.coutcidaol;143.sum+=now-cidaol;144.now=cidaol;145.l=l-1;146.147.else148.149.coutcidaor;150.sum+=cidaor-now;151.now=cidaor;152.r=r+1;153.154.155.if(l=-1)/磁頭移動到序列的最小號,返回外側(cè)掃描仍未掃描的磁道156.157.for(j=r;jm;j+)158.159.coutcidaoj=0;j-)166.167.coutcidaoj;168.169.sum+=cidaom-1-cidao0;西南大學(xué)操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告

10、09.210.211. /1873.174.ave=(float)(sum)/(float)(m);coutendl;cout平均尋道長度:aveendl;78.179.180./xlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxI*1-I-II*1-4*1I.tt:丿0上f、,一I*xlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlxxlx/芥芥芥芥芥

11、芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥TpAtrt=冃.芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥芥/voidSCAN(intcidao,intm)/先要給出當(dāng)前磁道號和移動臂的移動方向181.k=1;now,l,r,d;i,j,sum=0;184.int88.189.D:190.191.192.a;charstr100;floatave;cidao=bubble(cidao,m);coutstr;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=調(diào)用冒泡排序算法排序193.cout194.195.196.got

12、oelse)輸入數(shù)據(jù)的類型錯誤,請重新輸入!”endl;D;now=trans(str,a);if(cidaom-1=now)內(nèi)依次給予各請求服務(wù),此情況同最短尋道優(yōu)先輸入當(dāng)前磁道號若當(dāng)前磁道號大于請求序列中最大者,則直接由外向03.cout=0;cidaoicidao0;cout=cout磁盤掃描序列為:”;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)且小于最大者若當(dāng)前磁道號大于請求序列中最小者213.214.while(cidaoknow)215.216.k+;217.218.l=k-1;219.

13、r=k;220.coutd;222.if(d=0)/選擇移動臂方向向內(nèi),則先向內(nèi)掃描223.224.cout=0;j-)226.227.coutcidaoj;/輸出向內(nèi)掃描的序列228.229.for(j=r;jm;j+)/磁頭移動到最小號,則改變方向向外掃描未掃描的磁道230.231.coutcidaoj;/輸出向外掃描的序列232.233.sum=now-2*cidao0+cidaom-1;234.235.else/選擇移動臂方向向外,則先向外掃描236.237.cout磁盤掃描序列為:;238.for(j=r;jm;j+)239.240.coutcidaoj=0;j-)/磁頭移動到最大號

14、,則改變方向向內(nèi)掃描未掃描的磁道243.244.coutcidaoj;245.246.sum=-now-cidao0+2*cidaom-1;247.248.249.ave=(float)(sum)/(float)(m);250.coutendl;251.cout平均尋道長度:aveendl;252.253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293/*循環(huán)掃描調(diào)度算法*/.voidCSCAN(intc

15、idao,intm).intk=1;intnow,l,r;.inti,j,sum=0;inta;.charstr100;floatave;.cidao=bubble(cidao,m);/調(diào)用冒泡排序算法排序.coutstr;/對輸入數(shù)據(jù)進(jìn)行有效性判斷.a=decide(str);.if(a=0).cout輸入數(shù)據(jù)的類型錯誤,請重新輸入!endl;gotoE;.else.now=trans(str,a);/輸入當(dāng)前磁道號.if(cidaom-1=now)/若當(dāng)前磁道號大于請求序列中最大者,則直接將移動臂移動到最小號磁道依次向外給予各請求服務(wù),cout磁盤掃描序列為:”;for(i=0;im;i+

16、)coutcidaoi=now)/若當(dāng)前磁道號小于請求序列中最小者,則直接由內(nèi)向外依次給予各請求服務(wù),此情況同最短尋道優(yōu)先cout磁盤掃描序列為:;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)/若當(dāng)前磁道號大于請求序列中最小者且小于最大者cout磁盤掃描序列為:;while(cidaoknow)/單向反復(fù)地從內(nèi)向外掃描k+;294.295.l=k-1;296.r=k;297.for(j=r;jm;j+)298.299.coutcidaoj;/輸出從當(dāng)前磁道向外掃描的序列300.301.for(j=0;jr;j+)/當(dāng)掃描完最大號磁道,磁頭直接移動到最小

17、號磁道,再向外掃描未掃描的磁道302.303.coutcidaoj;304.305.sum=2*cidaom-1+cidaol-now-2*cidao0;306.307.ave=(float)(sum)/(float)(m);308.coutendl;309.cout平均尋道長度:”aveendl;310.311.voidmain()312.313.inta;314.intc;/菜單項(xiàng)315.intcidaomaxsize;316.inti=0,count;317.charstr100;318.cout請輸入磁道序列(0結(jié)束):str;/對輸入數(shù)據(jù)進(jìn)行有效性判斷320.a=decide(str

18、);321.if(a=0)322.323.cout輸入數(shù)據(jù)的類型錯誤,請重新輸入!str;/對輸入數(shù)據(jù)進(jìn)行有效性判斷332.a=decide(str);333.if(a=0)334.cout輸入數(shù)據(jù)的類型錯誤,請重新輸入!endl;335.else336.337.338.339.340.341.342.343.344.345.346.347.cidaoi=trans(str,a);i+;count=i-1;/要訪問的磁道數(shù)cout你輸入的磁道序列為:”;for(i=0;icount;i+)coutcidaoi;/輸出磁道序列coutcoutendl;350.coutendl;351.cout”

19、*”endl;out11*系統(tǒng)菜單*endl;352.cout*endl;353.cout*endl;354.cout*1.先來先服務(wù)*endl;355.cout*endl;356.cout*2.最短尋道時間優(yōu)先*endl;357.cout*endl;358.cout*3.掃描調(diào)度*endl;359.cout*endl;360.cout*4循環(huán)掃描*endl;361.cout*endl;362.cout*5.退出*endl;363.cout*endl;while(1)coutendl;364.365.366.367.368.369.370.371.372.373.374.375.376.377.G:coutstr;/對輸入數(shù)據(jù)進(jìn)行有效性判斷endl;a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯誤,請重新輸入!5)cout數(shù)據(jù)輸入錯誤!請重新輸入e=251607B6E100621653岳4+k*常*忙耳耳耳耳屮半*事字字耳耳耳耳*半*事*耳耳耳耳屮半事事字字耳耳耳耳半*事*耳耳耳屮半1&O.46.4444平均尋道長度:46.4

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論