操作系統(tǒng)磁盤調(diào)度算法課程設(shè)計報告_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告</b></p><p>  題 目 磁盤調(diào)度算法 </p><p>  課 程 名 稱 操作系統(tǒng)課程設(shè)計 </p><p>  院 部 名 稱 信息技術(shù)學院 </p>

2、;<p>  專 業(yè) 計算機科學與技術(shù) </p><p>  程序設(shè)計的目的和要求</p><p>  磁盤是經(jīng)常使用的一個外設(shè),對磁盤數(shù)據(jù)的尋道時間的長短直接影響機器的整體運行速度,本設(shè)計要求用C語言(或高級語言)編寫程序模擬實現(xiàn)磁盤調(diào)度的常用算法。以加深對磁盤調(diào)度常用算法的理解和實現(xiàn)技巧。</p><p>&

3、lt;b>  課程設(shè)計環(huán)境要求</b></p><p><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&g

4、t;<p>  設(shè)計任務(wù)介紹及系統(tǒng)需求分析</p><p><b>  1、系統(tǒng)分析</b></p><p>  設(shè)備的動態(tài)分配算法與進程調(diào)度相似,也是基于一定的分配策略的。常用的分配策略有先請求先分配、優(yōu)先級高者先分配等策略。在多道程序系統(tǒng)中,低效率通常是由于磁盤類旋轉(zhuǎn)設(shè)備使用不當造成的。操作系統(tǒng)中,對磁盤的訪問要求來自多方面,常常需要排隊。這時,對眾

5、多的訪問要求按一定的次序響應(yīng),會直接影響磁盤的工作效率,進而影響系統(tǒng)的性能。訪問磁盤的時間因子由3部分構(gòu)成,它們是查找(查找磁道)時間、等待(旋轉(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

6、-Come,F(xiàn)irst-Served,F(xiàn)CFS):</p><p>  這是一種簡單的磁盤調(diào)度算法。它根據(jù)進程請求訪問磁盤的先后次序進行調(diào)度。此算法的優(yōu)點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現(xiàn)某一進程的請求長期得不到滿足的情況。但此算法由于未對尋道進行優(yōu)化,致使平均尋道時間可能較長。</p><p>  (2) 最短尋道時間優(yōu)先(ShortestSeekTimeFirst

7、,SSTF):</p><p>  該算法選擇這樣的進程,其要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,但這種調(diào)度算法卻不能保證平均尋道時間最短。</p><p>  (3) 掃描(SCAN)算法:</p><p>  SCAN算法不僅考慮到欲訪問的磁道與當前磁道的距離,更優(yōu)先考慮的是磁頭的當前移動方向。例如,當磁頭正在自里向外移動時,SCA

8、N算法所選擇的下一個訪問對象應(yīng)是其欲訪問的磁道既在當前磁道之外,又是距離最近的。這樣自里向外地訪問,直到再無更外的磁道需要訪問才將磁臂換向,自外向里移動。這時,同樣也是每次選擇這樣的進程來調(diào)度,即其要訪問的磁道,在當前磁道之內(nèi),從而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動的規(guī)律頗似電梯的運行,故又稱為電梯調(diào)度算法。</p><p><b>  四、概要設(shè)計</b></p>

9、<p>  本系統(tǒng)劃分為三個模塊:先來先服務(wù)算法模塊void FCFS(int array[],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>  五、詳細設(shè)

10、計</b></p><p>  1、先來先服務(wù)(FCFS)</p><p>  這是一種簡單的磁盤調(diào)度算法。它根據(jù)進程請求訪問磁盤的先后次序進行調(diào)度。此算法的優(yōu)點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現(xiàn)某一進程的請求長期得不到滿足的情況。但此算法由于未對尋道進行優(yōu)化,致使平均尋道時間可能較長。</p><p>  先來先服務(wù)算法(FCFS

11、)流程圖:</p><p>  2、最短尋道時間優(yōu)先(SSTF)</p><p>  該算法選擇這樣的進程,其要求訪問的磁道與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,但這種調(diào)度算法卻不能保證平均尋道時間最短。</p><p>  最短尋道時間優(yōu)先流程圖:</p><p>  3、掃描算法(SCAN)</p><

12、p>  SCAN算法不僅考慮到欲訪問的磁道與當前磁道的距離,更優(yōu)先考慮的是磁頭的當前移動方向。例如,當磁頭正在自里向外移動時,SCAN算法所選擇的下一個訪問對象應(yīng)是其欲訪問的磁道既在當前磁道之外,又是距離最近的。這樣自里向外地訪問,直到再無更外的磁道需要訪問才將磁臂換向,自外向里移動。這時,同樣也是每次選擇這樣的進程來調(diào)度,即其要訪問的磁道,在當前磁道之內(nèi),從而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動的規(guī)律頗似電梯的運行,故又

13、稱為電梯調(diào)度算法。</p><p><b>  六、測試數(shù)據(jù)和結(jié)果</b></p><p>  1、先來先服務(wù)調(diào)度(FCFS)輸入起始磁道(你可以輸入50),點確定,進入第二個界面,再輸入你要輸入的最大磁道(你可以輸入100),然后點確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇1后確認,則隨機輸出10個小于100的磁道數(shù)(41 67 34 0 69 24

14、78 58 62 64),則先來先服務(wù)調(diào)度(FCFS)輸出:(41 67 34 0 69 24 78 58 62 64),在選擇1或者0,選著1則繼續(xù)其它算法的磁盤調(diào)度,選著0則結(jié)束磁盤調(diào)度</p><p><b>  運行結(jié)果圖:</b></p><p>  2、最短尋道時間優(yōu)先調(diào)度(SSTF) 輸入起始磁道(你可以輸入50),點確定,進入第二個界面,再輸入你

15、要輸入的最大磁道(你可以輸入100),然后點確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇2后確認,則隨機輸出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&

16、gt;  運行結(jié)果圖:</b></p><p>  3、掃描調(diào)度算法(SCAN) 輸入起始磁道(你可以輸入50),點確定,進入第二個界面,再輸入你要輸入的最大磁道(你可以輸入100),然后點確定。選擇磁盤調(diào)度算法1 2 3 中的任意一個,若選擇3后確認,則隨機輸出10個小于100的磁道數(shù) :(41 67 34 0 69 24 78 58 62 64),則掃描調(diào)度算法(SCAN):(58

17、 62 64 67 69 78 41 34 24 0) 。</p><p><b>  七、結(jié)論與體會</b></p><p>  至此,計算機操作系統(tǒng)課程設(shè)計算法已經(jīng)完成。此次設(shè)計基本完成了所規(guī)定的功能,但由于這次設(shè)計的時間比較倉促,其中不免會有些紕漏,比如在程序的實現(xiàn)上還不夠嚴謹,出錯處理不夠完善等多方面問題,這些都有進一步改善。由于平時上課不是很認真許多概念沒有

18、理解清楚,導致在做設(shè)計時有點無從下手的感覺,只好邊實驗邊看書直到弄懂概念后才開始做,最終在同學和老師的指導下我完成了設(shè)計。</p><p>  此設(shè)計基本能夠?qū)崿F(xiàn)規(guī)定的要求但是還是不夠完善,很多東西做的不夠好,程序不夠完善和嚴謹。此次課程設(shè)計中我學到了很多東西,無論在理論上還是實踐中,都得到不少的提高,這對于我以后的工作和學習都有一種巨大的幫助。</p><p><b>  八、

19、參考文獻</b></p><p>  胡志剛,譚長庚等. 《計算機操作系統(tǒng)》.中南大學出版社. 2005</p><p>  湯子瀛、哲鳳屏、湯小丹. 《計算機操作系統(tǒng)》.西安電子科技大學出版社, 2001,8.</p><p>  陳向群 楊芙清.《操作系統(tǒng)教程》. 北京大學出版社,2004,7.</p><p>  張堯?qū)W 史

20、美林.《計算機操作系統(tǒng)教程》. 清華大學出版社, 2000.</p><p>  龐麗萍.《操作系統(tǒng)原理》(第三版). 華中理工大學出版社,2000.</p><p>  羅宇,鄒鵬等.《操作系統(tǒng)》(第2版). 電子工業(yè)出版社. 2007.4</p><p><b>  附件:源程序清單</b></p><p>  #i

21、nclude "stdio.h"</p><p>  #include "stdlib.h"</p><p>  void CopyL(int Sour[],int Dist[] ,int x); //數(shù)組Sour復制到數(shù)組Dist,復制到x個數(shù)</p><p>  void SetDI(int DiscL[]); //隨機

22、生成磁道數(shù) </p><p>  void Print(int Pri[],int 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,

23、int DiscL[]); //先來先服務(wù)算法(FCFS)</p><p>  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

24、 Han,int DiscL[]); //循環(huán)掃描算法(CSCAN)</p><p>  void PaiXu(); //尋道長度由低到高排序</p><p>  void Pri();</p><p>  int NAll=0;</p><p>  int Best[5][2]; //用作尋道長度由低到高排序時存放的數(shù)組 </p&

25、gt;<p>  int Limit=0; //輸入尋找的范圍磁道數(shù)i</p><p><b>  int Jage;</b></p><p>  float Aver=0;</p><p>  int main()</p><p><b>  {</b></p><

26、;p><b>  int i;</b></p><p>  int DiscLine[10]; //聲明準備要生成的隨機磁道號的數(shù)組</p><p>  int Hand; //磁道數(shù)</p><p>  int Con=1;</p><p><b>  int n;</b></p&

27、gt;<p>  while(Con==1)</p><p><b>  {</b></p><p><b>  Jage=0;</b></p><p>  printf("\n 請輸入初始的磁道數(shù):");</p><p>  scanf("%d"

28、;,&Hand);</p><p>  printf("\n+ 輸入尋找的范圍:");</p><p>  scanf("%d",&Limit);</p><p>  if(Limit>65536){</p><p>  printf("超出磁道范圍!");&l

29、t;/p><p><b>  } </b></p><p><b>  else{</b></p><p>  printf("1.先來先服務(wù)算法(FCFS )\n");</p><p>  printf("2.最短尋道時間優(yōu)先算法(SSTF)\n");<

30、/p><p>  printf("3.掃描算法(SCAN) \n");</p><p>  scanf("%d",&n);</p><p>  if(n==0) exit(0);</p><p>  printf("\n");</p><p><

31、;b>  switch(n)</b></p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  SetDI(DiscLine); //隨機生成磁道數(shù)</p><p>  FCFS(Hand,DiscLine); //先來先服務(wù)

32、算法(FCFS)</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  SetDI(DiscLine); //隨機生成磁道數(shù)</p><p>  SSTF(Hand,DiscLine); //最短尋道時間優(yōu)先算法(SSTF)<

33、;/p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  SetDI(DiscLine); //隨機生成磁道數(shù)</p><p>  SCAN(Hand,DiscLine,0,9); //掃描算法(SCAN)</p><

34、;p><b>  break;</b></p><p>  SetDI(DiscLine); //隨機生成磁道數(shù)</p><p>  FCFS(Hand,DiscLine); //先來先服務(wù)算法(FCFS)</p><p>  SSTF(Hand,DiscLine); //最短尋道時間優(yōu)先算法(SSTF)</p><

35、p>  SCAN(Hand,DiscLine,0,9); //掃描算法(SCAN)</p><p><b>  }</b></p><p>  printf("\n\n+ 是否繼續(xù)(按0結(jié)束,按1繼續(xù))?");</p><p>  scanf("%5d",&Con);</p>

36、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //數(shù)組Sour復制到數(shù)組Dist,復制到x個數(shù)</p><p>  void CopyL(int Sour[],int Dist[]

37、,int x)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<=x;i++)</p><p><b>  {</b></p><p>  Dist[i]=Sour[

38、i];</p><p><b>  }</b></p><p><b>  }</b></p><p>  //打印輸出數(shù)組Pri</p><p>  void Print(int Pri[],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>  printf("%5d",Pri[i]);</p><p><b>  }<

40、;/b></p><p><b>  }</b></p><p><b>  //隨機生成磁道數(shù)</b></p><p>  void SetDI(int DiscL[])</p><p><b>  {</b></p><p><b>

41、  int i;</b></p><p>  for(i=0;i<=9;i++)</p><p><b>  {</b></p><p>  DiscL[i]=rand()%Limit;//隨機生成10個磁道號</p><p><b>  }</b></p><

42、p>  printf("+ 需要尋找的磁道號:");</p><p>  Print(DiscL,9); //輸出隨機生成的磁道號</p><p>  printf("\n");</p><p><b>  }</b></p><p>  //數(shù)組Sour把x位置的數(shù)刪除,

43、并把y前面的數(shù)向前移動,y后的數(shù)保持不變(即會出現(xiàn)2個y) </p><p>  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++

44、)</p><p><b>  { </b></p><p>  Sour[i]=Sour[i+1];</p><p><b>  x++;</b></p><p><b>  }</b></p><p><b>  }</b>&l

45、t;/p><p>  //先來先服務(wù)算法(FCFS)</p><p>  void FCFS(int Han,int DiscL[])</p><p><b>  {</b></p><p>  int RLine[10]; //將隨機生成的磁道數(shù)數(shù)組Discl[]復制給數(shù)組RLine[]</p><p

46、>  int i,k,All,Temp; //Temp是計算移動的磁道距離的臨時變量</p><p>  All=0; //統(tǒng)計全部的磁道數(shù)變量</p><p>  k=9; //限定10個的磁道數(shù)</p><p>  CopyL(DiscL,RLine,9); //復制磁道號到臨時數(shù)組RLine</p><p>  print

47、f("\n+ FCFS訪問順序為:");</p><p>  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ù)減去

48、后一個磁道數(shù)得出臨時的移動距離</p><p>  if(Temp<0) </p><p>  Temp=(-Temp);//移動磁道數(shù)為負數(shù)時,算出相反數(shù)作為移動磁道數(shù)</p><p>  printf("%5d",RLine[0]);</p><p>  All=Temp+All;//求全部磁道數(shù)的總和 <

49、/p><p>  DelInq(RLine,0,k);//每個磁道數(shù)向前移動一位</p><p><b>  k--;</b></p><p><b>  }</b></p><p>  Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p><p>

50、  Best[Jage][0]=1; //Best[][0]存放算法的序號為:1 </p><p>  Jage++;//排序的序號加1</p><p>  Aver=((float) All)/10;//求平均尋道次數(shù) </p><p>  printf("\n+ 移動磁道數(shù):<%5d> ",All);</p><

51、;p>  printf("\n+ 平均尋道長度:*%0.2f* ",Aver);</p><p><b>  }</b></p><p>  //最短尋道時間優(yōu)先算法(SSTF)</p><p>  void SSTF(int Han,int DiscL[])</p><p><b>

52、  {</b></p><p>  int i,j,k,h,All;</p><p>  int Temp; //Temp是計算移動的磁道距離的臨時變量</p><p>  int RLine[10]; //將隨機生成的磁道數(shù)數(shù)組Discl[]復制給數(shù)組RLine[]</p><p><b>  int Min;&

53、lt;/b></p><p>  All=0; //統(tǒng)計全部的磁道數(shù)變量</p><p>  k=9; //限定10個的磁道數(shù)</p><p>  CopyL(DiscL,RLine,9); //復制磁道號到臨時數(shù)組RLine</p><p>  printf("\n+ SSTF訪問順序為:");</p&

54、gt;<p>  for(i=0;i<=9;i++)</p><p><b>  {</b></p><p>  Min=64000;</p><p>  for(j=0;j<=k;j++) //內(nèi)循環(huán)尋找與當前磁道號最短尋道的時間的磁道號 </p><p><b>  {</b

55、></p><p>  if(RLine[j]>Han) //如果第一個隨機生成的磁道號大于當前的磁道號,執(zhí)行下一句</p><p>  Temp=RLine[j]-Han; //求出臨時的移動距離</p><p><b>  else</b></p><p>  Temp=Han-RLine[j];

56、//求出臨時的移動距離</p><p>  if(Temp<Min) //如果每求出一次的移動距離小于Min,執(zhí)行下一句</p><p><b>  {</b></p><p>  Min=Temp; //Temp臨時值賦予Min</p><p>  h=j; //把最近當前磁道號的數(shù)組下標賦予h</p

57、><p><b>  }</b></p><p><b>  }</b></p><p>  All=All+Min; //統(tǒng)計一共移動的距離</p><p>  printf("%5d",RLine[h]);</p><p>  Han=RLine[h];

58、 </p><p>  DelInq(RLine,h,k); //每個磁道數(shù)向前移動一位</p><p><b>  k--;</b></p><p><b>  }</b></p><p>  Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p>&

59、lt;p>  Best[Jage][0]=2;//Best[][0]存放算法的序號為:2</p><p>  Jage++;//排序序號加1</p><p>  Aver=((float)All)/10;//求平均尋道次數(shù) </p><p>  printf("\n+ 移動磁道數(shù):<%5d> ",All);</p>

60、<p>  printf("\n+ 平均尋道長度:*%0.2f* ",Aver);</p><p><b>  }</b></p><p>  //掃描算法(SCAN)</p><p>  int SCAN(int Han,int DiscL[],int x,int y)</p><p>

61、<b>  {</b></p><p>  int j,n,k,h,m,All;</p><p><b>  int t=0;</b></p><p><b>  int Temp;</b></p><p><b>  int Min;</b></p

62、><p>  int RLine[10]; //將隨機生成的磁道數(shù)數(shù)組Discl[]復制給數(shù)組RLine[] </p><p>  int Order;</p><p><b>  Order=1;</b></p><p><b>  k=y;</b></p><p>  m=2

63、; //控制while語句的執(zhí)行,即是一定要使當前磁道向內(nèi)向外都要掃描到</p><p>  All=0; //統(tǒng)計全部的磁道數(shù)變量</p><p>  CopyL(DiscL,RLine,9); //復制磁道號到臨時數(shù)組RLine</p><p>  printf("\n+ SCAN訪問順序為:");</p><p&g

64、t;  Min=64000;</p><p>  for(j=x;j<=y;j++) //尋找與當前磁道號最短尋道的時間的磁道號</p><p><b>  {</b></p><p>  if(RLine[j]>Han) //如果第一個隨機生成的磁道號大于當前的磁道號,執(zhí)行下一句</p><p>  T

65、emp=RLine[j]-Han; //求出臨時的移動距離</p><p><b>  else</b></p><p>  Temp=Han-RLine[j]; //求出臨時的移動距離</p><p>  if(Temp<Min)</p><p><b>  {</b></p>

66、;<p>  Min=Temp; //Temp臨時值賦予Min</p><p>  h=j; //把最近當前磁道號的數(shù)組下標賦予h</p><p><b>  }</b></p><p><b>  }</b></p><p>  All=All+Min; </p>

67、<p>  printf("%5d",RLine[h]);</p><p>  if(RLine[h]>=Han){ //判動方向,即是由里向外還是由外向里斷磁道的移</p><p><b>  Order=0;</b></p><p><b>  t=1;</b></p&g

68、t;<p><b>  }</b></p><p>  Han=RLine[h];</p><p>  DelInq(RLine,h,k); //每個磁道數(shù)向前移動一位</p><p><b>  k--;</b></p><p>  while(m>0) </p>

69、;<p><b>  {</b></p><p>  if(Order==1) //order是判斷磁盤掃描的方向標簽,order是1的話,磁道向內(nèi)移動</p><p><b>  {</b></p><p>  for(j=x;j<=y;j++) </p><p><

70、b>  {</b></p><p><b>  h=-1;</b></p><p>  Min=64000;</p><p>  for(n=x;n<=k;n++) //判斷離當前磁道最近的磁道號</p><p><b>  {</b></p><p&g

71、t;  if(RLine[n]<=Han)</p><p><b>  {</b></p><p>  Temp=Han-RLine[n];</p><p>  if(Temp<Min)</p><p><b>  {</b></p><p>  Min=Temp

72、; //Temp臨時值賦予Min</p><p>  h=n; //把最近當前磁道號的數(shù)組下標賦予h</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&

73、gt;  if(h!=-1)</b></p><p><b>  {</b></p><p>  All=All+Min; //疊加移動距離</p><p>  printf("%5d",RLine[h]);</p><p>  Han=RLine[h]; //最近的磁道號作為當前磁道&

74、lt;/p><p>  DelInq(RLine,h,k);</p><p><b>  k--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Order=0; //當完成向內(nèi)的移動,orde

75、r賦予0,執(zhí)行else語句,使磁道向外移動</p><p>  m--; //向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次</p><p><b>  }</b></p><p>  else //order是0的話,磁道向外移動</p><p><b>  {</b></p>

76、<p>  for(j=x;j<=y;j++)</p><p><b>  {</b></p><p><b>  h=-1;</b></p><p>  Min=64000;</p><p>  for(n=x;n<=k;n++) //判斷離當前磁道最近的磁道號<

77、/p><p><b>  {</b></p><p>  if(RLine[n]>=Han)</p><p><b>  {</b></p><p>  Temp=RLine[n]-Han;</p><p>  if(Temp<Min)</p><

78、p><b>  {</b></p><p>  Min=Temp; //Temp臨時值賦予Min</p><p>  h=n; //把最近當前磁道號的數(shù)組下標賦予h</p><p><b>  }</b></p><p><b>  }</b></p>

79、<p><b>  }</b></p><p><b>  if(h!=-1)</b></p><p><b>  {</b></p><p>  All=All+Min; //疊加移動距離</p><p>  printf("%5d",RLi

80、ne[h]);</p><p>  Han=RLine[h]; //最近的磁道號作為當前磁道</p><p>  DelInq(RLine,h,k);</p><p><b>  k--;</b></p><p><b>  }</b></p><p><b> 

81、 }</b></p><p>  Order=1; //當完成向內(nèi)的移動,order賦予0,執(zhí)行else語句,使磁道向外移動</p><p>  m--; //向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次</p><p><b>  }</b></p><p><b>  }</b

82、></p><p>  NAll=NAll+All;</p><p>  if((y-x)>5)</p><p><b>  {</b></p><p>  Best[Jage][1]=All;//Best[][1]存放移動磁道數(shù) </p><p>  Best[Jage][0]=3;

83、//Best[][0]存放算法的序號為:3</p><p>  Jage++;//排序序號加1</p><p>  Aver=((float)All)/10;//求平均尋道次數(shù) </p><p>  printf("\n+ 移動磁道數(shù):<%5d> ",All);</p><p>  printf("\

84、n+ 平均尋道長度:*%0.2f* ",Aver);</p><p><b>  }</b></p><p>  if(t==1) printf("\n+ 磁道由內(nèi)向外移動");</p><p>  else printf("\n+ 磁道由外向內(nèi)移動");</p><p>

溫馨提示

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

評論

0/150

提交評論