




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
word格式-可編輯-感謝下載支持《操作系統》實驗報告【實驗題目】:磁盤調度算法【實驗目的】通過這次實驗,加深對磁盤調度算法的理解,進一步掌握先來先服務FCFS,最短尋道時間優先SSTF,SCAN和循環SCAN算法的實現方法。【實驗內容】問題描述:設計程序模擬先來先服務FCFS,最短尋道時間優先SSTF,SCAN和循環SCAN算法的工作過程。假設有n個磁道號所組成的磁道訪問序列,給定開始磁道號m和磁頭移動的方向(正向或者反向),分別利用不同的磁盤調度算法訪問磁道序列,給出每一次訪問的磁頭移動距離,計算每種算法的平均尋道長度。程序要求如下:1)利用先來先服務FCFS,最短尋道時間優先SSTF,SCAN和循環SCAN算法模擬磁道訪問過程。2)模擬四種算法的磁道訪問過程,給出每個磁道訪問的磁頭移動距離。3)輸入:磁道個數n和磁道訪問序列,開始磁道號m和磁頭移動方向(對SCAN和循環SCAN算法有效),算法選擇1-FCFS,2-SSTF,3-SCAN,4-循環SCAN。4)輸出:每種算法的平均尋道長度。實驗要求:1)上機前認真復習磁盤調度算法,熟悉FCFS,SSTF,SCAN和循環SCAN算法的過程;word格式-可編輯-感謝下載支持2)上機時獨立編程、調試程序;3)根據具體實驗要求,完成好實驗報告(包括實驗的目的、內容、要求源程序、實例運行結果截圖)。實驗代碼:#include<iostream>#include<iomanip>#include<math.h>usingnamespacestd;constintMaxNumber=100;intTrackOrder[MaxNumber];intMoveDistance[MaxNumber];//移動距離intFindOrder[MaxNumber];〃尋好序列doubleAverageDistance;//平均尋道長度booldirection;//方向true時為向外,false為向里intBeginNum;〃開始磁道號intM=500;〃磁道數intN;//提出磁盤I/O申請的進程數intSortOrder[MaxNumber];//排序后的序列boolFinished[MaxNumber];voidInith(){coutvv"請輸入提出磁盤I/O申請的進程數:";cin>>N;coutvv"請依次輸入要訪問的磁道號:";for(inti=0;i<N;i++)cin>>TrackOrder[i];for(intj=0;jvN;j++)MoveDistance[j]=0;coutvv"請輸入開始磁道號:";cin>>BeginNum;for(intk=0;kvN;k++)Finished[k]=false;for(intl=0;lvN;l++)SortOrder[l]=TrackOrder[l];}//=====================排序函數,將各進程申請的磁道按從小到大排列=================voidSort(){inttemp;for(inti=N-1;i>=0;i--)wordword格式-可編輯-感謝下載支持}}for(intj=0;j<i;j++){if(SortOrder[j]>SortOrder[j+1]){temp=SortOrder[j];SortOrder[j]=SortOrder[j+1];SortOrder[j+1]=temp;}}}〃=========fcfs,先來先服務=====================voidFCFS(){inttemp;temp=BeginNum;for(inti=0;i<N;i++){MoveDistance[i]=abs(TrackOrder[i]-temp);temp=TrackOrder[i];FindOrder[i]=TrackOrder[i];}}〃========SSTF最短尋道法=============================voidssTF(){inttemp,n;intA=M;temp=BeginNum;for(inti=0;i<N;i++){for(intj=0;j<N;j++){if(abs(TrackOrder[j]-temp)<A&&Finished[j]==false){A=abs(TrackOrder[j]-temp);n=j;}elsecontinue;}Finished[n]=true;MoveDistance[i]=A;temp=TrackOrder[n];A=M;FindOrder[i]=TrackOrder[n];wordword格式-可編輯-感謝下載支持〃=====================SCAN,掃描算法==========================voidSCAN(){intm,n,temp;temp=BeginNum;Sort();coutvv"請選擇開始方向:1--向外;0---向里:”;cin>>m;if(m==1)direction=true;elseif(m==0)direction=false;elsecoutvv"輸入錯誤!";for(inti=0;i<N;i++){if(SortOrder[i]vBeginNum)continue;else{n=i;break;}}if(direction==true){for(inti=n;ivN;i++){MoveDistance[i-n]=abs(SortOrder[i]-temp);temp=SortOrder[i];FindOrder[i-n]=SortOrder[i];}for(intj=n-1;j>=0;j--){MoveDistance[N-1-j]=abs(SortOrder[j]-temp);temp=SortOrder[j];FindOrder[N-1-j]=SortOrder[j];}}else{for(inti=n-1;i>=0;i--){MoveDistance[N-i-4]=abs(SortOrder[i]-temp);temp=SortOrder[i];FindOrder[N-i-4]=SortOrder[i];}for(intj=n;j<N;j++){MoveDistance[j]=abs(SortOrder[j]-temp);temp=TrackOrder[j];FindOrder[j]=SortOrder[j];}}}〃=================CSCAN循環掃描算法=======================voidCSCAN(){intm,n,temp;temp=BeginNum;Sort();coutvv"請選擇開始方向:1--向外;0---向里:”;cin>>m;if(m==1)direction=true;elseif(m==0)direction=false;elsecoutvv"輸入錯誤!";for(inti=0;i<N;i++){if(SortOrder[i]vBeginNum)continue;else{n=i;break;}}if(direction==true){for(inti=n;ivN;i++){MoveDistance[i-n]=abs(SortOrder[i]-temp);temp=SortOrder[i];FindOrder[i-n]=SortOrder[i];}for(intj=0;jvn;j++)MoveDistance[N-n+j]=abs(SortOrder[j]-temp);temp=SortOrder[j];FindOrder[N-n+j]=SortOrder[j];}}else{for(inti=n-1;i>=0;i--){MoveDistance[n-1-i]=abs(SortOrder[i]-temp);temp=SortOrder[i];FindOrder[n-1-i]=SortOrder[i];}for(intj=N-1;j>=n;j--){MoveDistance[N-j+n-1]=abs(SortOrder[j]-temp);temp=SortOrder[j];FindOrder[N-j+n-1]=SortOrder[j];}}}//========計算平均尋道時間==============voidCount(){intTotal=0;for(inti=0;i<N;i++){Total+=MoveDistance[i];}AverageDistance=((double)Total)/((double)N);}voidShow(){coutvvsetw(20)vv"被訪問的下一個磁道號"vvsetw(20)vv,移動距離(磁道數)"vvendl;for(inti=0;i<N;i++){cout<<setw(15)<<FindOrder[i]<<setw(15)<<MoveDistance[i]<<endl;}coutvvsetw(20)vv"平均尋道長度:"vvAverageDistancevvendl;cout<<endl;}intmain(){
inty=l;ints;Inith();while(y){coutvv"請選擇尋道方式:1--FCFS;2--SSTF;3--SCAN;4--CSCSN:"cin?s;switch(s){case1:FCFS();Count();Show();break;case2:SSTF();Count();Show();break;case3:SCAN();Count();Show();break;case4:CSCAN();Count();Show();break;}coutvv"是否繼續選擇尋道算法?1--是;0--否:";intp;cin?p;y=p;}exit;return0;}結果截圖:°:5558391B99lMkJ:2—SSTF:3—SCfiM移動距離殲樹〉451GQ15938:4—CSCSN:1641俞入靈訪問的磁道十冶磁理號:豐旨P式’1—FCFS右下一八磁道號553916?eIBS1SR選道卜3916?eIBS1SR選道卜
否選iF3231F.1291321324112184丄4丘半均尋謹長彥:55.3333辛亙算社I-是0-否;1式:1-一FCBK;2一-SSJF;3-一SCHI4八礙佰M移動也離96135855393618
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房源核查方案(3篇)
- 財務規劃制作方案(3篇)
- 人防門裝修方案(3篇)
- 醫療服務準入管理制度
- 學校物資調配管理制度
- 合營公司財務管理制度
- 醫療安全應急管理制度
- 養生調理中心管理制度
- 醫療配套基建方案(3篇)
- DB62T 4363-2021 沙蓬栽培技術規程
- 運維服務保密協議書
- 《學前兒童語言教育》課件-第2章 學前兒童語言的獲得與發展
- 中原鄉鎮櫻桃溝鄉村振興景觀概念性規劃方案【鄉村文旅】【鄉村振興】【鄉村景觀規劃】
- 【9化 二?!亢颖毙吓_邯鄲2025年5月中考二模九年級化學試卷
- 2025-2030年中國夜視攝像機行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025年中考英語高頻核心詞匯背記手冊
- 危大工程巡視檢查記錄表 (樣表)附危大工程安全監管及檢查要點
- 外墻鋁板工程協議書
- 四川省2025屆高三第二次聯合測評-生物試卷+答案
- 2024年江蘇省淮安市中考英語真題(原卷版)
- 廣東省廣州市黃埔區2021-2022學年七年級下學期期末英語試題(含答案)
評論
0/150
提交評論