操作系統(tǒng)課程設(shè)計(jì),磁盤調(diào)度算法_第1頁
操作系統(tǒng)課程設(shè)計(jì),磁盤調(diào)度算法_第2頁
操作系統(tǒng)課程設(shè)計(jì),磁盤調(diào)度算法_第3頁
操作系統(tǒng)課程設(shè)計(jì),磁盤調(diào)度算法_第4頁
操作系統(tǒng)課程設(shè)計(jì),磁盤調(diào)度算法_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄課程設(shè)計(jì)目的及要求錯(cuò)一誤!未定義書簽。相關(guān)知識(shí)錯(cuò)一誤!未定義書簽。題目分析2概要設(shè)計(jì)2先來先服務(wù)FCFS的設(shè)計(jì)思想.2最短尋道時(shí)間優(yōu)先調(diào)到STF的設(shè)計(jì)思想.2掃描算法SCAN的設(shè)計(jì)思想2循環(huán)才3描CSCAN的設(shè)計(jì)思想二2代碼及流程3流程圖.3源代碼.8運(yùn)行結(jié)果16設(shè)計(jì)心得19參考文獻(xiàn)191課程設(shè)計(jì)目的及要求設(shè)計(jì)目的:加深對(duì)操作系統(tǒng)原理的進(jìn)一步認(rèn)識(shí),加強(qiáng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的培養(yǎng),提高分析問題解決問題的能力,培養(yǎng)合作精神,以鞏固和加深磁盤調(diào)度的概念。操作系統(tǒng)是一門工程性很強(qiáng)的課程,它不僅要求學(xué)生掌握操作系統(tǒng)的工作原理和理論知識(shí),也要求學(xué)生的實(shí)際動(dòng)手能力,以加深對(duì)所學(xué)習(xí)內(nèi)容的理解,使學(xué)生

2、熟練地掌握計(jì)算機(jī)的操作方法,使用各種軟件工具,加強(qiáng)對(duì)課程內(nèi)容的理解。這次課程設(shè)計(jì),就是通過模擬磁臂調(diào)度來加深對(duì)操作系統(tǒng)中磁臂調(diào)度概念的理解。使學(xué)生熟悉磁盤管理系統(tǒng)的設(shè)計(jì)方法;加深對(duì)所學(xué)各種磁盤調(diào)度算法的了解及其算法的特點(diǎn)。設(shè)計(jì)要求:編程序?qū)崿F(xiàn)下述磁盤調(diào)度算法,并求出每種算法的平均尋道長度;要求設(shè)計(jì)主界面可以靈活選擇某算法,且以下算法都要實(shí)現(xiàn)1、先來先服務(wù)算法(FCFS)2、最短尋道時(shí)間優(yōu)先算法(SSTF)3、掃描算法(SCAN)4、循環(huán)掃描算法(CSCAN)2相關(guān)知識(shí)數(shù)據(jù)結(jié)構(gòu):數(shù)組now:當(dāng)前磁道號(hào);array:放置磁道號(hào)的數(shù)組;voidFCFS(intarray,intm)voidSSTF(

3、intarray,intm)voidSCAN(intarray,intm)voidCSCAN(intarray,intm)先來先服務(wù)算法(FCFS)最短尋道時(shí)間優(yōu)先算法(SSTF)掃描算法(SCAN)循環(huán)掃描算法(CSCAN)磁盤調(diào)度:當(dāng)有多個(gè)進(jìn)程都請(qǐng)求訪訶磁盤時(shí),采用一種適當(dāng)?shù)尿?qū)動(dòng)調(diào)度算法,使各進(jìn)程對(duì)磁盤的平均訪問(主要是尋道)時(shí)間最小。目前常用的磁盤調(diào)度算法有:1)閑來先服務(wù)2)最短尋道時(shí)間優(yōu)先3)掃描算法4)循環(huán)掃描算法等3題目分析選擇一個(gè)自己熟悉的計(jì)算機(jī)系統(tǒng)和程序設(shè)計(jì)語言模擬操作系統(tǒng)基本功能的設(shè)計(jì)方法及其實(shí)現(xiàn)過程完成各分項(xiàng)功能。在算法的實(shí)現(xiàn)過程中,要求可決定變量應(yīng)是動(dòng)態(tài)可變的;同時(shí)模塊

4、應(yīng)該有一個(gè)合理的輸出結(jié)果。具體可參照實(shí)驗(yàn)的程序模擬.各功能程序要求自行編寫程序?qū)崿F(xiàn),不得調(diào)用現(xiàn)有操作系統(tǒng)提供的模塊或功能函數(shù)。磁盤調(diào)度程序模擬。先來先服務(wù)調(diào)度算法.最短尋道時(shí)間優(yōu)先調(diào)度,循環(huán)(SCAN)調(diào)度算法。程序設(shè)計(jì)語言自選,最終以軟件(含源代碼以及執(zhí)行程序)和設(shè)計(jì)報(bào)告的形式提交課程設(shè)計(jì)結(jié)果.。磁盤調(diào)度讓有限的資源發(fā)揮更大的作用。在多道程序設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)中,各個(gè)進(jìn)程可能會(huì)不斷提出不同的對(duì)磁盤進(jìn)行讀/寫操作的請(qǐng)求。由于有時(shí)候這些進(jìn)程的發(fā)送請(qǐng)求的速度比磁盤響應(yīng)的還要快,因此我們有必要為每個(gè)磁盤設(shè)備建立一個(gè)等待隊(duì)列。4概要設(shè)計(jì).先來先服務(wù)(FCFS)的設(shè)計(jì)思想即先來的請(qǐng)求先被響應(yīng)。FCFS策略

5、看起來似乎是相當(dāng)"公平”的,但是當(dāng)請(qǐng)求的頻率過高的時(shí)候FCFS策略的響應(yīng)時(shí)間就會(huì)大大延長。FCFS策略為我們建立起一個(gè)隨機(jī)訪問機(jī)制的模型,但是假如用這個(gè)策略反復(fù)響應(yīng)從里到外的請(qǐng)求,那么將會(huì)消耗大量的時(shí)間。為了盡量降低尋道時(shí)間,看來我們需要對(duì)等待著的請(qǐng)求進(jìn)行適當(dāng)?shù)呐判颍皇呛唵蔚氖褂肍CFS策略。這個(gè)過程就叫做磁盤調(diào)度管理。有時(shí)候fcfs也被看作是最簡單的磁盤調(diào)度算法。.最短尋道時(shí)間優(yōu)先調(diào)度(SSTF)的設(shè)計(jì)思想最短時(shí)間優(yōu)先算法選擇這樣的進(jìn)程。要求訪問的磁道,與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短。.掃描算法(SCAN)的設(shè)計(jì)思想掃描(SCAN)調(diào)度算法:該算法不僅考慮

6、到欲訪問的磁道與當(dāng)前磁道間的距離,更優(yōu)先考慮的是磁頭當(dāng)前的移動(dòng)方向。例如,當(dāng)磁頭正在自里向外移動(dòng)時(shí),SCAN算法所考慮的下一個(gè)訪問對(duì)象,應(yīng)是其欲訪問的磁道,既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外的訪問,直至再無更外的磁道需要訪問時(shí),才將磁道換向自外向里移動(dòng)。這時(shí),同樣也是每次選擇這樣的進(jìn)程來調(diào)度,也就是要訪問的當(dāng)前位置內(nèi)距離最近者,這樣,磁頭又逐步地從外向里移動(dòng),直至再無更里面的磁道要訪問,從而避免了出現(xiàn)饑餓”現(xiàn)像。.循環(huán)掃描(CSACN)的設(shè)計(jì)思想循環(huán)掃描(CSCAN)算法:當(dāng)磁頭剛從里向外移動(dòng)而越過了某一磁道時(shí),恰好又有一進(jìn)程請(qǐng)求訪問此磁道,這時(shí),該里程就必須等待,為了減少這種延遲

7、,CSCAN算法規(guī)定磁頭單向移動(dòng),而本實(shí)驗(yàn)過程中我們所設(shè)計(jì)的是磁頭從里向外移動(dòng),而從外向里移動(dòng)時(shí)只須改方向而已,本實(shí)驗(yàn)未實(shí)現(xiàn)。但本實(shí)驗(yàn)已完全能演示循環(huán)掃描的全過程。5代碼及流程1.先來先服務(wù)(FCFS)圖11FCFS的流程圖2.最短尋道時(shí)間優(yōu)先調(diào)度(SSTF)圖12SSTF的流程圖3.掃描算法(SCAN)圖13SCAN的流程圖4.循環(huán)掃描(CSCAN)圖14CSCAN的流程圖圖15主函數(shù)的流程圖源代碼:#include"stdio.h"#include"stdlib.h"/#include"iostream.h"#definemaxs

8、ize100/定義最大數(shù)組域/先來先服務(wù)調(diào)度算法voidFCFS(intarray口,intm)intsum=0,j,i;intavg;printf("nFCFS調(diào)度結(jié)果:");for(i=0;i<m;i+)輸出FCFS磁盤調(diào)度結(jié)果printf("%d",arrayi);for(i=0,j=1;j<m;i+,j+)sum+=abs(arrayj-arrayi);/累計(jì)總的移動(dòng)距離avg=sum/(m-1);計(jì)算平均尋道長度printf("n移動(dòng)的總道數(shù):%dn",sum);printf("平均尋道長度:%dn&q

9、uot;,avg);/最短尋道時(shí)間優(yōu)先調(diào)度算法voidSSTF(intarray,intm)inttemp;intk=1;intnow,l,r;inti,j,sum=0;intavg;for(i=0;i<m;i+)for(j=i+1;j<m;j+)/對(duì)磁道號(hào)進(jìn)行從小到大排列if(arrayi>arrayj)/兩磁道號(hào)之間比較temp=arrayi;arrayi=arrayj;arrayj=temp;)for(i=0;i<m;i+)輸出排序后的磁道號(hào)數(shù)組(printf("%d",arrayi);)printf("n請(qǐng)輸入當(dāng)前的磁道號(hào):&quo

10、t;);scanf("%d",&now);printf("nSSTF調(diào)度結(jié)果:");if(arraym-1<=now)/判斷整個(gè)數(shù)組里的數(shù)是否都小于當(dāng)前磁道號(hào)(for(i=m-1;i>=0;i-)/將數(shù)組磁道號(hào)從大到小輸出printf("%d",arrayi);sum=now-array0;/計(jì)算移動(dòng)距離)elseif(array0>=now)/判斷整個(gè)數(shù)組里的數(shù)是否都大于當(dāng)前磁道號(hào)(for(i=0;i<m;i+)/將磁道號(hào)從小到大輸出printf("%d",arrayi);sum=

11、arraym-1卜now;/計(jì)算移動(dòng)距離)else(while(arrayk<now)/逐一比較以確定K值(k+;)l=k-1;r=k;確定當(dāng)前磁道在已排的序列中的位置while(l>=0)&&(r<m)(if(now-arrayl)<=(arrayr-now)/判斷最短距離(printf("%d",arrayl);sum+=now-arrayl;/計(jì)算移動(dòng)距離now=arrayl;l=l-1;)else(printf("%d",arrayr);sum+=arrayr-now;/計(jì)算移動(dòng)品巨離now=arrayr;

12、r=r+1;if(l=-1)(for(j=r;j<m;j+)(printf("%d",arrayj);sum+=arraym-1-array0;/計(jì)算移動(dòng)距離else(for(j=l;j>=0;j-)(printf("%d",arrayj);sum+=arraym-1-array0;/計(jì)算移動(dòng)距離avg=sum/m;printf("n移動(dòng)的總道數(shù):%dn",sum);printf("平均尋道長度:%dn",avg);掃描算法voidSCAN(intarray,intm)/先要給出當(dāng)前磁道號(hào)和移動(dòng)臂的移動(dòng)

13、方向(inttemp;intk=1;intnow,l,r,d;inti,j,sum=0;intavg;for(i=0;i<m;i+)(for(j=i+1;j<m;j+)(if(arrayi>arrayj)/對(duì)磁道號(hào)進(jìn)行從小到大排列(temp=arrayi;arrayi=arrayj;arrayj=temp;)for(i=0;i<m;i+)(printf("%d",arrayi);/輸出排序后的磁道號(hào)數(shù)組)printf("n請(qǐng)輸入當(dāng)前的磁道號(hào):");scanf("%d",&now);if(arraym-1

14、<=now)/判斷整個(gè)數(shù)組里的數(shù)是否都小于當(dāng)前磁道號(hào)(printf("nSCAN調(diào)度結(jié)果:");for(i=m-1;i>=0;i-)(printf("%d",arrayi);/將數(shù)組磁道號(hào)從大到小輸出)sum=now-array0;/計(jì)算移動(dòng)距離)elseif(array0>=now)/判斷整個(gè)數(shù)組里的數(shù)是否都大于當(dāng)前磁道號(hào)(printf("nSCAN調(diào)度結(jié)果:");for(i=0;i<m;i+)(printf("%d",arrayi);/將磁道號(hào)從小到大輸出)sum=arraym-1卜no

15、w;/計(jì)算移動(dòng)距離)else(while(arrayk<now)/逐一比較以確定K值(k+;)l=k-1;r=k;printf("n請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向(1磁道號(hào)增加方向,0磁道號(hào)減小方向):");scanf("%d",&d);printf("nSCAN調(diào)度結(jié)果:");if(d=0)(for(j=l;j>=0;j-)(printf("%d",arrayj);)for(j=r;j<m;j+)(printf("%d",arrayj);)sum=now-2*array

16、0+arraym-1;/計(jì)算移動(dòng)距離/磁道號(hào)減小方向else(for(j=r;j<m;j+)(printf("%d",arrayj);for(j=l;j>=0;j-)(printf("%d",arrayj);sum=-now-array0+2*arraym-1;計(jì)算移動(dòng)距離/磁道號(hào)增加方向avg=sum/m;printf("n移動(dòng)的總道數(shù):%dn",sum);printf("平均尋道長度:%dn",avg);/循環(huán)掃描算法voidCSCAN(intarray,intm)(inttemp;intk=1;i

17、ntnow,l,r,d;inti,j,sum=0;intavg;for(i=0;i<m;i+)(for(j=i+1;j<m;j+)(if(arrayi>arrayj)/對(duì)磁道號(hào)進(jìn)行從小到大排列(temp=arrayi;arrayi=arrayj;arrayj=temp;)for(i=0;i<m;i+)(printf("%d",arrayi);/輸出排序后的磁道號(hào)數(shù)組)printf("n請(qǐng)輸入當(dāng)前的磁道號(hào):");scanf("%d",&now);if(arraym-1<=now)/判斷整個(gè)數(shù)組里的數(shù)

18、是否都小于當(dāng)前磁道號(hào)(printf("nCSCAN調(diào)度結(jié)果:");for(i=0;i<m;i+)(printf("%d",arrayi);/將磁道號(hào)從小到大輸出)sum=now-array0+arraym-1;/計(jì)算移動(dòng)距離)elseif(array0>=now)/判斷整個(gè)數(shù)組里的數(shù)是否都大于當(dāng)前磁道號(hào)(printf("nCSCAN調(diào)度結(jié)果:");for(i=0;i<m;i+)(printf("%d",arrayi);/將磁道號(hào)從小到大輸出)sum=arraym-1卜now;/計(jì)算移動(dòng)距離)els

19、e(while(arrayk<now)/逐一比較以確定K值(k+;)l=k-1;r=k;printf("n請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向(1磁道號(hào)增加方向,0磁道號(hào)減小方向):");scanf("%d",&d);printf("nCSCAN調(diào)度結(jié)果:");if(d=0)(for(j=l;j>=0;j-)(printf("%d",arrayj);)for(j=m-1;j>=r;j-)(printf("%d",arrayj);)sum=2*(arraym-1卜array0)-

20、arrayr+now;/計(jì)算移動(dòng)距離/磁道號(hào)減小方向else(for(j=r;j<m;j+)(printf("%d",arrayj);for(j=0;j<r;j+)(printf("%d",arrayj);sum=2*(arraym-1卜array0)+arrayr-1-now;計(jì)算移動(dòng)距離/磁道號(hào)增加方向avg=sum/m;printf("n移動(dòng)的總道數(shù):%dn",sum);printf("平均尋道長度:%dn",avg);/操作界面intmain()(intc;FILE*fp;/定義指針文件intc

21、idaomaxsize;定義磁道號(hào)數(shù)組inti=0,count;fp=fopen("cidao.txt","r+");/讀取cidao.txt文件if(fp=NULL)/判斷文件是否存在(printf("n請(qǐng)先設(shè)置磁道!n");exit(0);while(!feof(fp)/如果磁道文件存在(fscanf(fp,"%d",&cidaoi);/調(diào)入磁道號(hào)i+;)count=i-1;printf("nprintf("10-11printf("printf("printf(

22、"printf("printf("printf("nn");年度OS課程設(shè)計(jì)-磁盤調(diào)度算法系統(tǒng)n");計(jì)算機(jī)科學(xué)與技術(shù)二班n");姓名:宋思揚(yáng)n");學(xué)號(hào):0803050203n");電話*n");2010年12月29日n");n");printf("n磁道讀取結(jié)果:n");for(i=0;i<count;i+)(printf("%5d",cidaoi);/輸出讀取的磁道的磁道號(hào))printf("n");whi

23、le(1)(printf("n算法選擇:n");printf("1、先來先服務(wù)算法(FCFS)n");printf("2、最短尋道時(shí)間優(yōu)先算法(SSTF)n");printf("3、掃描算法(SCAN)n");printf("4、循環(huán)掃描算法(CSCAN)n");printf("5.退出n");printf("n");printf("請(qǐng)選擇:");scanf("%d",&c);if(c>5)break;

24、switch(c)/算法選擇(FCFS(cidao,count);先來先服務(wù)算法printf("n");break;SSTF(cidao,count);/最短尋道時(shí)間優(yōu)先算法printf("n");break;case3:SCAN(cidao,count);/掃描算法printf("n");break;CSCAN(cidao,count);/循環(huán)掃描算法printf("n");break;exit(0);return0;6運(yùn)行結(jié)果11-12年度簞?wù)n程謨計(jì)一班盤調(diào)度算法系統(tǒng)計(jì)算機(jī)科至就四拉通鐘以軍學(xué)號(hào)*3g5B434

25、由r舌:胃MX-,如1年12月29日磁道讀取結(jié)果上11124s324422251?FS法sCAI先jCS簟間金法務(wù)時(shí)<算朋道;力鼻就掃士守最憶壇運(yùn)阜、+'、隼12345圖21運(yùn)行界面:sS果矍結(jié)道長度口心道歌尋FS動(dòng)均FC簟2319-11算法選悻:i、4、IB1F幫環(huán)君器具法(CSCAN)SSTF)圖22運(yùn)行FCFS的界面情選擇:21112172225324445請(qǐng)輸入當(dāng)前的磁道號(hào):383STF調(diào)度結(jié)果:3225221712114445將動(dòng)的意道數(shù):5?隼均尋道長度;7算法選擇;1.先來先服為其巷Cfcfs)2、最短尋道時(shí)胤好算法三描算法(CS8N)"C口N)生選擇;圖

26、23運(yùn)行SSTF的界面請(qǐng)選擇;3111217222S324445請(qǐng)輸入當(dāng)前的磁道號(hào);22請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向1啜道號(hào)增加方向,。磁道號(hào)減小方向):口SCAN移動(dòng)咽度結(jié)果:附翳數(shù);171211222532444545平均尋道長度;5算12345先尋昌一來短描環(huán)出先最服道磕:田FS法N)FC算CA!先>cs兼7曷SC法務(wù)時(shí)I算(SSIF)圖24運(yùn)彳TSCAN的界面情選擇;31112172225324445請(qǐng)輸入當(dāng)前的磁道號(hào):22請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向1磁道號(hào)增加方向,。磁道號(hào)減小方向二1£8N調(diào)度結(jié)果:2225324445171211移百苗意道熱57平均尋道長篦7FS法N)FC算CASC凍7®®sc法務(wù)時(shí)I算H尋若短指環(huán)出最iSGTFJ圖25運(yùn)彳TSCAN的界面情選擇;41112172225324445:請(qǐng)輸入當(dāng)前的磁道號(hào),22請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向1磁道號(hào)增加方向,回磁道巖減小方向):0CSCHN調(diào)度結(jié)果:1712114544322522WilfrFS法N.IFC算cfl*T曷56法務(wù)時(shí)I算H

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論