操作系統(tǒng)實(shí)驗(yàn)四磁盤調(diào)度算法_第1頁
操作系統(tǒng)實(shí)驗(yàn)四磁盤調(diào)度算法_第2頁
操作系統(tǒng)實(shí)驗(yàn)四磁盤調(diào)度算法_第3頁
操作系統(tǒng)實(shí)驗(yàn)四磁盤調(diào)度算法_第4頁
操作系統(tǒng)實(shí)驗(yàn)四磁盤調(diào)度算法_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)四磁盤調(diào)度一、實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求學(xué)生模擬設(shè)計(jì)一個(gè)磁盤調(diào)度程序,觀察調(diào)度程序的動(dòng)態(tài)運(yùn)行過 程。通過實(shí)驗(yàn)讓學(xué)生理解和掌握磁盤調(diào)度的職能。二、實(shí)驗(yàn)內(nèi)容:對(duì)磁盤進(jìn)行移臂操作,模擬磁盤調(diào)度算法并計(jì)算平均尋道時(shí)間三、實(shí)驗(yàn)準(zhǔn)備:1 .相關(guān)理論知識(shí):(1)假設(shè)磁盤只有一個(gè)盤面,并且磁盤是可移動(dòng)頭磁盤。(3)磁盤是高速、大容量、旋轉(zhuǎn)型、可直接存取的存儲(chǔ)設(shè)備。它作為計(jì)算 機(jī)系統(tǒng)的輔助存儲(chǔ)器,擔(dān)負(fù)著繁重的輸入輸出工作,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中往往同 時(shí)會(huì)有若干個(gè)要求訪問磁盤的輸入輸出要求。 系統(tǒng)可采用一種策略,盡可能按最 佳次序執(zhí)行訪問磁盤的請(qǐng)求。由于磁盤訪問時(shí)間主要受尋道時(shí)間T的影響,為此需要采用合適的尋道算法,

2、以降低尋道時(shí)間。(2)磁盤是可供多個(gè)進(jìn)程共享的存儲(chǔ)設(shè)備,但一個(gè)磁盤每個(gè)時(shí)刻只能為一 個(gè)進(jìn)程服務(wù)。當(dāng)有進(jìn)程在訪問某個(gè)磁盤時(shí),其它想訪問該磁盤的進(jìn)程必須等待, 直到磁盤一次工作結(jié)束。當(dāng)有多個(gè)進(jìn)程提出輸入輸出請(qǐng)求而處于等待狀態(tài)時(shí),可用磁盤調(diào)度算法從若干個(gè)等待訪問者中選擇一個(gè)進(jìn)程,讓它訪問磁盤。2 .測試數(shù)據(jù):磁盤讀寫請(qǐng)求隊(duì)列:20, 44, 40, 4, 80, 12, 76當(dāng)前磁頭位置:50試問采用FCFS SSTF SCAN1盤調(diào)度算法時(shí)尋道順序及平均尋道時(shí)間分別 為多少?四、實(shí)驗(yàn)過程:1.流程圖SCAN算法(掃描算法)流程圖:開始2.源代碼#include#include#include#in

3、clude#define maxsize 1000/*int decide(char str口)判斷輸入數(shù)據(jù)是否有效int i=0;while(stri!=0)if(stri9)return 0;break;i+;return i;將字符串轉(zhuǎn)換成數(shù)字*/*int trans(char str口,int a)將字符串轉(zhuǎn)換成數(shù)字int i;int sum=0;for(i=0;ia;i+)sum=sum+(int)(stri-0)*pow(10,a-i-1);return sum;/*冒泡NE序算法 */ int *bubble(int cidao,int m)int i,j;int temp;fo

4、r(i=0;im;i+)使用冒泡法按從小到大順序排列for(j=i+1;jcidaoj)temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;cout排序后的磁盤序列為:;for( i=0;im;i+)輸出排序結(jié)果coutcidaoicoutendl;return cidao;/*先來先服務(wù)調(diào)度算法 */void FCFS(int cidao口,int m)/磁道號(hào)數(shù)組,個(gè)數(shù)為 mint now;/當(dāng)前磁道號(hào)int sum=0;總尋道長度int j,i;int a;char str100;float ave;/平均尋道長度cout磁盤請(qǐng)求序列為:;for( i=0;im;

5、i+)/按先來先服務(wù)的策略輸出磁盤請(qǐng)求序列coutcidaoi;coutendl;coutstr;對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新輸入!endl;goto B;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)sum+=abs(cidao0-now);cout磁盤掃描序列為:;for( i=0;im;i+)/輸出磁盤掃描序列coutcidaoi;for(i=0,j=1;jm;i+,j+)求平均尋道長度sum+=abs(cidaoj-cidaoi);ave=(float)(sum)/(float)(m);coutendl;

6、cout平均尋道長度:aveendl;最短尋道時(shí)間優(yōu)先調(diào)度算法*/* void SSTF(int cidao口,int m)int k=1;int now,l,r;int i,j,sum=0;int a;char str100;float ave;cidao=bubble(cidao,m);調(diào)用冒泡排序算法排序coutstr;/對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新輸入!endl;goto C;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最大者,則直接由外向內(nèi)依次

7、給予各請(qǐng)求服務(wù)cout=0;i-)coutcidaoi=now)若當(dāng)前磁道號(hào)小于請(qǐng)求序列中最小者,則直接由內(nèi)向外依次給予各請(qǐng)求服務(wù)cout磁盤掃描序列為:;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最小者且小于最cout磁盤掃描序列為:;while(cidaok=0)&(rm)當(dāng)前磁道在請(qǐng)求序列范圍內(nèi) if(now-cidaol)=(cidaor-now)/選擇與當(dāng)前磁道最近的請(qǐng)求給予服務(wù) coutcidaol; sum+=now-cidaol; now=cidaol; l=l-1; else coutcidaor; sum

8、+=cidaor-now; now=cidaor; r=r+1; if(l=-1)/磁頭移動(dòng)到序列的最小號(hào),返回外側(cè)掃描仍未掃描的磁道 for(j=r;jm;j+) coutcidaoj=0;j-) coutcidaoj;sum+=cidaom-1-cidao0;ave=(float)(sum)/(float)(m);coutendl;cout平均尋道長度:aveendl;/*void SCAN(int cidao口,int m)掃描調(diào)度算法 */先要給出當(dāng)前磁道號(hào)和移動(dòng)臂的移動(dòng)方向int k=1;int now,l,r,d;int i,j,sum=0;int a;char str100;fl

9、oat ave;cidao=bubble(cidao,m);調(diào)用冒泡排序算法排序coutstr;/對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新輸入!endl;goto D;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)/若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最大者,則直接由外向內(nèi)依次給予各請(qǐng)求服務(wù),此情況同最短尋道優(yōu)先cout=0;i-)coutcidaoi=now)若當(dāng)前磁道號(hào)小于請(qǐng)求序列中最小者,則直接由內(nèi)向外依次給予各請(qǐng)求服務(wù),此情況同最短尋道優(yōu)先cout磁盤掃描序列為:;for(i=0;im;i+)c

10、outcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最小者且小于最while(cidaoknow)k+;l=k-1;r=k;coutd;if(d=0)/選擇移動(dòng)臂方向向內(nèi),則先向內(nèi)掃描cout=0;j-) coutcidaoj卜”;輸出向內(nèi)掃描的序列for(j=r;jm;j+)/W頭移動(dòng)到最小號(hào),則改變方向向外掃描未掃描的磁道coutcidaoj卜”;輸出向外掃描的序列sum=now-2*cidao0+cidaom-1;else/選擇移動(dòng)臂方向向外,則先向外掃描cout磁盤掃描序列為:;for(j=r;jm;j+) coutcidaoj=0;j-)/磁頭移動(dòng)到最大

11、號(hào),則改變方向向內(nèi)掃描未掃描的磁道coutcidaoj;sum=-now-cidao0+2*cidaom-1;ave=(float)(sum)/(float)(m);coutendl;cout平均尋道長度:aveendl;/*循環(huán)掃描調(diào)度算法 */void CSCAN(int cidao,int m)int k=1;int now,l,r;int i,j,sum=0;int a;char str100;float ave;cidao=bubble(cidao,m);調(diào)用冒泡排序算法排序coutstr;/對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤

12、,請(qǐng)重新輸入! endl;goto E;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最大者,則直接將移動(dòng)臂移動(dòng)到最小號(hào)磁道依次向外給予各請(qǐng)求服務(wù)cout磁盤掃描序列為:;for(i=0;im;i+) coutcidaoi=now)/若當(dāng)前磁道號(hào)小于請(qǐng)求序列中最小者,則直接由內(nèi)向外依次給予各請(qǐng)求服務(wù),此情況同最短尋道優(yōu)先cout磁盤掃描序列為:;for(i=0;im;i+) coutcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最小者且小于最大cout磁盤掃描序列為:;while(cidaokno

13、w)單向反復(fù)地從內(nèi)向外掃描 k+; l=k-1; r=k; for(j=r;jm;j+) coutcidaoj; 輸出從當(dāng)前磁道向外掃描的序列 for(j=0;jr;j+) 當(dāng)掃描完最大號(hào)磁道,磁頭直接移動(dòng)到最小號(hào)磁道,再向外掃 描未掃描的磁道 coutcidaojsum=2*cidaom-1+cidaol-now-2*cidao0;ave=(float)(sum)/(float)(m);coutendl;cout平均尋道長度:aveendl;void main()int a;int c;/菜單項(xiàng)int cidaomaxsize;int i=0,count;char str100;cout請(qǐng)輸

14、入磁道序列(0結(jié)束):str;/對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新輸入!str;/對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新車入!endl;elsecidaoi=trans(str,a);i+;count=i-1;要訪問的磁道數(shù)cout你輸入的磁道序列為:;for(i=0;icount;i+)coutcidaoi;輸出磁道序列coutendl;while(1)coutendl;cout*endl;cout系統(tǒng)菜單endl;cout*endl;cout*1.先來先服務(wù)*en

15、dl;cout*endl;cout*2.最短尋道時(shí)間優(yōu)先*endl;cout*endl;cout*3.掃描調(diào)度*endl;cout*endl;cout*4.循環(huán)掃描*endl;cout*endl;cout*5.退出*endl;cout*endl;cout*endl;cout*endl;G:coutstr; /對(duì)輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請(qǐng)重新輸入!5)cout數(shù)據(jù)輸入錯(cuò)誤!請(qǐng)重新輸入 endl;goto G;switch(c)case 1: 使用FCFS算法FCFS(cidao,count);break;case 2: 使用SS

16、TF算法SSTF(cidao,count);break;case 3: 使用SCAN算法SCAN(cidao,count);break;case 4: 使用CSCAN算法CSCAN(cidao,count);break;3.運(yùn)行界面:二口外:Q 44 46 4 80 12 76 9保輸入的磁道序列為,20 44 40 4 80 12 76C:W i nd owssystem32DebugpkolCeice.:20 44 40道號(hào);50t 20 44 4043.14294 80 124 8R 1276?fc系統(tǒng)菜單1 .先來先服務(wù)2 .最短尋道時(shí)間優(yōu)先3 .掃描調(diào)度4 .循環(huán)掃描1為曹: .列的列度 法序前序長 理又掃尋 選盤輒皿均 請(qǐng)整思平:盤的列度 加黑長 曷篇道一 擇E掃尋 選均為號(hào)447s44? 421 02 014卡盤電列度 善哥序長 道

溫馨提示

  • 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)論