磁盤(pán)的調(diào)度算法_第1頁(yè)
磁盤(pán)的調(diào)度算法_第2頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.實(shí)驗(yàn)七磁盤(pán)的調(diào)度算法一.實(shí)驗(yàn)要求 設(shè)計(jì)五個(gè)算法,分別是先來(lái)先效勞算法,最短尋道時(shí)間優(yōu)先算法,掃描(SCAN)算法,循環(huán)掃描(CSCAN)算法,NStepSCAN算法.由人工輸入當(dāng)前的磁道數(shù),由系統(tǒng)隨即生成要訪問(wèn)的磁道.二、開(kāi)發(fā)環(huán)境操作系統(tǒng):Rad Hat Linux ,開(kāi)發(fā)環(huán)境:C語(yǔ)言.三、分析設(shè)計(jì)一實(shí)驗(yàn)原理. 磁盤(pán)是可被多個(gè)進(jìn)程共享的設(shè)備。當(dāng)有多個(gè)進(jìn)程都請(qǐng)求訪問(wèn)磁盤(pán)時(shí),應(yīng)采用一種適當(dāng)?shù)恼{(diào)度算法,以使各進(jìn)程對(duì)磁盤(pán)的平均訪問(wèn)(主要是尋道)時(shí)間最小。由于在訪問(wèn)磁盤(pán)的時(shí)間中,主要是尋道時(shí)間,因此,磁盤(pán)調(diào)度的目標(biāo)應(yīng)是使磁盤(pán)的平均尋道時(shí)間最少。(1) 先來(lái)先效勞(First-e,F(xiàn)irst-Serve

2、d,F(xiàn)CFS):這是一種簡(jiǎn)單的磁盤(pán)調(diào)度算法。它根據(jù)進(jìn)程請(qǐng)求訪問(wèn)磁盤(pán)的先后次序進(jìn)展調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡(jiǎn)單,且每個(gè)進(jìn)程的請(qǐng)求都能依次得到處理,不會(huì)出現(xiàn)某一進(jìn)程的請(qǐng)求長(zhǎng)期得不到滿足的情況。但此算法由于未對(duì)尋道進(jìn)展優(yōu)化,致使平均尋道時(shí)間可能較長(zhǎng)。(2) 最短尋道時(shí)間優(yōu)先(ShortestSeekTimeFirst,SSTF): 該算法選擇這樣的進(jìn)程,其要求訪問(wèn)的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,但這種調(diào)度算法卻不能保證平均尋道時(shí)間最短。(3) 掃描(SCAN)算法: SCAN算法不僅考慮到欲訪問(wèn)的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動(dòng)方向。例如,當(dāng)磁頭正在自

3、里向外移動(dòng)時(shí),SCAN算法所選擇的下一個(gè)訪問(wèn)對(duì)象應(yīng)是其欲訪問(wèn)的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪問(wèn),直到再無(wú)更外的磁道需要訪問(wèn)才將磁臂換向,自外向里移動(dòng)。這時(shí),同樣也是每次選擇這樣的進(jìn)程來(lái)調(diào)度,即其要訪問(wèn)的磁道,在當(dāng)前磁道之內(nèi),從而防止了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動(dòng)的規(guī)律頗似電梯的運(yùn)行,故又稱(chēng)為電梯調(diào)度算法。(4) 循環(huán)掃描(CSCAN)算法: 處理該進(jìn)程的請(qǐng)求,致使該進(jìn)程的請(qǐng)求被嚴(yán)重地推遲。為了減少這種延遲,CSCAN算法規(guī)定磁頭單向移動(dòng)。例如,只自里向外移動(dòng),當(dāng)磁頭移到最外的被訪問(wèn)磁道時(shí),磁頭立即返回到最里的欲訪磁道,即將最小磁道號(hào)緊接著最大磁道號(hào)構(gòu)成循環(huán),進(jìn)

4、展掃描。(5) N_Step_SCAN算法: N步SCAN算法是將磁盤(pán)請(qǐng)求隊(duì)列分成假設(shè)干個(gè)長(zhǎng)度為N的子隊(duì)列,磁盤(pán)調(diào)度將按FCFS算法依次處理這些子隊(duì)列.而每處理一個(gè)隊(duì)列時(shí)又是按SCAN算法,對(duì)一個(gè)隊(duì)列處理完后,再處理其他隊(duì)列.當(dāng)正在處理某子隊(duì)列時(shí),如果又出現(xiàn)新的磁盤(pán)I/O請(qǐng)求,便將新請(qǐng)求進(jìn)程放進(jìn)其他隊(duì)列.二程序構(gòu)造第一局部:程序的主要流程(1) 手動(dòng)輸入當(dāng)前的磁道號(hào),該磁道號(hào)在0<n<65536以內(nèi)(65536是2的16次方),超出X圍那么需重新輸入.(2) 手動(dòng)輸入要尋找磁道的X圍.(3) 主菜單,選擇要進(jìn)展磁道調(diào)度算法,此時(shí)會(huì)隨機(jī)生成一個(gè)在第二步生成磁道X圍以內(nèi)的10個(gè)磁道數(shù),

5、由SetDI方法生成,再將生成的隨機(jī)磁道號(hào)以數(shù)組形式作為參數(shù)被某個(gè)算法調(diào)用.例如,選擇了case 1,那么先調(diào)用SetDI方法,再執(zhí)行FCFS算法.如下: case 1: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) FCFS(Hand,DiscLine); /先來(lái)先效勞算法(FCFS) break;第二局部: 局部的代碼實(shí)現(xiàn)(1) 就每個(gè)算法而言,都有調(diào)用一個(gè)子算法CopyL把函數(shù)SetDI隨機(jī)生成的磁道數(shù)數(shù)組復(fù)制給RLine,為什么要復(fù)制,原因是在整個(gè)程序中的最后一項(xiàng)功能是實(shí)現(xiàn)5種算法對(duì)一次隨即生成的磁道數(shù)的比擬,所以在每次調(diào)用一種算法時(shí)需要設(shè)置一個(gè)臨時(shí)的數(shù)組Rline來(lái)存放.(2)

6、在這5個(gè)算法中都有一個(gè)字函數(shù)DelInq,該函數(shù)的作用是使每個(gè)磁道數(shù)向前移動(dòng)一位,簡(jiǎn)單地以FCFS算法為例,這里只FCFS其中的核心代碼:All=Han-RLine0; for(i=0;i<=9;i+) Temp=RLine0-RLine1;/求出移動(dòng)磁道數(shù),前一個(gè)磁道數(shù)減去后一個(gè)磁道數(shù)得出臨時(shí)的移動(dòng)距離 if(Temp<0) Temp=(-Temp);/移動(dòng)磁道數(shù)為負(fù)數(shù)時(shí),算出相反數(shù)作為移動(dòng)磁道數(shù) printf("%5d",RLine0); All=Temp+All;/求全部磁道數(shù)的總和 DelInq(RLine,0,k);/每個(gè)磁道數(shù)向前移動(dòng)一位 k-; H

7、an是當(dāng)前磁道數(shù),RLine0是第一個(gè)隨機(jī)磁道數(shù),Han-RLine0得到的是一次磁頭移動(dòng)的距離,再賦予All,即All是存放磁頭移動(dòng)的距離總和,for循環(huán)是執(zhí)行10次,Temp變量是求出移動(dòng)磁道數(shù),前一個(gè)磁道數(shù)減去后一個(gè)磁道數(shù)得出臨時(shí)的移動(dòng)距離,All=Temp+All是求全部磁道數(shù)的總和之后是DelInq函數(shù),使每個(gè)磁道數(shù)向前移動(dòng)一位。例如隨機(jī)生成的磁道數(shù)數(shù)組RLine是:583 286 177 115 593 535 586 492 249 421 因?yàn)楫?dāng)前的磁道數(shù)是500,通過(guò)All=Han-RLine0語(yǔ)句得到All等于83,接下來(lái)是Temp=RLine0-RLine1,是583-2

8、86=297,此時(shí)All等于83+297=380,再通過(guò)DelInq整個(gè)RLine數(shù)組的每個(gè)元素向前移一位,如下列圖所示:(3) 如果選擇case 6: 各類(lèi)算法的比擬,該比擬是比擬這5種算法的尋道長(zhǎng)度的總和,由小到大的排序.算法由PaiXu()函數(shù)實(shí)現(xiàn).具體是每種算法的最后都設(shè)置Best的二維數(shù)組, BestJage1=All,All是磁道數(shù)總和,Jage視每種算法而定,例如FCFS為1,那么Jage為1, SSTF為2,那么Jage為2,BestJage0=1(用來(lái)唯一標(biāo)識(shí)某個(gè)算法) .最后以PaiXu()算法,用冒泡法排序把5個(gè)算法的磁道數(shù)綜合由小到大排序.三數(shù)據(jù)構(gòu)造: Hand:當(dāng)前磁

9、道號(hào);DiscLine10:隨機(jī)生成的磁道號(hào); void SetDI(int DiscL)生成隨機(jī)磁道號(hào)算法; void CopyL(int Sour,int Dist ,int x) 數(shù)組Sour復(fù)制到數(shù)組Dist,復(fù)制到x個(gè)數(shù)四詳細(xì)設(shè)計(jì); void DelInq(int Sour,int x,int y) 數(shù)組Sour把x位置的數(shù)刪除,x后的數(shù)組元素向前挪一位.void PaiXu()尋道長(zhǎng)度由低到高排序void FCFS(int Han,int DiscL)先來(lái)先效勞算法(FCFS) void SSTF(int Han,int DiscL)最短尋道時(shí)間優(yōu)先算法(SSTF) int SCA

10、N(int Han,int DiscL,int x,int y) 掃描算法(SCAN) void CSCAN(int Han,int DiscL)循環(huán)掃描算法(CSCAN) void N_Step_SCAN(int Han1,int DiscL)N步掃描算法(NStepScan)* 課題:磁盤(pán)調(diào)度算法 *include "stdio.h"*include "stdlib.h"void CopyL(int Sour,int Dist ,int x); /數(shù)組Sour復(fù)制到數(shù)組Dist,復(fù)制到x個(gè)數(shù)void SetDI(int DiscL); /隨機(jī)生成磁道

11、數(shù) void Print(int Pri,int x); /打印輸出數(shù)組Privoid DelInq(int Sour,int x,int y); /數(shù)組Sour把x位置的數(shù)刪除,并把y前面的數(shù)向前移動(dòng),y后的數(shù)保持不變(即會(huì)出現(xiàn)2個(gè)y) void FCFS(int Han,int DiscL); /先來(lái)先效勞算法(FCFS)void SSTF(int Han,int DiscL); /最短尋道時(shí)間優(yōu)先算法(SSTF)int SCAN(int Han,int DiscL,int x,int y); /掃描算法(SCAN)void CSCAN(int Han,int DiscL); /循環(huán)掃描算

12、法(CSCAN)void N_Step_SCAN(int Han1,int DiscL); /N步掃描算法(NStepScan)void PaiXu(); /尋道長(zhǎng)度由低到高排序void Pri();int NAll=0;int Best52; /用作尋道長(zhǎng)度由低到高排序時(shí)存放的數(shù)組 int Limit=0; /輸入尋找的X圍磁道數(shù)iint Jage;float Aver=0;int main() int i; int DiscLine10; /聲明準(zhǔn)備要生成的隨機(jī)磁道號(hào)的數(shù)組 int Hand; /磁道數(shù) int Con=1; int n; while(Con=1) Jage=0; prin

13、tf(" 請(qǐng)輸入初始的磁道數(shù)(0<n<65536):"); scanf("%d",&Hand); printf(" + 輸入尋找的X圍:"); scanf("%d",&Limit); if(Limit>65536) printf("超出X圍!"); else printf(" "); printf(" 操作系統(tǒng)課程設(shè)計(jì) "); printf(" 磁盤(pán)調(diào)度算法 "); printf(" &quo

14、t;); printf(" "); printf(" 1.先來(lái)先效勞算法(FCFS) "); printf(" "); printf(" 2.最短尋道時(shí)間優(yōu)先算法(SSTF) "); printf(" "); printf(" 3.掃描算法(SCAN) "); printf(" "); printf(" 4.循環(huán)掃描算法(CSCAN) "); printf(" "); printf(" 5.N步掃描算法(N

15、StepScan) "); printf(" "); printf(" 6.各類(lèi)算法的比擬 "); printf(" "); printf(" "); printf(" "); printf(" 請(qǐng)輸入你的選擇的算法(輸入0離開(kāi)) "); printf(" "); scanf("%d",&n); if(n=0) exit(0); printf(" "); switch(n) case 1: SetD

16、I(DiscLine); /隨機(jī)生成磁道數(shù) FCFS(Hand,DiscLine); /先來(lái)先效勞算法(FCFS) break; case 2: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) SSTF(Hand,DiscLine); /最短尋道時(shí)間優(yōu)先算法(SSTF) break; case 3: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) SCAN(Hand,DiscLine,0,9); /掃描算法(SCAN) break; case 4: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) CSCAN(Hand,DiscLine); /循環(huán)掃描算法(CSCAN) break;

17、 case 5: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) N_Step_SCAN(Hand,DiscLine); /N步掃描算法(NStepScan) break; case 6: SetDI(DiscLine); /隨機(jī)生成磁道數(shù) FCFS(Hand,DiscLine); /先來(lái)先效勞算法(FCFS) SSTF(Hand,DiscLine); /最短尋道時(shí)間優(yōu)先算法(SSTF) SCAN(Hand,DiscLine,0,9); /掃描算法(SCAN) CSCAN(Hand,DiscLine); /循環(huán)掃描算法(CSCAN) N_Step_SCAN(Hand,DiscLine);

18、/N步掃描算法(NStepScan) PaiXu(); /尋道長(zhǎng)度由低到高排序 printf(" + 尋道長(zhǎng)度由低到高排序:"); for(i=0;i<5;i+) printf("%4d ",Besti0); break; printf(" + 是否繼續(xù)(按0完畢,按1繼續(xù))"); scanf("%5d",&Con); /數(shù)組Sour復(fù)制到數(shù)組Dist,復(fù)制到x個(gè)數(shù)void CopyL(int Sour,int Dist ,int x) int i; for(i=0;i<=x;i+) Disti

19、=Souri; /打印輸出數(shù)組Privoid Print(int Pri,int x) int i; for(i=0;i<=x;i+) printf("%5d",Prii); /隨機(jī)生成磁道數(shù)void SetDI(int DiscL) int i; for(i=0;i<=9;i+) DiscLi=rand()%Limit;/隨機(jī)生成10個(gè)磁道號(hào) printf("+ 需要尋找的磁道號(hào):"); Print(DiscL,9); /輸出隨機(jī)生成的磁道號(hào) printf(" ");/數(shù)組Sour把x位置的數(shù)刪除,并把y前面的數(shù)向前移動(dòng)

20、,y后的數(shù)保持不變(即會(huì)出現(xiàn)2個(gè)y) void DelInq(int Sour,int x,int y) int i; for(i=x;i<y;i+) Souri=Souri+1; x+; /先來(lái)先效勞算法(FCFS)void FCFS(int Han,int DiscL) int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl復(fù)制給數(shù)組RLine int i,k,All,Temp; /Temp是計(jì)算移動(dòng)的磁道距離的臨時(shí)變量 All=0; /統(tǒng)計(jì)全部的磁道數(shù)變量 k=9; /限定10個(gè)的磁道數(shù) CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine print

21、f(" + 按照FCFS算法磁道的訪問(wèn)順序?yàn)?"); All=Han-RLine0; for(i=0;i<=9;i+) Temp=RLine0-RLine1;/求出移動(dòng)磁道數(shù),前一個(gè)磁道數(shù)減去后一個(gè)磁道數(shù)得出臨時(shí)的移動(dòng)距離 if(Temp<0) Temp=(-Temp);/移動(dòng)磁道數(shù)為負(fù)數(shù)時(shí),算出相反數(shù)作為移動(dòng)磁道數(shù) printf("%5d",RLine0); All=Temp+All;/求全部磁道數(shù)的總和 DelInq(RLine,0,k);/每個(gè)磁道數(shù)向前移動(dòng)一位 k-; BestJage1=All;/Best1存放移動(dòng)磁道數(shù) BestJ

22、age0=1; /Best0存放算法的序號(hào)為:1 Jage+;/排序的序號(hào)加1 Aver=(float) All)/10;/求平均尋道次數(shù) printf(" + 移動(dòng)磁道數(shù):<%5d> ",All); printf(" + 平均尋道長(zhǎng)度:*%0.2f* ",Aver);/最短尋道時(shí)間優(yōu)先算法(SSTF)void SSTF(int Han,int DiscL) int i,j,k,h,All; int Temp; /Temp是計(jì)算移動(dòng)的磁道距離的臨時(shí)變量 int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl復(fù)制給數(shù)組RLine int

23、Min; All=0; /統(tǒng)計(jì)全部的磁道數(shù)變量 k=9; /限定10個(gè)的磁道數(shù) CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine printf(" + 按照SSTF算法磁道的訪問(wèn)順序?yàn)?"); for(i=0;i<=9;i+) Min=64000; for(j=0;j<=k;j+) /內(nèi)循環(huán)尋找與當(dāng)前磁道號(hào)最短尋道的時(shí)間的磁道號(hào) if(RLinej>Han) /如果第一個(gè)隨機(jī)生成的磁道號(hào)大于當(dāng)前的磁道號(hào),執(zhí)行下一句 Temp=RLinej-Han; /求出臨時(shí)的移動(dòng)距離 else Temp=Han-RLinej; /求出臨時(shí)的移

24、動(dòng)距離 if(Temp<Min) /如果每求出一次的移動(dòng)距離小于Min,執(zhí)行下一句 Min=Temp; /Temp臨時(shí)值賦予Min h=j; /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予h All=All+Min; /統(tǒng)計(jì)一共移動(dòng)的距離 printf("%5d",RLineh); Han=RLineh; DelInq(RLine,h,k); /每個(gè)磁道數(shù)向前移動(dòng)一位 k-; BestJage1=All;/Best1存放移動(dòng)磁道數(shù) BestJage0=2;/Best0存放算法的序號(hào)為:2 Jage+;/排序序號(hào)加1 Aver=(float)All)/10;/求平均尋道次數(shù) prin

25、tf(" + 移動(dòng)磁道數(shù):<%5d> ",All); printf(" + 平均尋道長(zhǎng)度:*%0.2f* ",Aver);/掃描算法(SCAN)int SCAN(int Han,int DiscL,int x,int y) int j,n,k,h,m,All; int t=0; int Temp; int Min; int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl復(fù)制給數(shù)組RLine int Order; Order=1; k=y; m=2; /控制while語(yǔ)句的執(zhí)行,即是一定要使當(dāng)前磁道向內(nèi)向外都要掃描到 All=0; /統(tǒng)計(jì)

26、全部的磁道數(shù)變量 CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine printf(" + 按照SCAN算法磁道的訪問(wèn)順序?yàn)?"); Min=64000; for(j=x;j<=y;j+) /尋找與當(dāng)前磁道號(hào)最短尋道的時(shí)間的磁道號(hào) if(RLinej>Han) /如果第一個(gè)隨機(jī)生成的磁道號(hào)大于當(dāng)前的磁道號(hào),執(zhí)行下一句 Temp=RLinej-Han; /求出臨時(shí)的移動(dòng)距離 else Temp=Han-RLinej; /求出臨時(shí)的移動(dòng)距離 if(Temp<Min) Min=Temp; /Temp臨時(shí)值賦予Min h=j; /把最近當(dāng)

27、前磁道號(hào)的數(shù)組下標(biāo)賦予h All=All+Min; printf("%5d",RLineh); if(RLineh>=Han) /判斷磁道的移動(dòng)方向,即是由里向外還是由外向里 Order=0; t=1; Han=RLineh; DelInq(RLine,h,k); /每個(gè)磁道數(shù)向前移動(dòng)一位 k-; while(m>0) if(Order=1) /order是判斷磁盤(pán)掃描的方向標(biāo)簽,order是1的話,磁道向內(nèi)移動(dòng) for(j=x;j<=y;j+) h=-1; Min=64000; for(n=x;n<=k;n+) /判斷離當(dāng)前磁道最近的磁道號(hào) if(

28、RLinen<=Han) Temp=Han-RLinen; if(Temp<Min) Min=Temp; /Temp臨時(shí)值賦予Min h=n; /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予h if(h!=-1) All=All+Min; /疊加移動(dòng)距離 printf("%5d",RLineh); Han=RLineh; /最近的磁道號(hào)作為當(dāng)前磁道 DelInq(RLine,h,k); k-; Order=0; /當(dāng)完成向內(nèi)的移動(dòng),order賦予0,執(zhí)行else語(yǔ)句,使磁道向外移動(dòng) m-; /向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次 else /order是0的話,

29、磁道向外移動(dòng) for(j=x;j<=y;j+) h=-1; Min=64000; for(n=x;n<=k;n+) /判斷離當(dāng)前磁道最近的磁道號(hào) if(RLinen>=Han) Temp=RLinen-Han; if(Temp<Min) Min=Temp; /Temp臨時(shí)值賦予Min h=n; /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予h if(h!=-1) All=All+Min; /疊加移動(dòng)距離 printf("%5d",RLineh); Han=RLineh; /最近的磁道號(hào)作為當(dāng)前磁道 DelInq(RLine,h,k); k-; Order=1; /

30、當(dāng)完成向內(nèi)的移動(dòng),order賦予0,執(zhí)行else語(yǔ)句,使磁道向外移動(dòng) m-; /向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩次 NAll=NAll+All; if(y-x)>5) BestJage1=All;/Best1存放移動(dòng)磁道數(shù) BestJage0=3;/Best0存放算法的序號(hào)為:3 Jage+;/排序序號(hào)加1 Aver=(float)All)/10;/求平均尋道次數(shù) printf(" + 移動(dòng)磁道數(shù):<%5d> ",All); printf(" + 平均尋道長(zhǎng)度:*%0.2f* ",Aver); if(t=1) print

31、f(" + 磁道由內(nèi)向外移動(dòng)"); else printf(" + 磁道由外向內(nèi)移動(dòng)"); return(Han);/循環(huán)掃描算法(CSCAN)void CSCAN(int Han,int DiscL) int j,h,n,Temp,m,k,All,Last,i; int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl復(fù)制給數(shù)組RLine int Min; int tmp=0; m=2; k=9; All=0; /統(tǒng)計(jì)全部的磁道數(shù)變量 Last=Han; CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine printf(&

32、quot; + 按照CSCAN算法磁道的訪問(wèn)順序?yàn)?"); while(k>=0) for(j=0;j<=9;j+) /從當(dāng)前磁道號(hào)開(kāi)場(chǎng),由內(nèi)向外搜索離當(dāng)前磁道最近的磁道號(hào) h=-1; Min=64000; for(n=0;n<=k;n+) if(RLinen>=Han) Temp=RLinen-Han; if(Temp<Min) Min=Temp; h=n; if(h!=-1) All=All+Min; /統(tǒng)計(jì)一共移動(dòng)的距離 printf("%5d",RLineh); Han=RLineh; Last=RLineh; DelInq(RLine,h,k); k-; if(k>=0) tmp=RLine0; for(i=0;i<k;i+)/算出剩下磁道號(hào)的最小值 if(tmp>RLinei) tmp=RLinei; Han=tmp;/把最小的磁道號(hào)賦給Han Temp=Last-tmp;/求出最大磁道號(hào)和最小磁道號(hào)的距離差 All=All+Temp; Best

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論