版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 題 目 磁盤調(diào)度算法 </p><p> 課 程 名 稱 操作系統(tǒng)課程設(shè)計 </p><p> 院 部 名 稱 信息技術(shù)學(xué)院 </p>
2、;<p> 專 業(yè) 計算機(jī)科學(xué)與技術(shù) </p><p> 班 級 09計算機(jī)科學(xué)與技術(shù)(1) </p><p> 學(xué) 生 姓 名 </p><p> 學(xué) 號 </
3、p><p> 課程設(shè)計地點(diǎn) </p><p> 課程設(shè)計學(xué)時 </p><p> 指 導(dǎo) 教 師 </p><p> 【注:根據(jù)課程設(shè)計大綱第四項具體要求撰寫課程設(shè)計報告】</p
4、><p> 程序設(shè)計的目的和要求</p><p> 磁盤是經(jīng)常使用的一個外設(shè),對磁盤數(shù)據(jù)的尋道時間的長短直接影響機(jī)器的整體運(yùn)行速度,本設(shè)計要求用C語言(或高級語言)編寫程序模擬實(shí)現(xiàn)磁盤調(diào)度的常用算法。以加深對磁盤調(diào)度常用算法的理解和實(shí)現(xiàn)技巧。</p><p><b> 課程設(shè)計環(huán)境要求</b></p><p><
5、b> 1、硬件環(huán)境</b></p><p> Intel Croe 2 Duo CPU</p><p><b> 2、軟件環(huán)境</b></p><p> Windows7 Turbo C 2.0</p><p> 設(shè)計任務(wù)介紹及系統(tǒng)需求分析</p><p><
6、b> 1、系統(tǒng)分析</b></p><p> 設(shè)備的動態(tài)分配算法與進(jìn)程調(diào)度相似,也是基于一定的分配策略的。常用的分配策略有先請求先分配、優(yōu)先級高者先分配等策略。在多道程序系統(tǒng)中,低效率通常是由于磁盤類旋轉(zhuǎn)設(shè)備使用不當(dāng)造成的。操作系統(tǒng)中,對磁盤的訪問要求來自多方面,常常需要排隊。這時,對眾多的訪問要求按一定的次序響應(yīng),會直接影響磁盤的工作效率,進(jìn)而影響系統(tǒng)的性能。訪問磁盤的時間因子由3部分構(gòu)成
7、,它們是查找(查找磁道)時間、等待(旋轉(zhuǎn)等待扇區(qū))時間和數(shù)據(jù)傳輸時間,其中查找時間是決定因素。因此,磁盤調(diào)度算法先考慮優(yōu)化查找策略,需要時再優(yōu)化旋轉(zhuǎn)等待策略。</p><p><b> 2、系統(tǒng)設(shè)計:</b></p><p> (1) 先來先服務(wù).(First-Come,F(xiàn)irst-Served,F(xiàn)CFS):</p><p> 這是一種簡
8、單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請求訪問磁盤的先后次序進(jìn)行調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡單,且每個進(jìn)程的請求都能依次得到處理,不會出現(xiàn)某一進(jìn)程的請求長期得不到滿足的情況。但此算法由于未對尋道進(jìn)行優(yōu)化,致使平均尋道時間可能較長。</p><p> (2) 最短尋道時間優(yōu)先(ShortestSeekTimeFirst,SSTF):</p><p> 該算法選擇這樣的進(jìn)程,其要求訪問的磁道與當(dāng)前磁
9、頭所在的磁道距離最近,以使每次的尋道時間最短,但這種調(diào)度算法卻不能保證平均尋道時間最短。</p><p> (3) 掃描(SCAN)算法:</p><p> SCAN算法不僅考慮到欲訪問的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動方向。例如,當(dāng)磁頭正在自里向外移動時,SCAN算法所選擇的下一個訪問對象應(yīng)是其欲訪問的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問,直到再
10、無更外的磁道需要訪問才將磁臂換向,自外向里移動。這時,同樣也是每次選擇這樣的進(jìn)程來調(diào)度,即其要訪問的磁道,在當(dāng)前磁道之內(nèi),從而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動的規(guī)律頗似電梯的運(yùn)行,故又稱為電梯調(diào)度算法。</p><p><b> 四、概要設(shè)計</b></p><p> 本系統(tǒng)劃分為三個模塊:先來先服務(wù)算法模塊void FCFS(int array[],
11、int m)、最短尋道時間優(yōu)先算法模塊void SSTF(int array[],int m)、掃描算法模塊void SCAN(int array[],int m)。</p><p><b> 系統(tǒng)模塊圖</b></p><p><b> 五、詳細(xì)設(shè)計</b></p><p> 1、先來先服務(wù)(FCFS)</p
12、><p> 這是一種簡單的磁盤調(diào)度算法。它根據(jù)進(jìn)程請求訪問磁盤的先后次序進(jìn)行調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡單,且每個進(jìn)程的請求都能依次得到處理,不會出現(xiàn)某一進(jìn)程的請求長期得不到滿足的情況。但此算法由于未對尋道進(jìn)行優(yōu)化,致使平均尋道時間可能較長。</p><p> 先來先服務(wù)算法(FCFS)流程圖:</p><p> 2、最短尋道時間優(yōu)先(SSTF)</p>
13、;<p> 該算法選擇這樣的進(jìn)程,其要求訪問的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時間最短,但這種調(diào)度算法卻不能保證平均尋道時間最短。</p><p> 最短尋道時間優(yōu)先流程圖:</p><p> 3、掃描算法(SCAN)</p><p> SCAN算法不僅考慮到欲訪問的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動方向。例如,
14、當(dāng)磁頭正在自里向外移動時,SCAN算法所選擇的下一個訪問對象應(yīng)是其欲訪問的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問,直到再無更外的磁道需要訪問才將磁臂換向,自外向里移動。這時,同樣也是每次選擇這樣的進(jìn)程來調(diào)度,即其要訪問的磁道,在當(dāng)前磁道之內(nèi),從而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動的規(guī)律頗似電梯的運(yùn)行,故又稱為電梯調(diào)度算法。</p><p><b> 六、測試數(shù)據(jù)和結(jié)果<
15、;/b></p><p> 1、先來先服務(wù)調(diào)度(FCFS)輸入起始磁道(你可以輸入50),點(diǎn)確定,進(jìn)入第二個界面,再輸入你要輸入的最大磁道(你可以輸入100),然后點(diǎn)確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇1后確認(rèn),則隨機(jī)輸出10個小于100的磁道數(shù)(41 67 34 0 69 24 78 58 62 64),則先來先服務(wù)調(diào)度(FCFS)輸出:(41 67 34 0 69 24 78 58
16、 62 64),在選擇1或者0,選著1則繼續(xù)其它算法的磁盤調(diào)度,選著0則結(jié)束磁盤調(diào)度</p><p><b> 運(yùn)行結(jié)果圖:</b></p><p> 2、最短尋道時間優(yōu)先調(diào)度(SSTF) 輸入起始磁道(你可以輸入50),點(diǎn)確定,進(jìn)入第二個界面,再輸入你要輸入的最大磁道(你可以輸入100),然后點(diǎn)確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇2后確認(rèn)
17、,則隨機(jī)輸出10個小于100的磁道數(shù) (41 67 34 0 69 24 78 58 62 64) ,則最短尋道時間優(yōu)先調(diào)度(SSTF):(58 62 64 67 69 78 41 34 24 0) 。在選擇1或者0,選著1則繼續(xù)其它算法的磁盤調(diào)度,選著0則結(jié)束磁盤調(diào)度</p><p><b> 運(yùn)行結(jié)果圖:</b></p><p> 3、掃描調(diào)度算法(
18、SCAN) 輸入起始磁道(你可以輸入50),點(diǎn)確定,進(jìn)入第二個界面,再輸入你要輸入的最大磁道(你可以輸入100),然后點(diǎn)確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇3后確認(rèn),則隨機(jī)輸出10個小于100的磁道數(shù) :(41 67 34 0 69 24 78 58 62 64),則掃描調(diào)度算法(SCAN):(58 62 64 67 69 78 41 34 24 0) 。</p><p><
19、;b> 七、結(jié)論與體會</b></p><p> 至此,計算機(jī)操作系統(tǒng)課程設(shè)計算法已經(jīng)完成。此次設(shè)計基本完成了所規(guī)定的功能,但由于這次設(shè)計的時間比較倉促,其中不免會有些紕漏,比如在程序的實(shí)現(xiàn)上還不夠嚴(yán)謹(jǐn),出錯處理不夠完善等多方面問題,這些都有進(jìn)一步改善。由于平時上課不是很認(rèn)真許多概念沒有理解清楚,導(dǎo)致在做設(shè)計時有點(diǎn)無從下手的感覺,只好邊實(shí)驗(yàn)邊看書直到弄懂概念后才開始做,最終在同學(xué)和老師的指導(dǎo)
20、下我完成了設(shè)計。</p><p> 此設(shè)計基本能夠?qū)崿F(xiàn)規(guī)定的要求但是還是不夠完善,很多東西做的不夠好,程序不夠完善和嚴(yán)謹(jǐn)。此次課程設(shè)計中我學(xué)到了很多東西,無論在理論上還是實(shí)踐中,都得到不少的提高,這對于我以后的工作和學(xué)習(xí)都有一種巨大的幫助。</p><p><b> 八、參考文獻(xiàn)</b></p><p> 胡志剛,譚長庚等. 《計算機(jī)操作
21、系統(tǒng)》.中南大學(xué)出版社. 2005</p><p> 湯子瀛、哲鳳屏、湯小丹. 《計算機(jī)操作系統(tǒng)》.西安電子科技大學(xué)出版社, 2001,8.</p><p> 陳向群 楊芙清.《操作系統(tǒng)教程》. 北京大學(xué)出版社,2004,7.</p><p> 張堯?qū)W 史美林.《計算機(jī)操作系統(tǒng)教程》. 清華大學(xué)出版社, 2000.</p><p>
22、龐麗萍.《操作系統(tǒng)原理》(第三版). 華中理工大學(xué)出版社,2000.</p><p> 羅宇,鄒鵬等.《操作系統(tǒng)》(第2版). 電子工業(yè)出版社. 2007.4</p><p><b> 附件:源程序清單</b></p><p> #include "stdio.h"</p><p> #inc
23、lude "stdlib.h"</p><p> void CopyL(int Sour[],int Dist[] ,int x); //數(shù)組Sour復(fù)制到數(shù)組Dist,復(fù)制到x個數(shù)</p><p> void SetDI(int DiscL[]); //隨機(jī)生成磁道數(shù) </p><p> void Print(int Pri[],in
24、t x); //打印輸出數(shù)組Pri</p><p> void DelInq(int Sour[],int x,int y); //數(shù)組Sour把x位置的數(shù)刪除,并把y前面的數(shù)向前移動,y后的數(shù)保持不變(即會出現(xiàn)2個y) </p><p> void FCFS(int Han,int DiscL[]); //先來先服務(wù)算法(FCFS)</p><p>
25、void SSTF(int Han,int DiscL[]); //最短尋道時間優(yōu)先算法(SSTF)</p><p> int SCAN(int Han,int DiscL[],int x,int y); //掃描算法(SCAN)</p><p> void CSCAN(int Han,int DiscL[]); //循環(huán)掃描算法(CSCAN)</p><p&
26、gt; void PaiXu(); //尋道長度由低到高排序</p><p> void Pri();</p><p> int NAll=0;</p><p> int Best[5][2]; //用作尋道長度由低到高排序時存放的數(shù)組 </p><p> int Limit=0; //輸入尋找的范圍磁道數(shù)i</p>
27、<p><b> int Jage;</b></p><p> float Aver=0;</p><p> int main()</p><p><b> {</b></p><p><b> int i;</b></p><p>
28、; int DiscLine[10]; //聲明準(zhǔn)備要生成的隨機(jī)磁道號的數(shù)組</p><p> int Hand; //磁道數(shù)</p><p> int Con=1;</p><p><b> int n;</b></p><p> while(Con==1)</p><p><
29、;b> {</b></p><p><b> Jage=0;</b></p><p> printf("\n 請輸入初始的磁道數(shù):");</p><p> scanf("%d",&Hand);</p><p> printf("\n+
30、輸入尋找的范圍:");</p><p> scanf("%d",&Limit);</p><p> if(Limit>65536){</p><p> printf("超出磁道范圍!");</p><p><b> } </b></p>
31、<p><b> else{</b></p><p> printf("1.先來先服務(wù)算法(FCFS )\n");</p><p> printf("2.最短尋道時間優(yōu)先算法(SSTF)\n");</p><p> printf("3.掃描算法(SCAN) \n&qu
32、ot;);</p><p> scanf("%d",&n);</p><p> if(n==0) exit(0);</p><p> printf("\n");</p><p><b> switch(n)</b></p><p><b
33、> {</b></p><p><b> case 1:</b></p><p> SetDI(DiscLine); //隨機(jī)生成磁道數(shù)</p><p> FCFS(Hand,DiscLine); //先來先服務(wù)算法(FCFS)</p><p><b> break;</b&
34、gt;</p><p><b> case 2:</b></p><p> SetDI(DiscLine); //隨機(jī)生成磁道數(shù)</p><p> SSTF(Hand,DiscLine); //最短尋道時間優(yōu)先算法(SSTF)</p><p><b> break;</b></p&g
35、t;<p><b> case 3:</b></p><p> SetDI(DiscLine); //隨機(jī)生成磁道數(shù)</p><p> SCAN(Hand,DiscLine,0,9); //掃描算法(SCAN)</p><p><b> break;</b></p><p>
36、; SetDI(DiscLine); //隨機(jī)生成磁道數(shù)</p><p> FCFS(Hand,DiscLine); //先來先服務(wù)算法(FCFS)</p><p> SSTF(Hand,DiscLine); //最短尋道時間優(yōu)先算法(SSTF)</p><p> SCAN(Hand,DiscLine,0,9); //掃描算法(SCAN)</p>
37、;<p><b> }</b></p><p> printf("\n\n+ 是否繼續(xù)(按0結(jié)束,按1繼續(xù))?");</p><p> scanf("%5d",&Con);</p><p><b> }</b></p><p>&
38、lt;b> }</b></p><p><b> }</b></p><p> //數(shù)組Sour復(fù)制到數(shù)組Dist,復(fù)制到x個數(shù)</p><p> void CopyL(int Sour[],int Dist[] ,int x)</p><p><b> {</b><
39、;/p><p><b> int i;</b></p><p> for(i=0;i<=x;i++)</p><p><b> {</b></p><p> Dist[i]=Sour[i];</p><p><b> }</b></p&
40、gt;<p><b> }</b></p><p> //打印輸出數(shù)組Pri</p><p> void Print(int Pri[],int x)</p><p><b> {</b></p><p><b> int i;</b></p>
41、;<p> for(i=0;i<=x;i++)</p><p><b> {</b></p><p> printf("%5d",Pri[i]);</p><p><b> }</b></p><p><b> }</b><
42、;/p><p><b> //隨機(jī)生成磁道數(shù)</b></p><p> void SetDI(int DiscL[])</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<
43、;=9;i++)</p><p><b> {</b></p><p> DiscL[i]=rand()%Limit;//隨機(jī)生成10個磁道號</p><p><b> }</b></p><p> printf("+ 需要尋找的磁道號:");</p>&l
44、t;p> Print(DiscL,9); //輸出隨機(jī)生成的磁道號</p><p> printf("\n");</p><p><b> }</b></p><p> //數(shù)組Sour把x位置的數(shù)刪除,并把y前面的數(shù)向前移動,y后的數(shù)保持不變(即會出現(xiàn)2個y) </p><p>
45、void DelInq(int Sour[],int x,int y)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=x;i<y;i++)</p><p><b> { </b></p&g
46、t;<p> Sour[i]=Sour[i+1];</p><p><b> x++;</b></p><p><b> }</b></p><p><b> }</b></p><p> //先來先服務(wù)算法(FCFS)</p><p
47、> void FCFS(int Han,int DiscL[])</p><p><b> {</b></p><p> int RLine[10]; //將隨機(jī)生成的磁道數(shù)數(shù)組Discl[]復(fù)制給數(shù)組RLine[]</p><p> int i,k,All,Temp; //Temp是計算移動的磁道距離的臨時變量</p&
48、gt;<p> All=0; //統(tǒng)計全部的磁道數(shù)變量</p><p> k=9; //限定10個的磁道數(shù)</p><p> CopyL(DiscL,RLine,9); //復(fù)制磁道號到臨時數(shù)組RLine</p><p> printf("\n+ FCFS訪問順序?yàn)?");</p><p>
49、All=Han-RLine[0];</p><p> for(i=0;i<=9;i++)</p><p><b> {</b></p><p> Temp=RLine[0]-RLine[1];//求出移動磁道數(shù),前一個磁道數(shù)減去后一個磁道數(shù)得出臨時的移動距離</p><p> if(Temp<0) &
50、lt;/p><p> Temp=(-Temp);//移動磁道數(shù)為負(fù)數(shù)時,算出相反數(shù)作為移動磁道數(shù)</p><p> printf("%5d",RLine[0]);</p><p> All=Temp+All;//求全部磁道數(shù)的總和 </p><p> DelInq(RLine,0,k);//每個磁道數(shù)向前移動一位<
51、;/p><p><b> k--;</b></p><p><b> }</b></p><p> Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p><p> Best[Jage][0]=1; //Best[][0]存放算法的序號為:1 </p>
52、<p> Jage++;//排序的序號加1</p><p> Aver=((float) All)/10;//求平均尋道次數(shù) </p><p> printf("\n+ 移動磁道數(shù):<%5d> ",All);</p><p> printf("\n+ 平均尋道長度:*%0.2f* ",Aver);
53、</p><p><b> }</b></p><p> //最短尋道時間優(yōu)先算法(SSTF)</p><p> void SSTF(int Han,int DiscL[])</p><p><b> {</b></p><p> int i,j,k,h,All;&
54、lt;/p><p> int Temp; //Temp是計算移動的磁道距離的臨時變量</p><p> int RLine[10]; //將隨機(jī)生成的磁道數(shù)數(shù)組Discl[]復(fù)制給數(shù)組RLine[]</p><p><b> int Min;</b></p><p> All=0; //統(tǒng)計全部的磁道數(shù)變量&
55、lt;/p><p> k=9; //限定10個的磁道數(shù)</p><p> CopyL(DiscL,RLine,9); //復(fù)制磁道號到臨時數(shù)組RLine</p><p> printf("\n+ SSTF訪問順序?yàn)?");</p><p> for(i=0;i<=9;i++)</p><p
56、><b> {</b></p><p> Min=64000;</p><p> for(j=0;j<=k;j++) //內(nèi)循環(huán)尋找與當(dāng)前磁道號最短尋道的時間的磁道號 </p><p><b> {</b></p><p> if(RLine[j]>Han) //如果第
57、一個隨機(jī)生成的磁道號大于當(dāng)前的磁道號,執(zhí)行下一句</p><p> Temp=RLine[j]-Han; //求出臨時的移動距離</p><p><b> else</b></p><p> Temp=Han-RLine[j]; //求出臨時的移動距離</p><p> if(Temp<Min) //
58、如果每求出一次的移動距離小于Min,執(zhí)行下一句</p><p><b> {</b></p><p> Min=Temp; //Temp臨時值賦予Min</p><p> h=j; //把最近當(dāng)前磁道號的數(shù)組下標(biāo)賦予h</p><p><b> }</b></p><
59、p><b> }</b></p><p> All=All+Min; //統(tǒng)計一共移動的距離</p><p> printf("%5d",RLine[h]);</p><p> Han=RLine[h]; </p><p> DelInq(RLine,h,k); //每個磁道數(shù)向
60、前移動一位</p><p><b> k--;</b></p><p><b> }</b></p><p> Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p><p> Best[Jage][0]=2;//Best[][0]存放算法的序號為:2</p
61、><p> Jage++;//排序序號加1</p><p> Aver=((float)All)/10;//求平均尋道次數(shù) </p><p> printf("\n+ 移動磁道數(shù):<%5d> ",All);</p><p> printf("\n+ 平均尋道長度:*%0.2f* ",Av
62、er);</p><p><b> }</b></p><p> //掃描算法(SCAN)</p><p> int SCAN(int Han,int DiscL[],int x,int y)</p><p><b> {</b></p><p> int j,n,
63、k,h,m,All;</p><p><b> int t=0;</b></p><p><b> int Temp;</b></p><p><b> int Min;</b></p><p> int RLine[10]; //將隨機(jī)生成的磁道數(shù)數(shù)組Discl[]復(fù)
64、制給數(shù)組RLine[] </p><p> int Order;</p><p><b> Order=1;</b></p><p><b> k=y;</b></p><p> m=2; //控制while語句的執(zhí)行,即是一定要使當(dāng)前磁道向內(nèi)向外都要掃描到</p><
65、p> All=0; //統(tǒng)計全部的磁道數(shù)變量</p><p> CopyL(DiscL,RLine,9); //復(fù)制磁道號到臨時數(shù)組RLine</p><p> printf("\n+ SCAN訪問順序?yàn)?");</p><p> Min=64000;</p><p> for(j=x;j<=y;
66、j++) //尋找與當(dāng)前磁道號最短尋道的時間的磁道號</p><p><b> {</b></p><p> if(RLine[j]>Han) //如果第一個隨機(jī)生成的磁道號大于當(dāng)前的磁道號,執(zhí)行下一句</p><p> Temp=RLine[j]-Han; //求出臨時的移動距離</p><p>&l
67、t;b> else</b></p><p> Temp=Han-RLine[j]; //求出臨時的移動距離</p><p> if(Temp<Min)</p><p><b> {</b></p><p> Min=Temp; //Temp臨時值賦予Min</p>&l
68、t;p> h=j; //把最近當(dāng)前磁道號的數(shù)組下標(biāo)賦予h</p><p><b> }</b></p><p><b> }</b></p><p> All=All+Min; </p><p> printf("%5d",RLine[h]);</p&
69、gt;<p> if(RLine[h]>=Han){ //判動方向,即是由里向外還是由外向里斷磁道的移</p><p><b> Order=0;</b></p><p><b> t=1;</b></p><p><b> }</b></p><p&
70、gt; Han=RLine[h];</p><p> DelInq(RLine,h,k); //每個磁道數(shù)向前移動一位</p><p><b> k--;</b></p><p> while(m>0) </p><p><b> {</b></p><p&g
71、t; if(Order==1) //order是判斷磁盤掃描的方向標(biāo)簽,order是1的話,磁道向內(nèi)移動</p><p><b> {</b></p><p> for(j=x;j<=y;j++) </p><p><b> {</b></p><p><b> h=-
72、1;</b></p><p> Min=64000;</p><p> for(n=x;n<=k;n++) //判斷離當(dāng)前磁道最近的磁道號</p><p><b> {</b></p><p> if(RLine[n]<=Han)</p><p><b>
73、; {</b></p><p> Temp=Han-RLine[n];</p><p> if(Temp<Min)</p><p><b> {</b></p><p> Min=Temp; //Temp臨時值賦予Min</p><p> h=n; //把最近當(dāng)前
74、磁道號的數(shù)組下標(biāo)賦予h</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(h!=-1)</b></p><p><b>
75、; {</b></p><p> All=All+Min; //疊加移動距離</p><p> printf("%5d",RLine[h]);</p><p> Han=RLine[h]; //最近的磁道號作為當(dāng)前磁道</p><p> DelInq(RLine,h,k);</p>&
76、lt;p><b> k--;</b></p><p><b> }</b></p><p><b> }</b></p><p> Order=0; //當(dāng)完成向內(nèi)的移動,order賦予0,執(zhí)行else語句,使磁道向外移動</p><p> m--; //向
77、內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次</p><p><b> }</b></p><p> else //order是0的話,磁道向外移動</p><p><b> {</b></p><p> for(j=x;j<=y;j++)</p><p>
78、;<b> {</b></p><p><b> h=-1;</b></p><p> Min=64000;</p><p> for(n=x;n<=k;n++) //判斷離當(dāng)前磁道最近的磁道號</p><p><b> {</b></p>&l
79、t;p> if(RLine[n]>=Han)</p><p><b> {</b></p><p> Temp=RLine[n]-Han;</p><p> if(Temp<Min)</p><p><b> {</b></p><p> Min
80、=Temp; //Temp臨時值賦予Min</p><p> h=n; //把最近當(dāng)前磁道號的數(shù)組下標(biāo)賦予h</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p>
81、<b> if(h!=-1)</b></p><p><b> {</b></p><p> All=All+Min; //疊加移動距離</p><p> printf("%5d",RLine[h]);</p><p> Han=RLine[h]; //最近的磁道號
82、作為當(dāng)前磁道</p><p> DelInq(RLine,h,k);</p><p><b> k--;</b></p><p><b> }</b></p><p><b> }</b></p><p> Order=1; //當(dāng)完成向內(nèi)的
83、移動,order賦予0,執(zhí)行else語句,使磁道向外移動</p><p> m--; //向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次</p><p><b> }</b></p><p><b> }</b></p><p> NAll=NAll+All;</p>
84、<p> if((y-x)>5)</p><p><b> {</b></p><p> Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p><p> Best[Jage][0]=3;//Best[][0]存放算法的序號為:3</p><p> Jage++;//
85、排序序號加1</p><p> Aver=((float)All)/10;//求平均尋道次數(shù) </p><p> printf("\n+ 移動磁道數(shù):<%5d> ",All);</p><p> printf("\n+ 平均尋道長度:*%0.2f* ",Aver);</p><p>&
86、lt;b> }</b></p><p> if(t==1) printf("\n+ 磁道由內(nèi)向外移動");</p><p> else printf("\n+ 磁道由外向內(nèi)移動");</p><p> return(Han);</p><p><b> }</
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計報告--磁盤調(diào)度算法
- 操作系統(tǒng)磁盤調(diào)度算法課程設(shè)計報告
- 操作系統(tǒng)課程設(shè)計報告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計報告--磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計---磁盤調(diào)度算法
- 操作系統(tǒng)課程設(shè)計---磁盤調(diào)度報告
- 操作系統(tǒng)課程設(shè)計--磁盤調(diào)度算法實(shí)踐
- cscan磁盤調(diào)度算法---操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計-磁盤調(diào)度模擬法
- 操作系統(tǒng)_進(jìn)程調(diào)度算法課程設(shè)計報告
- n-step-scan_磁盤調(diào)度_操作系統(tǒng)課程設(shè)計
- 進(jìn)程調(diào)度算法 操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計---磁盤文件操作
- 操作系統(tǒng)課程設(shè)計--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計---進(jìn)程調(diào)度算法
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計
- 操作系統(tǒng)課程設(shè)計--進(jìn)程調(diào)度算法
- 操作系統(tǒng)課程設(shè)計報告----磁盤管理模塊告
- 操作系統(tǒng)課程設(shè)計報告磁盤空間管理
- 進(jìn)程調(diào)度算法操作系統(tǒng)課程設(shè)計 (2)
評論
0/150
提交評論