




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
-.z.課程設(shè)計(jì)報(bào)告課程名稱:操作系統(tǒng)課程設(shè)計(jì)課題名稱:磁盤調(diào)度算法學(xué)院:軟件學(xué)院班級(jí):學(xué)生**:**:指導(dǎo)教師:磁盤調(diào)度算法一、系統(tǒng)需求分析磁盤存儲(chǔ)器不僅容量大,存取速度快,而且可以實(shí)現(xiàn)隨機(jī)存取,是當(dāng)前存放大量程序和數(shù)據(jù)的理想設(shè)備。所以在現(xiàn)代計(jì)算機(jī)中都配備了磁盤存儲(chǔ)器,以他為主存放文件,這樣對(duì)文件的讀、寫操作都涉及到了對(duì)磁盤存儲(chǔ)器的訪問。磁盤I/O速度的高低和磁盤系統(tǒng)的可靠性,都直接影響到系統(tǒng)的性能。因此改善磁盤系統(tǒng)的性能成為現(xiàn)代操作系統(tǒng)的重要任務(wù)之一。磁盤性能有數(shù)據(jù)的組織、磁盤的類型和訪問時(shí)間等??梢酝ㄟ^選擇好的磁盤調(diào)度算法,以減少磁盤的尋道時(shí)間。為了減少對(duì)文件的訪問時(shí)間,應(yīng)采用一種最佳的磁盤調(diào)度算法,以使各進(jìn)程對(duì)磁盤的平均訪問時(shí)間最少。由于在訪問磁盤的時(shí)間中主要是尋道時(shí)間,因此,磁盤調(diào)度的目標(biāo)是使磁盤的尋道時(shí)間最少。所以本課程設(shè)計(jì)對(duì)各個(gè)算法進(jìn)行模擬,進(jìn)而比較分析了解。二、實(shí)驗(yàn)內(nèi)容和目的2.1.實(shí)驗(yàn)內(nèi)容模擬電梯調(diào)度算法,實(shí)現(xiàn)對(duì)磁盤的驅(qū)動(dòng)調(diào)度。設(shè)計(jì)要求:編程序?qū)崿F(xiàn)下述磁盤調(diào)度算法,并求出每種算法的平均尋道長度;要求設(shè)計(jì)主界面可以靈活選擇*算法,且以下算法都要實(shí)現(xiàn)先來先服務(wù)算法(FCFS)2、最短尋道時(shí)間優(yōu)先算法(SSTF)3、掃描算法(SCAN)4、循環(huán)掃描算法(CSCAN)2.2.實(shí)驗(yàn)原理模擬電梯調(diào)度算法,對(duì)磁盤調(diào)度。磁盤是要供多個(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),可用電梯調(diào)度算法從若干個(gè)等待訪問者中選擇一個(gè)進(jìn)程,讓它訪問磁盤。當(dāng)存取臂僅需移到一個(gè)方向最遠(yuǎn)的所請(qǐng)求的柱面后,如果沒有訪問請(qǐng)求了,存取臂就改變方向。三、總體設(shè)計(jì)及分類簡介3.1算法介紹磁盤調(diào)度中常用的有四種算法,功能分別如下:先來先服務(wù)(FCFS)算法。即先來的請(qǐng)求先被響應(yīng)。FCFS策略看起來似乎是相當(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)先(SSTF)算法。要求訪問的磁道,與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短。掃描調(diào)度(SCAN)算法。該算法不僅考慮到欲訪問的磁道與當(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)像。4.循環(huán)掃描(C-SCAN)算法。當(dāng)磁頭剛從里向外移動(dòng)而越過了*一磁道時(shí),恰好又有一進(jìn)程請(qǐng)求訪問此磁道,這時(shí),該里程就必須等待,為了減少這種延遲,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)掃描的全過程。3.2詳細(xì)設(shè)計(jì)功能模塊設(shè)計(jì)(1)先來先服務(wù)算法(FCFS)3.3環(huán)境要求軟件要求:MicrosoftVisualStdio程序運(yùn)行測試首先輸入九個(gè)磁道名稱以及要訪問的磁道號(hào)和當(dāng)前磁道號(hào)選擇要執(zhí)行的算法:2.先來先服務(wù)算法(FCFS)3.最短尋道時(shí)間優(yōu)先算法(SSTF)繼續(xù)調(diào)度其他算法,選擇是1,選擇掃描算法(SCAN)2掃描算法(SCAN)循環(huán)掃描算法(CSCAN)附:代碼*include"stdaf*.h"*include<iostream>*include<math.h>*defineprocess_Num9usingnamespacestd;structTrack{intcurrent_Tracknum=0;//當(dāng)前磁道號(hào)intne*t_Track=0;//被訪問的下一個(gè)磁道號(hào)intmove_Distance=0;//移動(dòng)距離charprocess_Name;};Tracktrack[process_Num];floattrack_aveLength=0;//平均尋道長度intnow_Tracknum=0;//最初開始磁道號(hào)intselect_num=0;intcount_Num=0;//調(diào)度算法次數(shù)voidScanf_data(){ printf("請(qǐng)輸入要訪問磁盤的進(jìn)程:\n");for(inti=0;i<process_Num;i++){cin>>track[i].process_Name;} printf("請(qǐng)輸入當(dāng)前的磁道號(hào):"); scanf_s("%d",&now_Tracknum); printf("請(qǐng)輸入進(jìn)程要訪問的磁道號(hào):\n");for(inti=0;i<process_Num;i++){scanf_s("%d",&track[i].ne*t_Track);}}voidSelect(){ printf("請(qǐng)選擇磁盤調(diào)度算法:\n"); printf("1.先來先服務(wù)算法(FCFS)\n"); printf("2.最短尋道時(shí)間優(yōu)先算法(SSTF)\n"); printf("3.掃描算法(SCAN)\n"); printf("4.循環(huán)算法(CSCAN)\n"); scanf_s("%d",&select_num);}voidPrint(){//打印訪問磁盤順序printf("進(jìn)程訪問磁盤的先后順序:");for(inti=0;i<process_Num;i++){printf("%c",track[i].process_Name);} printf("\n");for(inti=0;i<process_Num;i++){printf("%d,",track[i].ne*t_Track);} printf("\n");}voidPrint_Data(){ printf("打印表格\n"); printf("\t\t從%d*磁道開始\n",now_Tracknum); printf("\t磁道名\t磁道號(hào)\t移動(dòng)距離\n");for(inti=0;i<process_Num;i++){ printf("\t%c\t%d\t%d\n",track[i].process_Name,track[i].ne*t_Track,track[i].move_Distance); } printf("\n"); printf("\t平均尋道長度為:%.2f\n",track_aveLength);printf("\n");}voidCount_data(){intnownum=0;//當(dāng)前計(jì)算次數(shù)for(inti=0;i<process_Num;i++){if(nownum==0){ track[i].move_Distance=abs(now_Tracknum-track[i].ne*t_Track); track[i].current_Tracknum=track[i].ne*t_Track; nownum++; }else{track[i].move_Distance=abs(track[i].ne*t_Track-track[i-1].current_Tracknum); track[i].current_Tracknum=track[i].ne*t_Track; }}intsum=0;//計(jì)算平均尋道長度時(shí)需要的總和printf("每次磁頭移動(dòng)距離為:");for(inti=0;i<process_Num;i++){// printf("%d,",track[i].move_Distance);cout<<track[i].move_Distance<<""; }for(inti=0;i<process_Num;i++){ sum=sum+track[i].move_Distance; } printf("\n"); track_aveLength=(float)sum/process_Num; printf("平均尋道長度為:%.2f,",track_aveLength);printf("\n");}voidFCFS(){ count_Num++; printf("按進(jìn)程提出請(qǐng)求的先后次序進(jìn)行排隊(duì)\n");Print(); Count_data();printf("\n"); Print_Data();}voidSSTF(){ count_Num++;intnownum=0;//當(dāng)前計(jì)算次數(shù)int*[10];int*temp=0;inttempint;//冒泡排序時(shí)需要的臨時(shí)int型變量(對(duì)進(jìn)程訪問磁道號(hào)進(jìn)行排序)inttempchar;//冒泡排序時(shí)需要的臨時(shí)char型變量(對(duì)進(jìn)程名進(jìn)行排序)printf("按進(jìn)程訪問磁道與當(dāng)前磁頭所在的磁道距離進(jìn)行排隊(duì)\n");for(inti=0;i<process_Num;i++){*[i]=now_Tracknum-track[i].ne*t_Track;}for(inti=0;i<process_Num-1;i++){for(intj=0;j<process_Num-1-i;j++){if(((*[j]>0)&&(*[j+1]>0)&&(*[j]>*[j+1]))||(*[j]<0&&*[j+1]>0)){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j+1].ne*t_Track=tempint; tempchar=track[j].process_Name; track[j].process_Name=track[j+1].process_Name; track[j+1].process_Name=tempchar; }if(*[j]<0&&*[j+1]<0){int*1=abs(*[j]);int*2=abs(*[j+1]);if(*1>*2){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j+1].ne*t_Track=tempint; tempchar=track[j].process_Name; track[j].process_Name=track[j+1].process_Name; track[j+1].process_Name=tempchar; }}elsecontinue;}} Print();Count_data();printf("\n");Print_Data();}voidSCAN(){ count_Num++;intnownum=0;//當(dāng)前計(jì)算次數(shù)int*[10];int*temp=0;inttempint;//冒泡排序時(shí)需要的臨時(shí)int型變量(對(duì)進(jìn)程訪問磁道號(hào)進(jìn)行排序)inttempchar;//冒泡排序時(shí)需要的臨時(shí)char型變量(對(duì)進(jìn)程名進(jìn)行排序)printf("SCAN算法按磁頭當(dāng)前的移動(dòng)方向和進(jìn)程訪問磁道與當(dāng)前磁頭所在的磁道距離進(jìn)行排隊(duì)\n");for(inti=0;i<process_Num;i++){*[i]=now_Tracknum-track[i].ne*t_Track;}for(inti=0;i<process_Num-1;i++){for(intj=0;j<process_Num-1-i;j++){if(((*[j]>0)&&(*[j+1]>0)&&(*[j]>*[j+1]))||(*[j]>0&&*[j+1]<0)){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j+1].ne*t_Track=tempint; tempchar=track[j].process_Name; track[j].process_Name=track[j+1].process_Name; track[j+1].process_Name=tempchar; }if(*[j]<0&&*[j+1]<0){int*1=abs(*[j]);int*2=abs(*[j+1]);if(*1>*2){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j+1].ne*t_Track=tempint; tempchar=track[j].process_Name; track[j].process_Name=track[j+1].process_Name; track[j+1].process_Name=tempchar; }}elsecontinue; } } Print(); Count_data();printf("\n");Print_Data();}voidCSCAN(){ count_Num++;intnownum=0;//當(dāng)前計(jì)算次數(shù)int*[10];int*temp=0;inttempint;//冒泡排序時(shí)需要的臨時(shí)int型變量(對(duì)進(jìn)程訪問磁道號(hào)進(jìn)行排序)inttempchar;//冒泡排序時(shí)需要的臨時(shí)char型變量(對(duì)進(jìn)程名進(jìn)行排序)printf("SCAN算法按磁頭當(dāng)前的移動(dòng)方向和進(jìn)程訪問磁道與當(dāng)前磁頭所在的磁道距離進(jìn)行排隊(duì)\n");for(inti=0;i<process_Num;i++){*[i]=now_Tracknum-track[i].ne*t_Track;}for(inti=0;i<process_Num-1;i++){for(intj=0;j<process_Num-1-i;j++){if(((*[j]>0)&&(*[j+1]>0)&&(*[j]<*[j+1]))||(*[j]>0&&*[j+1]<0)){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j+1].ne*t_Track=tempint; tempchar=track[j].process_Name; track[j].process_Name=track[j+1].process_Name; track[j+1].process_Name=tempchar; }if(*[j]<0&&*[j+1]<0){int*1=abs(*[j]);int*2=abs(*[j+1]);if(*1>*2){ *temp=*[j]; *[j]=*[j+1]; *[j+1]=*temp; tempint=track[j].ne*t_Track; track[j].ne*t_Track=track[j+1].ne*t_Track; track[j
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)實(shí)施方案 (4份)-54
- 2024年油煙凈化設(shè)備項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年河北化工醫(yī)藥職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 政治-云南省三校2025屆高三2月高考備考聯(lián)考卷(六)試題和答案
- 2025年農(nóng)村宅基地買賣合同協(xié)議書(農(nóng)村土地流轉(zhuǎn)法律保障)
- 2025年度地下車位租賃與車位租賃平臺(tái)服務(wù)合同
- 2025年度室內(nèi)裝修安全監(jiān)理服務(wù)協(xié)議
- 2025年度商鋪?zhàn)赓U稅收優(yōu)惠政策協(xié)議
- 2025年度新能源技術(shù)研發(fā)用工協(xié)議安全責(zé)任承諾書
- 2025年度制造業(yè)企業(yè)生產(chǎn)線人員招聘與培訓(xùn)合同
- 注塑車間績效考核方案
- 初中英語閱讀理解專項(xiàng)練習(xí)26篇(含答案)
- 北師大版二年級(jí)下冊(cè)數(shù)學(xué)第一單元 除法教案
- 2024年兒童托管行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 野生動(dòng)植物保護(hù)
- 陜09J01 建筑用料及做法圖集
- 核心素養(yǎng)導(dǎo)向的作業(yè)設(shè)計(jì)
- 30題工程造價(jià)崗位常見面試問題含HR問題考察點(diǎn)及參考回答
- 信息技術(shù)與學(xué)科融合教案(初中數(shù)學(xué)學(xué)科模板)
- 2021年新大象版四年級(jí)科學(xué)下冊(cè)全冊(cè)教案(附板書設(shè)計(jì)、教學(xué)反思、總結(jié)點(diǎn)評(píng))
- 城市地理學(xué)第二章城鄉(xiāng)劃分和城市地域
評(píng)論
0/150
提交評(píng)論