操作系統(tǒng)課程設(shè)計(jì)報(bào)告書(shū)_第1頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告書(shū)_第2頁(yè)
操作系統(tǒng)課程設(shè)計(jì)報(bào)告書(shū)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余44頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告書(shū)2011 / 2012 學(xué)年第1學(xué)期課程名稱(chēng):操作系統(tǒng)實(shí)踐課程設(shè)計(jì)專(zhuān)業(yè)班級(jí):計(jì)算機(jī)0801學(xué) 號(hào): 080405003姓 名:王乾龍指導(dǎo)教師:邵虹課程設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ)成 績(jī):指導(dǎo)教師簽字:題目1銀行家算法地實(shí)現(xiàn)1. 1題目地主要研究?jī)?nèi)容及預(yù)期達(dá)到地目標(biāo)編程序模擬實(shí)現(xiàn)銀行家算法.1. 2題目研究地工作基礎(chǔ)或?qū)嶒?yàn)條件(1) 硬件環(huán)境:widows(2) 軟件環(huán)境:JAVANC1. 3設(shè)計(jì)思想先對(duì)用戶提出地請(qǐng)求進(jìn)行合法性檢查,即檢查請(qǐng)求是否大于需要地,是否大 于可利用地.若請(qǐng)求合法,則進(jìn)行預(yù)分配,對(duì)分配后地狀態(tài)調(diào)用安全性算法進(jìn)行檢 查.若安全,則分配;若不安全,則拒絕申請(qǐng),恢復(fù)到原來(lái)地

2、狀態(tài),拒絕申請(qǐng).1. 4流程圖3、安全性算法流程圖/最大需求已分配資源數(shù)/仍需資源數(shù)/可利用資源數(shù)/存放安全序列1. 5主要程序代碼package bank;import java.util.Sca nner; public class Test int no1, no2;static int Max;static int Allocatio n;static int Need; static int Available;static String name1;static String name2; static boolea n Finish;static in t temp = 0 ;s

3、tatic int work;static in t Request;Scanner in put = new Sea nn er(System.i n);public static void main( Stri ng args) Test t = new Test();t.pri ntFrame();/t.pri nt();t.Safty();/*t.judge();輸入初始化數(shù)據(jù)*/public void prin tFrame()System out println("*")System.out.pri ntl n("*");System.out

4、.pri ntl n("*銀行家算法設(shè)計(jì)與實(shí)現(xiàn)*");System.out.pri ntl n("*");System out println("*")System.out.print("請(qǐng)輸入系統(tǒng)中進(jìn)程地個(gè)數(shù):”);no1 = in put .n ext In t();(”請(qǐng)輸入資源地種類(lèi)數(shù):”);no2 = in put. next In t();Max = new intn o1 no2;Allocati on = new intn o1 no 2;Need = new intn o1 no2;Available =

5、new in t no 2;n ame1 = new Stringn o1;n ame2 = new Stringno 2;int sum = new in t3;for (int i = 0; i < n o1; i+)System.out.print("請(qǐng)輸入進(jìn)程 ” + i + "地名字:");n ame1i = in put .n ext();for (int i = 0; i < no2; i+)System.out.print("請(qǐng)輸入資源 ” + i + "地名字:");n ame2i = in put .n

6、 ext();for (int i = 0; i < n o1; i+)for (int j = 0; j < no2; j+)System.out.print("請(qǐng)輸入進(jìn)程 ” + name1i + "地” + name2j+ "類(lèi)資源最大需求量:”);Maxij = in put .n ext In t();for (int i = 0; i < n o1; i+)for (int j = 0; j < no2; j+) System.out.print("請(qǐng)輸入進(jìn)程 ” + name1i + "地” + name2

7、j+ "類(lèi)資源已占有資源量:”);Allocatio nij = in put. next In t();Needij = Maxij - Allocatio nij;for (int i = 0; i < no2; i+)("請(qǐng)輸入類(lèi)資源” + name2i + "地可利用資源數(shù):”); Availablei = in put .n extI nt();for (int i = 0; i < no2; i+)Available" = Available" - sumi;/*打印輸出*/public void prin t()Sys

8、tem.out.pri ntln(”*此時(shí)刻資源分配情況 *");System.out.pri ntln(” NumberName MaxAllocation Need");for (int i = 0; i < n o1; i+)System.out.pri nt(”"+ i +"");System.out.pri nt(n ame1i+"");for (int j = 0; j < no 2; j+)System.out.pri nt(Maxij+" ");for (int j = 0;

9、j < no 2; j+)System.out.pri nt(""+ Allocatio nij);for (int j = 0; j < no 2; j+)System.out.pri nt("" + Needij);System.out.pri ntl n();System.out.print("各個(gè)類(lèi)資源可利用地資源數(shù)分別為:");for (int j = 0; j < no 2; j+)System.out.pri nt(" " + Availablej);System.out.pri n

10、tl n();/*進(jìn)行安全性檢測(cè)*/public void Safty() Finish = new boolea nn o1;temp = new in t no1;int i, k = 0, m, apply,j;/k為安全序列地序列數(shù)int flag = 0;work = new in t no 2;for (i = 0; i < no2; i+)worki = Available"for (i = 0; i < no1; i+)/當(dāng)前執(zhí)行換后,重第一個(gè)開(kāi)始檢測(cè)apply = 0;for (j = 0; j < no 2; j+)if (Fi nishi =

11、false && Needij <= workj)/apply+;if (apply = no2)變分配數(shù)for (m = 0; m < no2; m+)workm = workm + Allocati on im; Fini shi = true;tempk = i+1;/保存安全序列i = -1;/k+;flag+;for (i = 0; i < no2; i+)if (Fi nishi = false) System.out.pri ntl n(”系統(tǒng)不安全!");else(”系統(tǒng)是安全地,安全序列為:”); for (i = 0; i <

12、; no1; i+)/輸出運(yùn)行進(jìn)程數(shù)組 System.out.pri nt(tempi + "->"); System.out.pri ntl n();prin t();/*進(jìn)行資源分配*/public void cha ngdata(i nt i)int j;for (j = 0; j < no2; j+)Availablej = Availablej - Requestj;Allocatio nij = Allocatio n ij + Requestj;Needij = Needij - Request;void judge()Request = new

13、intno 2;char ch='y:int i = 0, j = 0;System.out.print("請(qǐng)輸入您要分配地資源進(jìn)程號(hào):”);for(j=0;j<10;j+)i = in put. next In t();if(i> no1)(” 輸入錯(cuò)誤,請(qǐng)重新輸入:");continue;else break;(”錯(cuò)誤次數(shù)太多,看來(lái)您今天不適合進(jìn)行操作,系統(tǒng)退出!");/ System.exit(O);(”請(qǐng)輸入進(jìn)程” + i + "申請(qǐng)地資源:”);for (j = 0; j < no2; j+)System.out.pr

14、int(name2j + "類(lèi)資源請(qǐng)求:”);Requests = in put .n ext In t();輸入需要申請(qǐng)地資源for (j = 0; j < no2; j+)if (Requests > Needij) II判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)(”進(jìn)程” + i + "申請(qǐng)地資源大于它所需要地資源.");(”分配不合理,不予分配!”);ch = 'n'break;elseif (Requests > Availablej)II判斷申請(qǐng)是否大于當(dāng)前資源,若大于則("進(jìn)程” + i + "申請(qǐng)地資源

15、大于系統(tǒng)現(xiàn)在可利用 地資源.");(”分配不合理,不予分配!”);ch = 'n'break;if (ch = 'y')changdata(i); /根據(jù)進(jìn)程需求量變換資源Safty();/根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷(”請(qǐng)輸入您所要進(jìn)行地操作:1:繼續(xù)分配 2 :退出");for(i=0;i<5;i+)int choice = in put .n ext In t();if (choice = 1) judge();else if (choice = 2) System.exit(O);(” 輸入錯(cuò)誤,請(qǐng)重新輸入:”);(”錯(cuò)誤次

16、數(shù)太多,看來(lái)您今天不適合進(jìn)行操作,系統(tǒng)退出!");System.exit(O);1 . 6運(yùn)行結(jié)果及分析(可以抓取界面)1. 開(kāi)始界面2 L r I lpljtei I ri | mObJSi quui ijl iTest Java Application D“璇件s 'eclise binary 'om. sun .java. jdk. win 3 2. x&6_ 1.6.0,013 *銀行家算法設(shè)計(jì)與實(shí)現(xiàn)*2. 初始化并打印輸出請(qǐng)輸入系統(tǒng)中進(jìn)程的個(gè)數(shù):? 請(qǐng)輸入資源的種類(lèi)數(shù): 請(qǐng)輸入進(jìn)程o的名字汀一 請(qǐng)輸入進(jìn)程丄的名字:二 請(qǐng)輸入進(jìn)程2的名字注2 請(qǐng)輸入進(jìn)

17、程3的名字:汨 請(qǐng)輸入資源0的名字:二請(qǐng)輸入資源1的名字:R2 請(qǐng)輸入資源2的名字;" 請(qǐng)輸入謹(jǐn)程肥的和類(lèi)資源最大需求量:3 請(qǐng)輸兒進(jìn)程“的蛻類(lèi)資源最大濡求量: 請(qǐng)輸入進(jìn)程P1的昭類(lèi)資源最大需求量:- 請(qǐng)輸入進(jìn)程酥的R1類(lèi)資源最大需求量:6 請(qǐng)輸入進(jìn)程氏的蛻類(lèi)資源最大需求量:1 請(qǐng)輸入進(jìn)程現(xiàn)的陰類(lèi)資源最大需求量: 請(qǐng)輸丸講程旳的敘類(lèi)資源最大爲(wèi)求量: 請(qǐng)輸兒進(jìn)程前的推類(lèi)資源最大希求量: 請(qǐng)輸入進(jìn)程陀的陽(yáng)類(lèi)資源最大需求量: 請(qǐng)輸入進(jìn)程已的R1類(lèi)資源最大需求量注 請(qǐng)輸入進(jìn)程M的蛻類(lèi)資源最大需求量:匸 請(qǐng)輸入進(jìn)程出的時(shí)類(lèi)資源最大需求量: 請(qǐng)輸丸謹(jǐn)程骯的R1類(lèi)資源已占有資源量;: 請(qǐng)輸兒進(jìn)程“

18、的推類(lèi)資源己占有資源量: 請(qǐng)輸入進(jìn)程現(xiàn)的貼類(lèi)熒源已占有資源量: 請(qǐng)輸入進(jìn)程酥的即類(lèi)資源已占有浚源量:4 請(qǐng)輸入進(jìn)程的蛻類(lèi)資源已占有資源量:1 請(qǐng)輸入進(jìn)程現(xiàn)的時(shí)類(lèi)資源己占有資源量;: 請(qǐng)輸丸進(jìn)程P3的初類(lèi)資源已占商瓷源量; 請(qǐng)輸兒進(jìn)程前的鴉類(lèi)資源己占有資源量: 請(qǐng)輸入進(jìn)程陀的陽(yáng)類(lèi)資源已占有資源量江 請(qǐng)輸入進(jìn)程聯(lián)的即類(lèi)資源已占有浚源量:0 請(qǐng)輸入進(jìn)程凸的貶類(lèi)資源已占有資源畐注 請(qǐng)輸入進(jìn)程列的陽(yáng)類(lèi)資源已占有資源量; 請(qǐng)輸入類(lèi)資源FU的可利用資源數(shù); 謂輸入類(lèi)資源盟的可利甬資源數(shù): 請(qǐng)輸入類(lèi)資源虻的可利用資源數(shù):2 系統(tǒng)是安全乳女全序列為:2->1->3 >4->Nuimber

19、EJ&xneMaxAllacaxlan0Pl3 2 2100.1P26 13112F33 1211322002此時(shí)刻資源分配情況各個(gè)蠢源可開(kāi)用的強(qiáng)食分別免2 1 2潔輸入您要分配的資源進(jìn)程號(hào):Request>Need 不 予Request>Available,3用例測(cè)試a:進(jìn)程1發(fā)出請(qǐng)求Request(2,1,2) 分配.請(qǐng)輸入您要分配的資源講程號(hào);請(qǐng)輸入進(jìn)程;申請(qǐng)的資源:初類(lèi)資源話求:耽類(lèi)資源諳求:虻類(lèi)資源諳求:-進(jìn)程沖請(qǐng)的資源大于它所需要的資源“分配不合理,不予分配!請(qǐng)輸入您斯要進(jìn)行的操作:二:堆皺分配吉退出4用例測(cè)試b:進(jìn)程0發(fā)出請(qǐng)求Request(2,2,2) 不予

20、分配.諳輸入您所要進(jìn)行的操作:二繼續(xù)分配公退出請(qǐng)輸入©要分配的資源進(jìn)程號(hào); 請(qǐng)輸入進(jìn)程j申請(qǐng)的資源; 耽類(lèi)資源請(qǐng)求:- 取類(lèi)資源請(qǐng)求:亠R3類(lèi)資源請(qǐng)求:2進(jìn)程0申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的贄源- 分配不合理,不予分配!請(qǐng)輸入您所要進(jìn)行的操作;1:繼綾分配2:退出5用例測(cè)試c:進(jìn)程1發(fā)出請(qǐng)求Request(1,0,1可以分配.請(qǐng)輸入裁所要進(jìn)行的掾作:1;維續(xù)曲配2:退出請(qǐng)輸入您要分配的費(fèi)源進(jìn)程號(hào)-請(qǐng)輸入進(jìn)程二申請(qǐng)的赍源:mi類(lèi)資源請(qǐng)求:盟糞資源請(qǐng)求上腸糞資源請(qǐng)求:丄乘銃是安全的.安全序烈那2->1->3->4->源分配情況“rNuftifciftrNameAl

21、l de*'elanNeed0Pl3 2 21002221P26 135121012P33 142111033M22Q0各個(gè)類(lèi)資源可利用的資源戴分別為:1 1 1 請(qǐng)輸入您所要進(jìn)行的操作:4蚩繆分配2:2退出42Q6用例測(cè)試d:進(jìn)程0發(fā)出請(qǐng)求Request(1,0,1-系統(tǒng)不安全.請(qǐng)輸入您所要進(jìn)行的操作;二:繼續(xù)分配岔退出諳輸入您要分配的資源進(jìn)穆號(hào):請(qǐng)輸入進(jìn)程o申請(qǐng)的資源:R1類(lèi)資源請(qǐng)乗:1R2類(lèi)資源請(qǐng)求:帖類(lèi)資誼請(qǐng)親:亠乘統(tǒng)不安全!索統(tǒng)木安全!系銃不安全!諳輸入您所要進(jìn)行的操作:二;繼續(xù)分配2:退出7輸入測(cè)試a:如果所輸入地要分配資源地進(jìn)程號(hào)不在存在地進(jìn) 程,則報(bào)錯(cuò)請(qǐng)求重新輸入.|諳

22、輸入您所要進(jìn)行的操作;1:繼續(xù)分配a退出請(qǐng)輸入第要分配的資源進(jìn)程號(hào):輸入措誤,諳重新輸入:8.輸入測(cè)試b:在選擇繼續(xù)分配還是退出中,如果輸入不符合求 則報(bào)錯(cuò)請(qǐng)求重新輸入,連續(xù)錯(cuò)誤5次后系統(tǒng)將自動(dòng)關(guān)閉.請(qǐng)輸入您所要進(jìn)行的操作:L:繼續(xù)分配2:退出5輸入錯(cuò)誤,請(qǐng)重新輸入:5輸入錯(cuò)誤,請(qǐng)重新輸入:5輸入錯(cuò)誤,請(qǐng)重新輸入:5輸入錯(cuò)誤,請(qǐng)重新輸入:輸入錯(cuò)誤,請(qǐng)重新輸入:錯(cuò)誤灰數(shù)太多,看來(lái)您今天不適合進(jìn)行操作,系統(tǒng)退出!1. 7心得體會(huì)通過(guò)對(duì)此題目地研究,我基本達(dá)到了預(yù)期目標(biāo),編程模擬實(shí)現(xiàn)了銀行家算法題目2磁盤(pán)調(diào)度算法地模擬2. 1題目地主要研究?jī)?nèi)容及預(yù)期達(dá)到地目標(biāo)模擬實(shí)現(xiàn)磁盤(pán)調(diào)度算法中地FCFS、SST

23、F、SCAN和CSCAN算法.2. 2題目研究地工作基礎(chǔ)或?qū)嶒?yàn)條件(1) 硬件環(huán)境:wi ndows(2) 軟件環(huán)境:Visual C+2. 3設(shè)計(jì)思想用戶輸入當(dāng)前磁頭和磁道范圍,隨機(jī)地生成10個(gè)磁道數(shù).然后通過(guò)四種磁盤(pán) 調(diào)度地模擬算法來(lái)顯示出不同地方法調(diào)度后地磁道順序開(kāi)始生成地隨機(jī)數(shù)列是字符串形式地,在每個(gè)算法過(guò)程中都要將其先轉(zhuǎn)換成 數(shù)組形式,然后將值賦給一個(gè)臨時(shí)地?cái)?shù)組.總體思想是將數(shù)組逐一地相減得到磁 道數(shù),然后將整個(gè)數(shù)組向前移動(dòng)一位.計(jì)算出總磁道數(shù)和平均尋道長(zhǎng)度.在后面地 兩個(gè)算法中用到了冒泡排序?qū)?shù)組先按大小排序然后再處理最后將得到地?cái)?shù)組結(jié)果再轉(zhuǎn)換成字符串地形式輸出在list控件中也顯

24、示出來(lái),這樣便于對(duì)這幾種 方法進(jìn)行比較獨(dú)處結(jié)論2. 4流程圖(1) FCFS(2) SSTF 開(kāi)始初始化變量x,i=O,j,k,h,AII;Temp;初始化臨時(shí)數(shù)組RLine10;復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLinei<9Linej>Han -Temp=RLinej-HanTemp=Han-RLinejTempvMinMin=Temph=ji+All=All+Min1在控件上顯示排序 有的數(shù)列1F結(jié)束(3) SCAN(4) CSCAN開(kāi)始J 丿初始化變量 和臨時(shí)數(shù)組復(fù)制磁道號(hào)到 臨時(shí)數(shù)組RLine冒泡排序 對(duì)訪問(wèn)磁道按由小 到大順序排列輸出磁頭位置在最外圍欲訪問(wèn)磁道r:xia ngn e

25、i=1xia ngn ei=1,否將int類(lèi)型轉(zhuǎn)換為CstrinRLine9<=Hand是1sum二Ha nd-2*RLi neO+RLi ne9RLi neO>=Ha ndsum=RL in e9-Ha nd將int類(lèi)型轉(zhuǎn)換為Cstrin . RLine9<=Hand :十sum=RL in e9-Ha nd jjRLi neO>=Ha nd疋-'RLinek<Hand7*"RLi nek<Ha nd"是k+k+R=k j=rL=k-1R=kj=1將int類(lèi)型轉(zhuǎn)換為Cstring m_csca nsc+二ra n3+"

26、"是將int類(lèi)型轉(zhuǎn)換為Cstring m_csca nsc+二ra n3+""j<10j<rJ+J>=0是將int類(lèi)型轉(zhuǎn)換為Cstring m_csca nsc+二ra n3+""J+J-J>=r是將int類(lèi)型轉(zhuǎn)換為Cstring m csca nsc+二ra n3+""J-sum=Ha nd-2*RLi ne0+RL in e9sum=2*RLi ne9-Ha nd-sum=2*RLi ne9+Ha nd-12*RLi ne0+RLi nel2*RLi ne0-RLi ner結(jié)束在空間安上顯 示,2

27、. 5主要程序代碼void CTest04Dlg:O nSc()/ TODO: Add your con trol no tificati on han dler code here(CButt on *)GetDlgltem(IDC_FCFS)->E nableWi ndow(TRUE); /解除鎖定(CButto n*)GetDlgltem(IDC_SSTF)->E nableWi ndow(TRUE);(CButto n*)GetDlgltem(IDC_SCAN)->E nableWi ndow(TRUE);(CButt on *)GetDlgItem(IDC_CSCA

28、N)->E nableWi ndow(TRUE); m_ListCtrl.DeleteAllltems(); 列表清空J(rèn)age=-1;int i;CStri ng ran;UpdateData(TRUE);Han d=m_Ha nd;if(m_Limit>65535|m_Limit<=10|m_Ha nd>65535|m_Ha nd<=0)MessageBox("超出范圍!");else for(i=0;i<=9;i+)DiscLinei=rand()%m_Limit; 隨機(jī)生成 10 個(gè)磁道號(hào)m_suiji=""fo

29、r(i=0;i<=9;i+)ran.Format("%d",DiscLinei); 將 int 類(lèi)型轉(zhuǎn)換為 Cstringm_suiji+=ra n;m_suiji+=""UpdateData(FALSE);void CTest04Dlg:O nF cfs()if(Jage>=0) m_ListCtrl.DeleteAllltems();Jage=0;/ TODO: Add your con trol no tificati on han dler code hereint RLine10;/將隨機(jī)生成地磁道數(shù)數(shù)組Discline復(fù)制給數(shù)組R

30、Lineall是計(jì)算總地移動(dòng)磁int x,i,k,AII,Temp; /Temp是計(jì)算移動(dòng)地磁道距離地臨時(shí)變量頭數(shù)All=0;/統(tǒng)計(jì)全部地磁道數(shù)變量k=9;CStri ng ranO;限定10個(gè)地磁道數(shù)for(i=0;i<=9;i+)/復(fù)制磁道號(hào)到臨時(shí)數(shù)組RL ineRLi nei=DiscLi nei;m_fcfssc=""All=Ha nd-RL in e0;if(All<0) All=(-All);for(i=0;i<=9;i+)Temp=RLi neO-RLi ne1;求出移動(dòng)磁道數(shù),前一個(gè)磁道數(shù)減去后一個(gè)磁道數(shù)得出臨時(shí)地移動(dòng)距離if(Temp&l

31、t;0)Temp=(-Temp);/移動(dòng)磁道數(shù)為負(fù)數(shù)時(shí),算出相反數(shù)作為移動(dòng)磁道數(shù)ran 0.Format("%d",RL in e0);m_fcfssc+=ra n0+""/將int類(lèi)型轉(zhuǎn)換為 CstringAll=Temp+All;/每個(gè)磁道數(shù)向前移動(dòng)一位/求全部磁道數(shù)地總和x=0;for(i nt a=x;a<k;a+)RLi nea=RLi nea+1;x+;k-;m_zfcfs=All; m_a=(float)(All)/10;UpdateData(FALSE);BIJIAO sc;ranO.Format("%d",Ja

32、ge+1);它是以"%"開(kāi)始而以type結(jié)束.d十進(jìn)制數(shù),表示一個(gè)整型值sc.code=ra nO;sc.n ame="FCFS"sc.shu nxu=m_fcfssc;ran 0.Format("%d",m_zfcfs);sc.daxiao=ra n0;ran 0.Format("%f',m_a);sc.p ingjun=ran0;show(sc);void CTest04Dlg:OnSstf()/ 最短尋道時(shí)間優(yōu)先/ TODO: Add your con trol no tificati on han dler

33、code hereJage=1; int Han=Hand; int x,i,j,k,h,AII;int Temp;/Temp是計(jì)算移動(dòng)地磁道距離地臨時(shí)變量int RLi ne10;將隨機(jī)生成地磁道數(shù)數(shù)組Discline復(fù)制給數(shù)組RLineint Min;CStri ng ran1;/設(shè)置一個(gè)大數(shù)作為存放最小地磁道數(shù)差A(yù)ll=0;/統(tǒng)計(jì)全部地磁道數(shù)變量k=9;限定10個(gè)地磁道數(shù)for(i=0;i<=9;i+)/復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLineRLi nei=DiscLi nei; m_sstfsc=""for(i=0;i<=9;i+)Min=64000;for(j

34、=0;j<=k;j+)/內(nèi)循環(huán)尋找與當(dāng)前磁道號(hào)最短尋道地時(shí)間地磁道號(hào)if(RL in ej>Ha n)/如果第一個(gè)隨機(jī)生成地磁道號(hào)大于當(dāng)前地磁道號(hào),執(zhí)行下一句Temp=RL in ej-Ha n;else/求出臨時(shí)地移動(dòng)距離Temp=Ha n-RL in ej;求出臨時(shí)地移動(dòng)距離if(Temp<Mi n)/如果每求出一次地移動(dòng)距離小于Min,執(zhí)行下一句Mi n=Temp;/Temp臨時(shí)值賦予Minh=j;/把最近當(dāng)前磁道號(hào)地?cái)?shù)組下標(biāo)賦予hAII=AII+Mi n;/統(tǒng)計(jì)一共移動(dòng)地距離ran 1.Format("%d",RLineh);將 int 類(lèi)型轉(zhuǎn)換為

35、 Cstringm_sstfsc+=ra n1+""Han=RLi neh;將當(dāng)前選出地?cái)?shù)當(dāng)作開(kāi)頭,與其他數(shù)做比較x=h;for(i nt a=x;a<k;a+)/從當(dāng)前已經(jīng)選出地位置起,每個(gè)磁道數(shù)向前移動(dòng)一位 RLi nea=RLi nea+1;x+;k-;m_zsstf=All;m_b=(float)(All)/10;UpdateData(FALSE);BIJIAO sc;ran 1.Format("%d",Jage+1);sc.code=ra n1;sc.n ame="SSTF"sc.shu nxu=m_sstfsc;ra

36、n 1.Format("%d",m_zsstf);sc.daxiao=ra n1;ran 1.Format("%f',m_b);sc.p ingjun=ran1;show(sc);void CTest04Dlg:O nSca n() / TODO: Add your con trol no tificatio n han dler code hereJage=2;int RL in e10;CStri ng ran 2;int temp;int k=1;int l,r;/相對(duì)描述磁道Hand在位置int i,j,sum=0;UpdateData();xia

37、 ngn ei=m_xia ngn ei;if(xia ngn ei=1) Jage=3;for(i=0;i<=9;i+)/復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLineRLi nei=DiscLi nei;for(i=0;i<10;i+) /用冒泡排序?qū)υL問(wèn)磁道按由小到大順序排列輸出for(j=i+1;j<10;j+)if(RL in ei>RL in ej)temp=RL in ei;RLi nei=RLi nej;RL in ej=temp;/*由以下算法確定磁道訪問(wèn)順序*/m_scansc=" "/ 初始化 m_scanscif(RLi ne9<=Ha

38、 nd) /*磁頭位置大于最外圍欲訪問(wèn)磁道*/for(i=9;i>=0;i-)ran2.Format("%d",RLinei);/將 int 類(lèi)型轉(zhuǎn)換為 Cstringm_sca nsc+=ra n2+" "sum=Ha nd-RL in e0;else if(RLine0>=Hand)/*磁頭位置小于最里欲訪問(wèn)磁道*/for(i=0;i<10;i+)ran2.Format("%d",RLinei);/將 int 類(lèi)型轉(zhuǎn)換為 Cstringm_sca nsc+=ra n2+" "sum=RL in

39、 e9-Ha nd;else/*磁頭位置在最里側(cè)磁道與最外側(cè)磁道之*/while(RLi nek<=Ha nd)/*確定當(dāng)前磁道在已排地序列中地位置*/k+;l=k-1;/*在磁頭位置地前一個(gè)欲訪問(wèn)磁道*/r=k;/*磁頭欲訪問(wèn)磁道*/if(xiangnei=0)/*磁頭由外側(cè)訪問(wèn)*/for(j=l;j>=0;j-)ran2.Format("%d",RLinej); / 將 int 類(lèi)型轉(zhuǎn)換為 Cstringm_sca nsc+=ra n2+" "Cstri ngCstri ngCstri ngfor(j=r;j<10;j+)ran2.

40、Format("%d",RLinej); / 將 int 類(lèi)型轉(zhuǎn)換為 m_sca nsc+=ra n2+" "sum=Ha nd-2*RLi neO+RL in e9;else/*磁頭由內(nèi)側(cè)訪問(wèn)*/for(j=r;j<10;j+)ran2.Format("%d",RLinej); / 將 int 類(lèi)型轉(zhuǎn)換為 m_sca nsc+=ra n2+" "for(j=l;j>=0;j-)ran2.Format("%d",RLinej); / 將 int 類(lèi)型轉(zhuǎn)換為 m_sca nsc+=ra

41、 n2+" "sum=-Ha nd-RLi ne0+2*RLi ne9;m_zsca n=sum;m_c=(float)(sum)/10;UpdateData(FALSE);BIJIAO sc;ran 2.Format("%d",Jage+1);sc.code=ra n2;sc.n ame="SCAN"sc.shu nxu=m_sca nsc;if(m_xia ngn ei=0)sc.beizhu="磁頭由外向內(nèi)"else sc.beizhu="磁頭由內(nèi)向外"ran 2.Format("

42、;%d",m_zsca n);sc.daxiao=ra n2;ran 2.Format("%f',m_c);sc.p ingjun=ran2;show(sc);(4)cscanvoid CTest04Dlg:O nCsca n()Jage+;/ TODO: Add your con trol no tificati on han dler code hereint RL in e10;CStri ng ran3;int temp;int k=1;int l,r;int i,j,sum=0;UpdateData();xia ngn ei=m_xia ngn ei;fo

43、r(i=0;i<=9;i+)復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLineRLi nei=DiscLi nei;for(i=0;i<10;i+)II對(duì)訪問(wèn)磁道按由小到大順序排列輸出for(j=i+1;j<10;j+)if(RL in ei>RL in ej)temp=RL in ei;RLi nei=RL in ej;RLi nej=temp;m_cscansc=" "II初始化 m_scanscI*由以下算法確定磁道訪問(wèn)順序*Iif(RLi ne9<=Ha nd|RLi ne0>=Ha nd)/*磁頭位置在最外圍欲訪問(wèn)磁道*Iif(xia ngn ei

44、=1)for(i=0;i<10;i+)ran3.Format("%d",RLinei);II將 int 類(lèi)型轉(zhuǎn)換為 Cstringm_csca nsc+=ra n3+""if(RL in e9<=Ha nd) sum=Ha nd-2*RL in e0+RL in e9;if(RLi ne0>=Ha nd) sum=RL in e9-Ha nd;else for(i=9;i>=0;i-)ran3.Format("%d",RLinei);II將 int 類(lèi)型轉(zhuǎn)換為 Cstring m_csca nsc+=ra n3

45、+""if(RLi ne9<=Ha nd) sum=Ha nd-RL in e0;if(RLi neO>=Ha nd) sum=2*RL in e9-RL in e0-Ha nd;else /*磁頭位置在最里側(cè)磁道與最外側(cè)磁道之間*/if(xia ngn ei=1)/磁頭由內(nèi)向外移動(dòng)while(RLi nek<Ha nd)k+;l=k-1;/*在磁頭位置地前一個(gè)欲訪問(wèn)磁道 */r=k;/*磁頭欲訪問(wèn)磁道*/ ;for(j=r;j<10;j+)/*先訪問(wèn)外側(cè)磁道再轉(zhuǎn)向最里欲訪問(wèn)磁道*/ran3.Format("%d",RLinej)

46、; 將 int 類(lèi)型轉(zhuǎn)換為 Cstring m_csca nsc+=ra n3+""for(j=0;j<r;j+)ran3.Format("%d",RLinej); 將 int 類(lèi)型轉(zhuǎn)換為 Cstring m_csca nsc+=ra n3+""/*sum=RL in e9-Ha nd+RLi ne9-RLi neO+RLi nel-RLi neO*/sum=2*RL in e9-Ha nd-2*RL in e0+RL in el;else/磁頭由外向內(nèi)while(RLi nek<=Ha nd)k+;r=k; /*磁頭欲訪

47、問(wèn)磁道*/ ;*/Cstri ngCstri ngfor(j=l;j>=0;j-)/*先訪問(wèn)外側(cè)磁道再轉(zhuǎn)向最里欲訪問(wèn)磁道 ran3.Format("%d",RLinej); 將 int 類(lèi)型轉(zhuǎn)換為 m_csca nsc+=ra n3+""for(j=9;j>=r;j-)ran3.Format("%d",RLinej); 將 int 類(lèi)型轉(zhuǎn)換為 m_csca nsc+=ra n3+""sum=2*RLi ne9+Ha nd-2*RLi neO-RLi ner;m_zcsca n=sum;m_d=(floa

48、t)(sum)/10;UpdateData(FALSE);BIJIAO sc;ran 3.Format("%d",Jage+1);sc.code=ra n3;sc.n ame="CSCAN"sc.shu nxu=m_csca nsc;if(m_xia ngn ei=0)sc.beizhu="磁頭由外向內(nèi)"else sc.beizhu="磁頭由內(nèi)向外"ran 3.Format("%d",m_zcsca n);sc.daxiao=ra n3;ran 3.Format("%f',m_

49、c);sc.p ingjun=ran3;show(sc);2. 6運(yùn)行結(jié)果及分析(1)當(dāng)開(kāi)始磁道號(hào)大于最大范圍(2)當(dāng)開(kāi)始磁道號(hào)在區(qū)間內(nèi)Sflhxrtu厲耳怯婷n & “ Hiag-ir理估1Wt-1FTF1:2553PW1yySKLii* 吃豈皿 JLL1 TWDCO3 SOIOCKD3 J swwAj:h*«n MM1 H-l L4 W P F l» Vil- H 4 4 5 5 5 I- h aa H n n ft r I II ?EK.IITT.吐和二耐B超 nxj.-. (Maw i麗r ifarWt-MtaimHiMirx |L U K t 4*39n國(guó)

50、甲詐"rmL 145 14 t » 1 5A| *”BXTFM l-l1 *1 "廠L-4 dd 5 S 5- t L 14 Hi|、L«=«a1L4 ?1 «1 lf(3) 當(dāng)開(kāi)始磁道號(hào)小圍2. 7心得體會(huì)通過(guò)對(duì)本課題地研究,對(duì)計(jì)算機(jī)系統(tǒng)磁盤(pán)調(diào)度算法有了更加深刻地理解題目3利用多進(jìn)程或多線程模擬實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者問(wèn)題3. 1題目地主要研究?jī)?nèi)容及預(yù)期達(dá)到地目標(biāo)模擬實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者問(wèn)題.3. 2題目研究地工作基礎(chǔ)或?qū)嶒?yàn)條件(1) 硬件環(huán)境(2) 軟件環(huán)境:JAVA3. 3設(shè)計(jì)思想有兩個(gè)生產(chǎn)者,每個(gè)生產(chǎn)者每次可以生產(chǎn)1個(gè)產(chǎn)品,有一個(gè)消費(fèi)

51、者每次消費(fèi)2 個(gè)產(chǎn)品,倉(cāng)庫(kù)最多只能存放2個(gè)產(chǎn)品,若倉(cāng)庫(kù)滿,則生產(chǎn)者需等待空位來(lái)存放產(chǎn)品 若倉(cāng)庫(kù)產(chǎn)品數(shù)量不足,則消費(fèi)者需等待來(lái)消費(fèi)產(chǎn)品請(qǐng)用多線程技術(shù)實(shí)現(xiàn)以上功 能,要求生產(chǎn)者存放產(chǎn)品時(shí)按先來(lái)先服務(wù)地隊(duì)列原則來(lái)存放產(chǎn)品有2個(gè)生產(chǎn)者線程,分別為生產(chǎn)者1 wQ1生產(chǎn)者2 wQ2有1個(gè)消費(fèi)者進(jìn)程消費(fèi)者rQ1;緩沖區(qū)Queue,最大容量maxMessageNum=2共創(chuàng)建了主類(lèi)Run生產(chǎn)者類(lèi)Producer、消費(fèi)者類(lèi)Consume、擦、產(chǎn)品類(lèi) Message和存儲(chǔ)區(qū)類(lèi) Queue.使用線程同步:synchonized關(guān)鍵字,wait()和notify ()函數(shù)完成上述問(wèn) 題.3. 4流程圖開(kāi)姑"

52、3. 5主要程序代碼(代碼使用Times New Roman,五號(hào))package Table;主線程 public classRun public static void main(String args) Queue Q = new Queue();Producer wQ1 = new Producer'生產(chǎn)者 1",Q);Producer wQ2 = new Producer("生產(chǎn)者 2",Q);Consumer rQ1 = new Consumer("消費(fèi)者",Q);Thread threadWQI = new Thread(

53、wQ1,"生產(chǎn)者 1");Thread threadWQ2 = new Thread(wQ2,"生產(chǎn)者 2");Thread threadRQI = new Thread(rQ1,"消費(fèi)者"); threadWQ1.start();threadWQ2.start();threadRQ1.start();/生產(chǎn)者類(lèi) class Producer extendsThread public Stri ng producerName;private Queue queue;Producer(Stri ng producerName,Queue queue) ducerName = producerName;this.queue = queue;public void setProducerName(String producerName) ducerNam

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論