模擬磁盤(pán)調(diào)度算法,操作系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
模擬磁盤(pán)調(diào)度算法,操作系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
模擬磁盤(pán)調(diào)度算法,操作系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
模擬磁盤(pán)調(diào)度算法,操作系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
模擬磁盤(pán)調(diào)度算法,操作系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)用文檔某某大學(xué)課程設(shè)計(jì)報(bào)告課程名稱(chēng):操作系統(tǒng)設(shè)計(jì)題目:模擬磁盤(pán)調(diào)度算法系 別:計(jì)算機(jī)系專(zhuān) 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)組 別:學(xué)生姓名:學(xué)號(hào):起止日期:指導(dǎo)教師:目錄第一章需求分析 11.1 課程設(shè)計(jì)的簡(jiǎn)介 11.2 課程設(shè)計(jì)的目的 11.3 磁盤(pán)調(diào)度主要思'想 11.4 課程設(shè)方t內(nèi)容 2第二章概要設(shè)計(jì) 32.1 設(shè)計(jì)思想 32.2 數(shù)據(jù)Z構(gòu) 32.3 模塊調(diào)用關(guān)系圖 32.4 子模塊程序流程圖 5第三章詳細(xì)設(shè)計(jì) 63.1模塊劃分 6第四章代碼測(cè)試 94.1先來(lái)先服務(wù) 94.1最短尋道時(shí)間優(yōu)先 114.1掃描算法 12第五章心得體會(huì) 13第六章致謝 13參考文獻(xiàn) 13附源代碼 1第一章需求

2、分析1.1 課程設(shè)計(jì)的簡(jiǎn)介這是一個(gè)用VC+6.0為工具、C+包編程語(yǔ)言而實(shí)現(xiàn)模擬先來(lái)先服務(wù)算法(FCFS、最短尋道時(shí)間優(yōu)先算法(SSTF、掃描算法(SCAN的一個(gè)磁盤(pán)調(diào)度程 序。該程序設(shè)計(jì)系統(tǒng)主界面可以靈活選擇某種算法并算出磁頭移動(dòng)的總磁道數(shù)以 及平均磁道數(shù)。1.2 課程設(shè)計(jì)的目的本課程設(shè)計(jì)的目的是通過(guò)設(shè)計(jì)一個(gè)磁盤(pán)調(diào)度模擬系統(tǒng), 從而使磁盤(pán)調(diào)度算法 更加形象化,容易使人理解,使磁盤(pán)調(diào)度的特點(diǎn)更簡(jiǎn)單明了,能使使用者加深對(duì) 先來(lái)先服務(wù)算法(FCFS、最短尋道時(shí)間優(yōu)先算法(SSTF、掃描算法(SCAN等 磁盤(pán)調(diào)度算法的理解。1.3 磁盤(pán)調(diào)度主要思想設(shè)備的動(dòng)態(tài)分配算法與進(jìn)程調(diào)度相似,也是基于一定的分配

3、策略的。常用的 分配策略有先請(qǐng)求先分配、優(yōu)先級(jí)高者先分配等策略。在多道程序系統(tǒng)中,低效 率通常是由于磁盤(pán)類(lèi)旋轉(zhuǎn)設(shè)備使用不當(dāng)造成的。操作系統(tǒng)中,對(duì)磁盤(pán)的訪(fǎng)問(wèn)要求來(lái)自多方面,常常需要排隊(duì)。這時(shí),對(duì)眾多的訪(fǎng)問(wèn)要求按一定的次序響應(yīng),會(huì)直 接影響磁盤(pán)的工作效率,進(jìn)而影響系統(tǒng)的性能。訪(fǎng)問(wèn)磁盤(pán)的時(shí)間因子由3部分構(gòu) 成,它們是查找(查找磁道)時(shí)間、等待(旋轉(zhuǎn)等待扇區(qū))時(shí)間和數(shù)據(jù)傳輸時(shí)間, 其中查找時(shí)間是決定因素。因此,磁盤(pán)調(diào)度算法先考慮優(yōu)化查找策略,需要時(shí)再 優(yōu)化旋轉(zhuǎn)等待策略。平均尋道長(zhǎng)度(L)為所有磁道所需移動(dòng)距離之和除以總的所需訪(fǎng)問(wèn)的磁道 數(shù)(N),即: L=(M1+M2 +Mi+MN /N。其中Mi為所

4、需訪(fǎng)問(wèn)的磁道號(hào)所需移動(dòng)的磁道數(shù)。啟動(dòng)磁盤(pán)執(zhí)行輸入輸出操作時(shí),要把移動(dòng)臂移動(dòng)到指定的柱面,再等待指定 扇區(qū)的旋轉(zhuǎn)到磁頭位置下,然后讓指定的磁頭進(jìn)行讀寫(xiě),完成信息傳送。因此, 執(zhí)行一次輸入輸出所花的時(shí)間有:尋找時(shí)間一一磁頭在移動(dòng)臂帶動(dòng)下移動(dòng)到指定柱面所花的時(shí)間。延遲時(shí)間一一指定扇區(qū)旋轉(zhuǎn)到磁頭下所需的時(shí)間。傳送時(shí)間一一由磁頭進(jìn)程讀寫(xiě)完成信息傳送的時(shí)間。其中傳送信息所花的時(shí)間,是在硬件設(shè)計(jì)就固定的。而尋找時(shí)間和延遲時(shí)間 是與信息在磁盤(pán)上的位置有關(guān)。為了減少移動(dòng)臂進(jìn)行移動(dòng)花費(fèi)的時(shí)間,每個(gè)文件的信息不是按盤(pán)面上的磁道 順序存放滿(mǎn)一個(gè)盤(pán)面后,再放到下一個(gè)盤(pán)面上。而是按柱面存放,同一柱面上的 各磁道被放滿(mǎn)信息

5、后,再放到下一個(gè)柱面上。所以各磁盤(pán)的編號(hào)按柱面順序(從 0號(hào)柱面開(kāi)始),每個(gè)柱面按磁道順序,每個(gè)磁道又按扇區(qū)順序進(jìn)行排序。1.4 課程設(shè)計(jì)內(nèi)容系統(tǒng)主界面可以靈活選擇某種算法,算法包括:先來(lái)先服務(wù)算法( FCFS、 最短尋道時(shí)間優(yōu)先算法(SSTF、掃描算法(SCAN。并計(jì)算及比較磁頭移動(dòng)總磁 道數(shù)和平均磁道數(shù)。1.4.1、 先來(lái)先服務(wù)算法(FCFS這是一種比較簡(jiǎn)單的磁盤(pán)調(diào)度算法。 它根據(jù)進(jìn)程請(qǐng)求訪(fǎng)問(wèn)磁盤(pán)的先后次序進(jìn) 行調(diào)度。此算法的優(yōu)點(diǎn)是公平、簡(jiǎn)單,且每個(gè)進(jìn)程的請(qǐng)求都能依次得到處理,不 會(huì)出現(xiàn)某一進(jìn)程的請(qǐng)求長(zhǎng)期得不到滿(mǎn)足的情況。此算法由于未對(duì)尋道進(jìn)行優(yōu)化, 在對(duì)磁盤(pán)的訪(fǎng)問(wèn)請(qǐng)求比較多的情況下, 此

6、算法將降低設(shè)備服務(wù)的吞吐量,致使平 均尋道時(shí)間可能較長(zhǎng),但各進(jìn)程得到服務(wù)的響應(yīng)時(shí)間的變化幅度較小。1.4.2、 最短尋道時(shí)間優(yōu)先算法(SSTF)該算法選擇這樣的進(jìn)程,其要求訪(fǎng)問(wèn)的磁道與當(dāng)前磁頭所在的磁道距離最近,以使每次的尋道時(shí)間最短,該算法可以得到比較好的吞吐量, 但卻不能保證 平均尋道時(shí)間最短。其缺點(diǎn)是對(duì)用戶(hù)的服務(wù)請(qǐng)求的響應(yīng)機(jī)會(huì)不是均等的, 因而導(dǎo) 致響應(yīng)時(shí)間的變化幅度很大。在服務(wù)請(qǐng)求很多的情況下,對(duì)內(nèi)外邊緣磁道的請(qǐng)求 將會(huì)無(wú)限期的被延遲,有些請(qǐng)求的響應(yīng)時(shí)間將不可預(yù)期。1.4.3、 掃描算法(SCAN掃描算法不僅考慮到欲訪(fǎng)問(wèn)的磁道與當(dāng)前磁道的距離,更優(yōu)先考慮的是磁頭的當(dāng)前移動(dòng)方向。例如,當(dāng)

7、磁頭正在自里向外移動(dòng)時(shí),掃描算法所選擇的下一個(gè) 訪(fǎng)問(wèn)對(duì)象應(yīng)是其欲訪(fǎng)問(wèn)的磁道既在當(dāng)前磁道之外,又是距離最近的。這樣自里向外地訪(fǎng)問(wèn),直到再無(wú)更外的磁道需要訪(fǎng)問(wèn)才將磁臂換向,自外向里移動(dòng)。這時(shí), 同樣也是每次選擇這樣的進(jìn)程來(lái)調(diào)度, 即其要訪(fǎng)問(wèn)的磁道,在當(dāng)前磁道之內(nèi),從 而避免了饑餓現(xiàn)象的出現(xiàn)。由于這種算法中磁頭移動(dòng)的規(guī)律頗似電梯的運(yùn)行, 故 又稱(chēng)為電梯調(diào)度算法。此算法基本上克服了最短尋道時(shí)間優(yōu)先算法的服務(wù)集中于 中間磁道和響應(yīng)時(shí)間變化比較大的缺點(diǎn),而具有最短尋道時(shí)間優(yōu)先算法的優(yōu)點(diǎn)即 吞吐量較大,平均響應(yīng)時(shí)間較小,但由于是擺動(dòng)式的掃描方法,兩側(cè)磁道被訪(fǎng)問(wèn) 的頻率仍低于中間磁道。第二章概要設(shè)計(jì)2.1 設(shè)

8、計(jì)思想本次課程設(shè)計(jì)我們是以面向?qū)ο蟮乃枷霝橹?,利用Visual C +為工具實(shí)現(xiàn)模擬磁盤(pán)調(diào)度。程序主要是利用冒泡排序函數(shù)、FCFS函數(shù)、SSTF函數(shù)、SCAN函數(shù)、CSCAI®數(shù)實(shí)現(xiàn)函數(shù)的功能。利用菜單式的選擇界面,方便的用戶(hù)操作。最終對(duì)每一種模擬磁盤(pán)調(diào)度輸出磁頭平均移動(dòng)的磁道數(shù)以及總磁道數(shù)。2.2 數(shù)據(jù)結(jié)構(gòu)該程序主要是利用7個(gè)函數(shù)。Panduan()函數(shù):對(duì)輸入的字符進(jìn)行判斷是 否合法,zhuanhua ()函數(shù):對(duì)輸入合法的字符進(jìn)行轉(zhuǎn)化,bubble ()函數(shù):對(duì) 輸入的磁道進(jìn)行冒泡排序,F(xiàn)CFS()函數(shù),即先來(lái)先服務(wù)函數(shù),SSTF()函數(shù): 最短最短尋道時(shí)間函數(shù),SCAN()函

9、數(shù):才3描函數(shù),CSCAN)函數(shù):循環(huán)掃描 函數(shù)。各函數(shù)之間有點(diǎn)可以相互調(diào)用,共同實(shí)現(xiàn)要求。本程序主要用到的數(shù)據(jù)結(jié)構(gòu)為數(shù)組、字符串,包括對(duì)字符串的合法性判斷, 利用數(shù)組算磁頭移動(dòng)的總磁道數(shù),平均移動(dòng)磁道數(shù)。2.3 模塊調(diào)用關(guān)系圖圖2-1磁盤(pán)調(diào)度模擬系統(tǒng)2.4 子模塊程序流程圖2.4.1 先來(lái)先服務(wù)算法(FCFS流程圖:FCFS算法流程圖開(kāi)始輸入磁道號(hào)按輸入順序蔣磁道 序列輸出求平均尋道長(zhǎng)度 輸出移動(dòng)的年均磁道數(shù)2.4.2 最短尋道時(shí)間優(yōu)先算法(SSTF)流程圖SSTF算法流程圖開(kāi)始輸入磁道號(hào)調(diào)用冒泡排序函數(shù)輸出排好序的磁道 序列L輸入當(dāng)前磁道號(hào)F選擇與 當(dāng) 前磁道距離最近 的磁道進(jìn)行掃描判斷當(dāng)

10、前磁頭在序 列中的位置移動(dòng)到最?。ù螅┨?hào),改I而外(內(nèi))移動(dòng)掃描未掃描的磁道求平均尋道長(zhǎng)度求總尋道長(zhǎng)度I結(jié)束2.4.3 掃描算法(SCAN流程圖判斷當(dāng)前磁頭在序 列中的位置選擇與當(dāng)前磁道距周最近 的磁道進(jìn)行掃描移動(dòng)到最小(人)號(hào),改向夕I,(內(nèi))移動(dòng)掃描未掃描的磁道第三章詳細(xì)設(shè)計(jì)3.1 模塊劃分本系統(tǒng)劃分為四個(gè)模塊:先來(lái)先服務(wù)算法模塊int FCFS(int array口,intm)、最短尋道時(shí)間優(yōu)先算法模塊int SSTF(int array口,int m)、掃描算法模塊int SCAN(int array口,int m)3.1.1 先來(lái)先服務(wù)算法模塊:int FCFS(int array,

11、int m)輸入磁道號(hào),按先來(lái)先服務(wù)的策略輸出磁盤(pán)請(qǐng)求序列,求平均尋道長(zhǎng)度,輸出移動(dòng)平均磁道數(shù)。主要代碼:for(i=0,j=1;j<m;i+,j+)sum+=abs(arrayj-arrayi);ave=(float)(sum)/(float)(m);3.1.2 最短尋道時(shí)間優(yōu)先算法模塊:int SSTF(int array,int m)將磁道號(hào)用冒泡法從小到大排序,輸出排好序的磁道序列,輸入當(dāng)前磁道號(hào),根據(jù)前磁道在已排的序列中的位置, 動(dòng)的平均磁道數(shù)。主要代碼:for(i=0;i<m;i+) /*for(j=i+1;j<m;j+)if(arrayi>arrayj)t

12、emp=arrayi;arrayi=arrayj;arrayj=temp;if(arraym-1<=now) /*大者,則直接由外向內(nèi)依次給予各請(qǐng)求服務(wù)for(i=m-1;i>=0;i-)cout<<arrayi<<""sum=now-array0;elseif(array0>=now) /*小者,則直接由內(nèi)向外依次給予各請(qǐng)求服務(wù)while(l>=0)&&(r<m) /*選擇掃描的順序,求出平均尋道長(zhǎng)度,輸出移使用冒泡法按從小到大順序排列*/若當(dāng)前磁道號(hào)大于請(qǐng)求序列中最*/若當(dāng)前磁道號(hào)小于請(qǐng)求序列中最*/

13、當(dāng)前磁道在請(qǐng)求序列范圍內(nèi)*/if(now-arrayl)<=(arrayr-now) /*選擇與當(dāng)前磁道最近的請(qǐng)求給予服務(wù)*/cout<<arrayl<<""sum+=now-arrayl;now=arrayl;l=l-1;3.1.3 掃描算法模塊:int SCAN(int array,int m)將磁道號(hào)用冒泡法從小到大排序,輸出排好序的序列,輸入當(dāng)前磁道號(hào),選 擇移動(dòng)臂的移動(dòng)方向,根據(jù)當(dāng)前磁道在已排的序列中的位置,選擇掃描的順序, 求出平均尋道長(zhǎng)度,輸出移動(dòng)的平均磁道數(shù)。主要代碼:if(d=0) /*選擇移動(dòng)臂方向向內(nèi),則先向內(nèi)掃描*/fo

14、r(j=l;j>=0卜)cout<<arrayj<<" " /*輸出向內(nèi)掃描的序列*/for(j=r;j<m;j+) /*磁頭移動(dòng)到最小號(hào),則改變方向向外掃描未掃描的磁道*/cout<<arrayj<<" " /*輸出向外掃描的序列*/sum=now-2*array0+arraym-1;else /*選擇移動(dòng)臂方向向外,則先向外掃描*/for(j=r;j<m;j+)cout<<arrayj<<" " /*輸出向外掃描的序列*、for(j=l;j&

15、gt;=0;j-)/*磁頭移動(dòng)到最大號(hào),則改變方向向內(nèi)掃描未掃描的磁道*/cout<<arrayj<<""sum=-now-array0+2*arraym-1;ave=(float)(sum)/(float)(m);第四章測(cè)試4.1 先來(lái)先服務(wù)算法輸入磁道序列:65 78 34 23 87 100 18 26當(dāng)前磁道號(hào):80磁盤(pán)掃描序列為:65 78 34 23 87 100 18 26平均尋到長(zhǎng)度:31.25磁頭移動(dòng)總磁道數(shù):250Gstlp 13.2. ,,道:31數(shù) 為磁為 列的列密 序前序去心 求當(dāng)描道動(dòng) 一要掃覆 盤(pán)均頭 磁蓬金08 873

16、2433243S74.2 最短尋道時(shí)間優(yōu)先算法(1)當(dāng)前磁道號(hào)大于磁道序列中的最大的磁道號(hào)時(shí)輸入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 23 26 34 65 78 87 100當(dāng)前磁道號(hào):200磁盤(pán)掃描序歹U為100 87 78 65 34 26 23 18平均尋到長(zhǎng)度:22.75磁頭移動(dòng)總磁道數(shù):18210 017 88 18 37 25 66 24 43 36 S2 63 B2 798 0 712 8 25 S 071為號(hào)102.列道12數(shù)居為;道盤(pán)的列卷磁前序售心的當(dāng)描道動(dòng)后人掃砂均頭 tn(2)當(dāng)前磁道號(hào)小于磁道序列中的最小的磁道號(hào)時(shí)輸入磁

17、道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 23 26 34 65 78 87 100當(dāng)前磁道號(hào):10磁盤(pán)掃描序列為:18 23 26 34 65 78 87 100平均掃描長(zhǎng)度:11.25磁道移動(dòng)總磁道數(shù):90列道:工 序磁為工 盤(pán)的列度 磁前序長(zhǎng) 的當(dāng)描道. 后入掃一 批請(qǐng)及平62328 01 1436232 5 02 9 S - lit34 65 78 876S 78 87 100100(3)當(dāng)前磁道號(hào)大于磁道序列中的最小的磁道號(hào)且小于最大磁道號(hào)時(shí)輸入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 23 26 34

18、 65 78 87 100當(dāng)前磁道號(hào):80磁盤(pán)掃描序列為:78 87 100 65 34 26 23 18平均掃描長(zhǎng)度:13.25磁道移動(dòng)總磁道數(shù):106盤(pán)的列爵磁前印杏心的當(dāng)描道動(dòng)后入掃需均頭為號(hào)78冽道.標(biāo)為,數(shù),道:18 23;8087 100251064.3掃描算法(1)當(dāng)前磁道號(hào)大于磁道序列中的最大的磁道號(hào)時(shí)輸入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 23 26 34 65 78 87 100當(dāng)前磁道號(hào):200磁盤(pán)掃描序列為100 87 78 65 34 26 23 18平均尋到長(zhǎng)度:22.75磁頭移動(dòng)總磁道數(shù):182(2)當(dāng)前磁道號(hào)小于磁

19、道序列中的最小的磁道號(hào)時(shí)輸入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 23 26 34 65 78 87 100當(dāng)前磁道號(hào):10磁盤(pán)掃描序列為:18 23 26 34 65 78 87 100平均掃描長(zhǎng)度:11.25磁道移動(dòng)總磁道數(shù):90序后的磁盤(pán)序列為士 18 23 26 34 6s 78 87 10。輸入當(dāng)前帶磁道號(hào) 1日盤(pán)掃描序列為】18 23 26 34 65 78 87 100(3)當(dāng)前磁道號(hào)大于磁道序列中的最小的磁道號(hào)且小于最大磁道號(hào) (磁頭向外) 時(shí)輸入磁道序列:65 78 34 23 87 100 18 26排序后的磁道序列為:18 2

20、3 26 34 65 78 87 100當(dāng)前磁道號(hào):80請(qǐng)輸入當(dāng)前移動(dòng)臂的移動(dòng)的方向(1表示向外,0表示向內(nèi)):1磁盤(pán)掃描序列為:87 100 78 65 34 26 23 18平均尋到長(zhǎng)度:12.75磁道移動(dòng)總磁道數(shù):102 3移 17510 為號(hào)一872.: 列道臂:1數(shù) 匡動(dòng)為.道 一盤(pán)的移列量 榛的刖序善心 的當(dāng)當(dāng)描道動(dòng) 、E入人掃需 一均頭62328 i80動(dòng)0078向6534 65 78 87 100<1表示向外,。表示向內(nèi)3:134 26 23 18芹硬為,情 盤(pán)的列富 前序首 的當(dāng)描道動(dòng) 后入掃 一 尋列道為號(hào)87上 18;801002S231826 34?8 87 10

21、023 26 34 65 78請(qǐng)選擇算法.5Press dny key to cont inue上14必 fr_第五章心的體會(huì)通過(guò)這次的課程設(shè)計(jì)使我認(rèn)識(shí)到要將操作系統(tǒng)這門(mén)計(jì)算機(jī)專(zhuān)業(yè)的課學(xué)好不 僅僅是要把書(shū)上的基本知識(shí)學(xué)好而且還要不斷進(jìn)行實(shí)踐,將所學(xué)的跟實(shí)踐操作結(jié) 合起來(lái)才能更好地鞏固所學(xué),才能提高自己實(shí)踐能力 .通過(guò)這次的設(shè)計(jì)使我認(rèn)識(shí) 到只停留在表面理解問(wèn)題是很難使問(wèn)題得到很好的解決的,實(shí)踐能力與理論知識(shí) 同樣重要??梢哉f(shuō)此課程設(shè)計(jì)的理論難度并不大,但是若要深入發(fā)掘其中的東西, 并且實(shí)際去編程實(shí)現(xiàn),就遇到了相當(dāng)大的難度。因?yàn)榕c之涉及的很多方面并沒(méi)有 學(xué)過(guò),需要自己去自學(xué)和實(shí)踐檢驗(yàn)。通過(guò)本次課程

22、設(shè)計(jì),通過(guò)模擬磁盤(pán)調(diào)度及進(jìn)程排隊(duì)算法來(lái)加深對(duì)操作系統(tǒng)中 各個(gè)磁臂調(diào)度算法概念的理解。模擬磁盤(pán)調(diào)度算法(FCFS,SSTF,SCAN,CSCAN以 現(xiàn)各種不同調(diào)度算法的過(guò)程,并計(jì)算各算法的平均尋道長(zhǎng)度,以便于我們判斷各 種算法的優(yōu)劣以及各種算法使用的場(chǎng)合。對(duì) VC+6.0的應(yīng)用也更加得心應(yīng)手。第六章致謝感謝陜粉麗老師和本組成員在這次系統(tǒng)開(kāi)發(fā)過(guò)程中對(duì)我的幫助參考文獻(xiàn)1計(jì)算機(jī)操作系統(tǒng) 高等教育出版社,作者:孫鐘秀,費(fèi)翔林,駱斌 等編著2 VC+深入詳解 電子工業(yè)出版社作者:孫鑫,余指導(dǎo)教師評(píng)語(yǔ):指導(dǎo)教師簽名:年 月 日項(xiàng)目權(quán)重成績(jī)成1、設(shè)計(jì)過(guò)程中出勤、學(xué)習(xí)態(tài)度等方面0.1績(jī)2、設(shè)計(jì)技術(shù)水平0.4評(píng)3

23、、安全程度及可操作程度0.2定4、設(shè)計(jì)報(bào)告書(shū)寫(xiě)及圖紙規(guī)范程度0.3總成績(jī)教研室審核意見(jiàn):教研室主任簽字:教學(xué)院(系)審核意見(jiàn):主任簽字:附源代碼#include<stdio.h>#include<stdlib.h>#include<iostream.h>#include<math.h>const int maxsize=1000;int panduan(char str);int zhuanhua(char str,int a);int *bubble(int cidao,int m);int FCFS(int cidao,int m);void

24、 SSTF(int cidao口,int m);void SCAN(int cidao口,int m);int main()int a;int c;int cidaomaxsize;int i=0,count;char str100;cout<<"請(qǐng)輸入磁道序列(0結(jié)束):"<<endl;bei1:cin>>str;a=panduan(str);if(a=0)cout<<"輸入數(shù)據(jù)的類(lèi)型錯(cuò)誤,請(qǐng)重新車(chē)入!"<<endl;goto bei1;elsecidaoi=zhuanhua(str,a);i

25、+;while(cidaoi-1!=0)cin>>str;a=panduan(str);if(a=0)cout<<"輸入數(shù)據(jù)的類(lèi)型錯(cuò)誤,請(qǐng)重新輸入! "<<endl;elsecidaoi=zhuanhua(str,a);i+;)count=i-1;cout<<"你輸入的磁道序列為:"for(i=0;i<count;i+)(cout<<cidaoi<<"")cout<<endl;while(1)(cout<<endl;cout<&

26、lt;"|_|"<<endl;cout<<"|(*)系統(tǒng)菜單(*A_A*)|"<<endl;cout<<"|_|"<<endl;cout<<"|"<<endl;cout<<"|1.先來(lái)先服務(wù)|"<<endl;cout<<"|"<<endl;cout<<"|2.最短尋道時(shí)間優(yōu)先|"<<endl;cout&

27、lt;<"|"<<endl;cout<<"|3.掃描調(diào)度|"<<endl;cout<<"|"<<endl;cout<<"|4.退出|"<<endl;cout<<"|"<<endl;cout<<"|_|"<<endl;cout<<"|_|"<<endl;bei7:cout<<"

28、請(qǐng)選擇算法:"bei6:cin>>str;a=panduan(str);if(a=0)(cout<<"輸入數(shù)據(jù)的類(lèi)型錯(cuò)誤,請(qǐng)重新車(chē)入!"<<endl;goto bei6;)elsec=zhuanhua(str,a);if(c=5)break;if(c>5)(cout<<"數(shù)據(jù)輸入錯(cuò)誤!請(qǐng)重新輸入"<<endl;goto bei7;)switch(c)case 1:FCFS(cidao,count); break;case 2:SSTF(cidao,count); break;ca

29、se 3:SCAN(cidao,count); break; return 0;/*判斷輸入數(shù)據(jù)是否有效*/int panduan(char str)int i=0;while(stri!='0')if(stri<'0'|stri>'9')return 0;break;i+;return i;/*將字符串轉(zhuǎn)換成數(shù)字*/int zhuanhua(char str,int a)int i;int sum=0;for(i=0;i<a;i+)sum=sum+(int)(stri-'0')*pow(10,a-i-1);re

30、turn sum;/*冒泡排序算法 */int *bubble(int cidao,int m)int i,j;int temp;for(i=0;i<m;i+)for(j=i+1;j<m;j+)if(cidaoi>cidaoj) temp=cidaoi;cidaoi=cidaoj;cidaoj=temp;cout<<"排序后的磁盤(pán)序列為:"for( i=0;i<m;i+)cout<<cidaoi<<""cout<<endl;return cidao;/*先來(lái)先服務(wù)調(diào)度算法 */int

31、 FCFS(int cidao,int m)int now;int sum=0;int j,i;int a;char str100;float ave;cout<<"磁盤(pán)請(qǐng)求序列為:"for( i=0;i<m;i+)cout<<cidaoi<<""cout<<endl;cout<<"請(qǐng)輸入當(dāng)前的磁道號(hào):"bei2: cin>>str;a=panduan(str);if(a=0)cout<<"輸入數(shù)據(jù)的類(lèi)型錯(cuò)誤,請(qǐng)重新輸入!"&

32、lt;<endl;goto bei2; elsenow=zhuanhua(str,a);sum+=abs(cidao0-now);cout<<"磁盤(pán)掃描序列為:"for( i=0;i<m;i+)cout<<cidaoi<<""for(i=0,j=1;j<m;i+,j+)sum+=abs(cidaoj-cidaoi);ave=(float)(sum)/(float)(m);cout<<endl;cout<<"平均尋道長(zhǎng)度:"<<ave<<

33、;endl;cout<<"磁頭移動(dòng)總磁道數(shù):"<<sum<<endl;return 0;/*最短尋道時(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);cout<<"請(qǐng)輸入當(dāng)前的磁道號(hào):bei3: cin>>str;a=panduan(str);if(a=0)cout<<"輸入數(shù)據(jù)的類(lèi)型錯(cuò)誤got

34、o bei3;elseII.,請(qǐng)重新輸入!"<<endl;now=zhuanhua(str,a);if(cidaom-1<=now)cout<<"磁盤(pán)掃描序列為:for(i=m-1;i>=0;i-)II.cout<<cidaoi<<""sum=now-cidao0;)if(cidao0>=now)(cout<<"磁盤(pán)掃描序列為:"for(i=0;i<m;i+)cout<<cidaoi<<""sum=cidao

35、m-1-now;)if(now>cidao0&&now<cidaom-1)(cout<<" 磁盤(pán)掃描序列為:" while(cidaok<now)(k+;)l=k-1;r=k;while(l>=0)&&(r<m)(if(now-cidaol)<=(cidaor-now)(cout<<cidaol<<""sum+=now-cidaol;now=cidaol;l=l-1;)else(cout<<cidaor<<""

36、;sum+=cidaor-now;now=cidaor;r=r+1;)if(l=-1)(for(j=r;j<m;j+)(cout<<cidaoj<<"")sum+=cidaom-1-cidao0;)elsefor(j=l;j>=0;j-)cout<<cidaoj<<""sum+=cidaom-1-cidao0;ave=(float)(sum)/(float)(m);cout<<endl;cout<<"平均尋道長(zhǎng)度:"<<ave<<endl;cout<<"磁頭移動(dòng)總磁道數(shù):"<<sum<<endl;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論