




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(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)容:對磁盤進(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í)行訪問磁盤的請求。由于磁盤訪問時(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)程提出輸入輸出請求而處于等待狀態(tài)時(shí),可用磁盤調(diào)度算法從若干個(gè)等待訪問者中選擇一個(gè)進(jìn)程,讓它訪問磁盤。2 .測試數(shù)據(jù):磁盤讀寫請求隊(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磁盤請求序列為:;for( i=0;im;
5、i+)/按先來先服務(wù)的策略輸出磁盤請求序列coutcidaoi;coutendl;coutstr;對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新輸入!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;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新輸入!endl;goto C;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)若當(dāng)前磁道號(hào)大于請求序列中最大者,則直接由外向內(nèi)依次
7、給予各請求服務(wù)cout=0;i-)coutcidaoi=now)若當(dāng)前磁道號(hào)小于請求序列中最小者,則直接由內(nèi)向外依次給予各請求服務(wù)cout磁盤掃描序列為:;for(i=0;im;i+)coutcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請求序列中最小者且小于最cout磁盤掃描序列為:;while(cidaok=0)&(rm)當(dāng)前磁道在請求序列范圍內(nèi) if(now-cidaol)=(cidaor-now)/選擇與當(dā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;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新輸入!endl;goto D;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)/若當(dāng)前磁道號(hào)大于請求序列中最大者,則直接由外向內(nèi)依次給予各請求服務(wù),此情況同最短尋道優(yōu)先cout=0;i-)coutcidaoi=now)若當(dāng)前磁道號(hào)小于請求序列中最小者,則直接由內(nèi)向外依次給予各請求服務(wù),此情況同最短尋道優(yōu)先cout磁盤掃描序列為:;for(i=0;im;i+)c
10、outcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請求序列中最小者且小于最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;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤
12、,請重新輸入! endl;goto E;elsenow=trans(str,a);輸入當(dāng)前磁道號(hào)if(cidaom-1=now)若當(dāng)前磁道號(hào)大于請求序列中最大者,則直接將移動(dòng)臂移動(dòng)到最小號(hào)磁道依次向外給予各請求服務(wù)cout磁盤掃描序列為:;for(i=0;im;i+) coutcidaoi=now)/若當(dāng)前磁道號(hào)小于請求序列中最小者,則直接由內(nèi)向外依次給予各請求服務(wù),此情況同最短尋道優(yōu)先cout磁盤掃描序列為:;for(i=0;im;i+) coutcidaoicidao0&nowcidaom-1)若當(dāng)前磁道號(hào)大于請求序列中最小者且小于最大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請輸
14、入磁道序列(0結(jié)束):str;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新輸入!str;/對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新車入!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; /對輸入數(shù)據(jù)進(jìn)行有效性判斷a=decide(str);if(a=0)cout輸入數(shù)據(jù)的類型錯(cuò)誤,請重新輸入!5)cout數(shù)據(jù)輸入錯(cuò)誤!請重新輸入 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為曹: .列的列度 法序前序長 理又掃尋 選盤輒皿均 請整思平:盤的列度 加黑長 曷篇道一 擇E掃尋 選均為號(hào)447s44? 421 02 014卡盤電列度 善哥序長 道
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨床研究服務(wù)項(xiàng)目合作計(jì)劃書
- 2025年金融租賃服務(wù)合作協(xié)議書
- 2025年小麥免耕播種機(jī)項(xiàng)目發(fā)展計(jì)劃
- 供暖知識(shí)培訓(xùn)學(xué)習(xí)課件
- 2025年電動(dòng)汽車充電樁項(xiàng)目合作計(jì)劃書
- 2025至2030中國VOCs治理行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025年水性色漿項(xiàng)目建議書
- 2025年力學(xué)計(jì)量標(biāo)準(zhǔn)器具項(xiàng)目發(fā)展計(jì)劃
- 2025至2030中國5氨基水楊酸行業(yè)項(xiàng)目調(diào)研及市場前景預(yù)測評(píng)估報(bào)告
- 2025至2030中國血液感染檢測行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 農(nóng)作物耕作栽培(甘蔗)-新植蔗栽培技術(shù)
- 大方縣貓場鎮(zhèn)硫磺礦渣綜合治理工程環(huán)評(píng)報(bào)告
- Sony MD隨身聽的歷史
- 北師大版九年級(jí)數(shù)學(xué)上九年級(jí)第一二單元綜合數(shù)學(xué)試題
- Foxconn連接器設(shè)計(jì)手冊
- 學(xué)習(xí)解讀《醫(yī)療保障基金使用監(jiān)督管理?xiàng)l例》PPT課件(帶內(nèi)容)
- GB/T 13384-2008機(jī)電產(chǎn)品包裝通用技術(shù)條件
- GB 11121-2006汽油機(jī)油
- 沙爾夫柴油機(jī)齒軌卡軌車課件
- 房產(chǎn)無抵押情況說明及承諾書
- DB32-T 2860-2015散裝液體化學(xué)品槽車裝卸安全作業(yè)規(guī)范-(高清現(xiàn)行)
評(píng)論
0/150
提交評(píng)論