版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1頁共2頁實(shí)驗(yàn)報(bào)告學(xué)院(系)名稱:計(jì)算機(jī)與通信工程學(xué)院姓名********學(xué)號*********專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級2009級3班實(shí)驗(yàn)項(xiàng)目實(shí)驗(yàn)二:磁盤調(diào)度算法的實(shí)現(xiàn)課程名稱操作系統(tǒng)課程代碼0668036實(shí)驗(yàn)時(shí)間2011年12月8日第3、4節(jié)2011年12月12日第7、8節(jié)2011年12月15日第3、4節(jié)2011年12月19日第7、8節(jié)實(shí)驗(yàn)地點(diǎn)軟件實(shí)驗(yàn)室7-219軟件實(shí)驗(yàn)室7-219軟件實(shí)驗(yàn)室7-219軟件實(shí)驗(yàn)室7-215批改意見成績教師簽字:實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)是模擬操作系統(tǒng)的磁盤尋道方式,運(yùn)用磁盤訪問順序的不同來設(shè)計(jì)磁盤的調(diào)度算法。實(shí)現(xiàn)的磁盤調(diào)度算法有FCFS,SSTF,SCAN,CSCAN和NStepSCAN算法。設(shè)定開始磁道號尋道范圍,依據(jù)起始掃描磁道號和最大磁道號數(shù),隨機(jī)產(chǎn)生要進(jìn)行尋道的磁道號序列。選擇磁盤調(diào)度算法,顯示該算法的磁道訪問順序,計(jì)算出移動(dòng)的磁道總數(shù)和平均尋道總數(shù)。按算法的尋道效率進(jìn)行排序,并對各算法的性能進(jìn)行分析比較。實(shí)驗(yàn)要求:1.詳細(xì)描述實(shí)驗(yàn)設(shè)計(jì)思想、程序結(jié)構(gòu)及各模塊設(shè)計(jì)思路;詳細(xì)描述程序所用數(shù)據(jù)結(jié)構(gòu)及算法;明確給出測試用例和實(shí)驗(yàn)結(jié)果;為增加程序可讀性,在程序中進(jìn)行適當(dāng)注釋說明;認(rèn)真進(jìn)行實(shí)驗(yàn)總結(jié),包括:設(shè)計(jì)中遇到的問題、解決方法與收獲等;實(shí)驗(yàn)報(bào)告撰寫要求結(jié)構(gòu)清晰、描述準(zhǔn)確邏輯性強(qiáng);實(shí)驗(yàn)過程中,同學(xué)之間可以進(jìn)行討論互相提高,但絕對禁止抄襲。【實(shí)驗(yàn)過程記錄(源程序、測試用例、測試結(jié)果及心得體會(huì)等)】usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceOS_3{classdisk{publicdisk(int[]diskList){this.diskList=diskList;}privatestaticvoidBubbleSortFunction1(int[]array)//冒泡從大到小{try{intlength=array.Length;inttemp;boolhasExchangeAction;//記錄此次大循環(huán)中相鄰的兩個(gè)數(shù)是否發(fā)生過互換(如果沒有互換,則數(shù)組已經(jīng)是有序的)for(inti=0;i<length-1;i++)//數(shù)組有N個(gè)數(shù),那么用N-1次大循環(huán)就可以排完{hasExchangeAction=false;//每次大循環(huán)都假設(shè)數(shù)組有序for(intj=0;j<length-i-1;j++)//從數(shù)組下標(biāo)0處開始遍歷,(length-i-1是刨除已經(jīng)排好的大數(shù)){if(array[j]<array[j+1])//相鄰兩個(gè)數(shù)進(jìn)行比較,如果前面的數(shù)小于后面的數(shù),則將這相鄰的兩個(gè)數(shù)進(jìn)行互換{temp=array[j];array[j]=array[j+1];array[j+1]=temp;hasExchangeAction=true;//發(fā)生過互換}}if(!hasExchangeAction)//如果沒有發(fā)生過互換,則數(shù)組已經(jīng)是有序的了,跳出循環(huán){break;}}}catch(Exceptionex){}}privatestaticvoidBubbleSortFunction2(int[]array)//冒泡從小到大{try{intlength=array.Length;inttemp;boolhasExchangeAction;//記錄此次大循環(huán)中相鄰的兩個(gè)數(shù)是否發(fā)生過互換(如果沒有互換,則數(shù)組已經(jīng)是有序的)for(inti=0;i<length-1;i++)//數(shù)組有N個(gè)數(shù),那么用N-1次大循環(huán)就可以排完{hasExchangeAction=false;//每次大循環(huán)都假設(shè)數(shù)組有序for(intj=0;j<length-i-1;j++)//從數(shù)組下標(biāo)0處開始遍歷,(length-i-1是刨除已經(jīng)排好的大數(shù)){if(array[j]>array[j+1])//相鄰兩個(gè)數(shù)進(jìn)行比較,如果前面的數(shù)大于后面的數(shù),則將這相鄰的兩個(gè)數(shù)進(jìn)行互換{temp=array[j];array[j]=array[j+1];array[j+1]=temp;hasExchangeAction=true;//發(fā)生過互換}}if(!hasExchangeAction)//如果沒有發(fā)生過互換,則數(shù)組已經(jīng)是有序的了,跳出循環(huán){break;}}}catch(Exceptionex){}}voidprint(int[]printList,stringway)//用于輸出尋道過程的方法{Console.WriteLine("\n");inttotal=0;Console.WriteLine("正在使用"+way+"計(jì)算\n");printList[0]=100;Console.WriteLine("首先訪問的磁道號為{0}\n",printList[0]);for(inti=1;i<10;i++){intmoveNum=Math.Abs(printList[i]-printList[i-1]);total+=moveNum;Console.WriteLine("被繼續(xù)訪問的磁道號為{0:000}移動(dòng)距離為{1:000}\n",printList[i],moveNum);}Console.WriteLine("移動(dòng)的磁道總數(shù)為{0}平均尋道數(shù)為{1}\n",total,(float)total/10);Console.WriteLine("\n");}publicvoidFCFS()//先來先服務(wù)算法{print(diskList,"FCFS(先來先服務(wù))算法");}intfindShortest(intposition,int[]tempList)//找到尋道時(shí)間最短的磁道號,position為磁道位置{//tempList為采用SSTF得到的臨時(shí)列表intnum=int.MaxValue;intminPosition=0;for(inti=position;i<10;i++){inttemp=Math.Abs(tempList[i]-tempList[position-1]);if(temp<num){num=temp;minPosition=i;}}returnminPosition;}publicvoidSSTF()//最短尋道時(shí)間優(yōu)先{int[]tempList=newint[10];for(inti=0;i<10;i++)//傳值{tempList[i]=diskList[i];}for(inti=1;i<10;i++){intminPosition=findShortest(i,tempList);if(minPosition!=i){inttemp=tempList[minPosition];tempList[minPosition]=tempList[i];tempList[i]=temp;}}print(tempList,"SSTF(最短尋道時(shí)間優(yōu)先)算法");}publicvoidSCAN()//SCAN算法{int[]tempList=newint[10];inta=0,b=0;for(inti=0;i<10;i++){if(diskList[i]>=100)a++;if(diskList[i]<100)b++;}int[]uph=newint[a];int[]downh=newint[b];for(intj=0,i=0,t=0;j<10;j++){if(diskList[j]>=100){uph[i]=diskList[j];i++;}if(diskList[j]<100){downh[t]=diskList[j];t++;}}BubbleSortFunction2(uph);BubbleSortFunction1(downh);uph.CopyTo(tempList,0);//將第二數(shù)組的值接著第一個(gè)數(shù)組最后1位放downh.CopyTo(tempList,uph.Length);print(tempList,"SCAN(掃描)算法");}publicvoidcicleSCAN()//循環(huán)SCAN算法{int[]tempList=newint[10];inta=0,b=0;for(inti=0;i<10;i++){if(diskList[i]>=100)a++;if(diskList[i]<100)b++;}int[]uph=newint[a];int[]downh=newint[b];for(intj=0,i=0,t=0;j<10;j++){if(diskList[j]>=100){uph[i]=diskList[j];i++;}if(diskList[j]<100){downh[t]=diskList[j];t++;}}BubbleSortFunction2(uph);BubbleSortFunction2(downh);uph.CopyTo(tempList,0);//將第二數(shù)組的值接著第一個(gè)數(shù)組最后1位放downh.CopyTo(tempList,uph.Length);print(tempList,"CSCAN(循環(huán)掃描)算法");}/////////////////////////////////////////////////////////////////<summary>publicvoidNSCAN()//NSCAN算法{Console.Write("輸入N步個(gè)數(shù):");intv=Int32.Parse(Console.ReadLine());switch(v){case10:{int[]tempList=newint[10];inta=0,b=0;for(inti=0;i<10;i++){if(diskList[i]>=100)a++;if(diskList[i]<100)b++;}int[]uph=newint[a];int[]downh=newint[b];for(intj=0,i=0,t=0;j<10;j++){if(diskList[j]>=100){uph[i]=diskList[j];i++;}if(diskList[j]<100){downh[t]=diskList[j];t++;}}BubbleSortFunction2(uph);BubbleSortFunction2(downh);uph.CopyTo(tempList,0);//將第二數(shù)組的值接著第一個(gè)數(shù)組最后1位放downh.CopyTo(tempList,uph.Length);print(tempList,"NSCAN(N步掃描)算法");} break;case1:{int[]tempList=newint[10];inta=0,b=0;for(inti=0;i<10;i++){if(diskList[i]>=100)a++;if(diskList[i]<100)b++;}int[]uph=newint[a];int[]downh=newint[b];for(intj=0,i=0,t=0;j<10;j++){if(diskList[j]>=100){uph[i]=diskList[j];i++;}if(diskList[j]<100){downh[t]=diskList[j];t++;}}BubbleSortFunction2(uph);BubbleSortFunction2(downh);uph.CopyTo(tempList,0);//將第二數(shù)組的值接著第一個(gè)數(shù)組最后1位放downh.CopyTo(tempList,uph.Length);print(tempList,"NSCAN(N步掃描)算法");}break;case5:{int[]tempList=newint[10];inta=0,b=0,c=0,d=0;for(inti=0;i<10;i++){if(diskList[i]>=150)a++;if(diskList[i]<150&&diskList[i]>=100)b++;if(diskList[i]<100&&diskList[i]>=50)c++;if(diskList[i]<50)d++;}int[]uph1=newint[a];int[]uph2=newint[b];int[]downh1=newint[c];int[]downh2=newint[d];for(intj=0,a1=0,a2=0,a3=0,a4=0;j<10;j++){if(diskList[j]>=150){uph1[a1]=diskList[j];a1++;}if(diskList[j]<150&&diskList[j]>=100){uph2[a2]=diskList[j];a2++;}if(diskList[j]<100&&diskList[j]>=50){downh1[a3]=diskList[j];a3++;}if(diskList[j]<50){downh2[a4]=diskList[j];a4++;}}BubbleSortFunction2(uph1);BubbleSortFunction2(uph2);BubbleSortFunction2(downh1);
溫馨提示
- 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年度木材裝卸運(yùn)輸與木材運(yùn)輸安全管理合同4篇
- 開展化妝品不良反應(yīng)監(jiān)測課件
- 二零二五年度船舶光租賃與船舶租賃市場拓展合同2篇
- 2025年度出納人員職責(zé)抵押擔(dān)保及薪酬保障合同4篇
- 二零二五年度租賃房產(chǎn)維修保養(yǎng)服務(wù)合同4篇
- 2024版環(huán)保型材料研發(fā)生產(chǎn)合同
- 二零二五年度錄音數(shù)據(jù)安全合同錄音數(shù)據(jù)安全保護(hù)協(xié)議3篇
- 2025年度綜合交通樞紐建設(shè)項(xiàng)目承包商安全生產(chǎn)責(zé)任協(xié)議4篇
- 二零二五版教育培訓(xùn)機(jī)構(gòu)合作合同6篇
- 二零二五年度跨境投資股權(quán)代持與稅務(wù)籌劃合同3篇
- 機(jī)械點(diǎn)檢員職業(yè)技能知識考試題庫與答案(900題)
- 成熙高級英語聽力腳本
- 北京語言大學(xué)保衛(wèi)處管理崗位工作人員招考聘用【共500題附答案解析】模擬試卷
- 肺癌的診治指南課件
- 人教版七年級下冊數(shù)學(xué)全冊完整版課件
- 商場裝修改造施工組織設(shè)計(jì)
- (中職)Dreamweaver-CC網(wǎng)頁設(shè)計(jì)與制作(3版)電子課件(完整版)
- 統(tǒng)編版一年級語文上冊 第5單元教材解讀 PPT
- 中班科學(xué)《會(huì)說話的顏色》活動(dòng)設(shè)計(jì)
- 加減乘除混合運(yùn)算600題直接打印
- ASCO7000系列GROUP5控制盤使用手冊
評論
0/150
提交評論