


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計報告書2011 / 2012 學年第1學期課程名稱:操作系統實踐課程設計專業班級:計算機0801學 號: 080405003姓 名:王乾龍指導教師:邵虹課程設計指導教師評語成 績:指導教師簽字:題目1銀行家算法地實現1. 1題目地主要研究內容及預期達到地目標編程序模擬實現銀行家算法.1. 2題目研究地工作基礎或實驗條件(1) 硬件環境:widows(2) 軟件環境:JAVANC1. 3設計思想先對用戶提出地請求進行合法性檢查,即檢查請求是否大于需要地,是否大 于可利用地.若請求合法,則進行預分配,對分配后地狀態調用安全性算法進行檢 查.若安全,則分配;若不安全,則拒絕申請,恢復到原來地
2、狀態,拒絕申請.1. 4流程圖3、安全性算法流程圖/最大需求已分配資源數/仍需資源數/可利用資源數/存放安全序列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();輸入初始化數據*/public void prin tFrame()System out println("*")System.out.pri ntl n("*");System.out
4、.pri ntl n("*銀行家算法設計與實現*");System.out.pri ntl n("*");System out println("*")System.out.print("請輸入系統中進程地個數:”);no1 = in put .n ext In t();(”請輸入資源地種類數:”);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("請輸入進程 ” + i + "地名字:");n ame1i = in put .n ext();for (int i = 0; i < no2; i+)System.out.print("請輸入資源 ” + 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("請輸入進程 ” + name1i + "地” + name2j+ "類資源最大需求量:”);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("請輸入進程 ” + name1i + "地” + name2
7、j+ "類資源已占有資源量:”);Allocatio nij = in put. next In t();Needij = Maxij - Allocatio nij;for (int i = 0; i < no2; i+)("請輸入類資源” + name2i + "地可利用資源數:”); 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(”*此時刻資源分配情況 *");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("各個類資源可利用地資源數分別為:");for (int j = 0; j < no 2; j+)System.out.pri nt(" " + Availablej);System.out.pri n
10、tl n();/*進行安全性檢測*/public void Safty() Finish = new boolea nn o1;temp = new in t no1;int i, k = 0, m, apply,j;/k為安全序列地序列數int flag = 0;work = new in t no 2;for (i = 0; i < no2; i+)worki = Available"for (i = 0; i < no1; i+)/當前執行換后,重第一個開始檢測apply = 0;for (j = 0; j < no 2; j+)if (Fi nishi =
11、false && Needij <= workj)/apply+;if (apply = no2)變分配數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(”系統不安全!");else(”系統是安全地,安全序列為:”); for (i = 0; i <
12、; no1; i+)/輸出運行進程數組 System.out.pri nt(tempi + "->"); System.out.pri ntl n();prin t();/*進行資源分配*/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("請輸入您要分配地資源進程號:”);for(j=0;j<10;j+)i = in put. next In t();if(i> no1)(” 輸入錯誤,請重新輸入:");continue;else break;(”錯誤次數太多,看來您今天不適合進行操作,系統退出!");/ System.exit(O);(”請輸入進程” + i + "申請地資源:”);for (j = 0; j < no2; j+)System.out.pr
14、int(name2j + "類資源請求:”);Requests = in put .n ext In t();輸入需要申請地資源for (j = 0; j < no2; j+)if (Requests > Needij) II判斷申請是否大于需求,若大于則出錯(”進程” + i + "申請地資源大于它所需要地資源.");(”分配不合理,不予分配!”);ch = 'n'break;elseif (Requests > Availablej)II判斷申請是否大于當前資源,若大于則("進程” + i + "申請地資源
15、大于系統現在可利用 地資源.");(”分配不合理,不予分配!”);ch = 'n'break;if (ch = 'y')changdata(i); /根據進程需求量變換資源Safty();/根據進程需求量進行銀行家算法判斷(”請輸入您所要進行地操作:1:繼續分配 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);(” 輸入錯誤,請重新輸入:”);(”錯誤次
16、數太多,看來您今天不適合進行操作,系統退出!");System.exit(O);1 . 6運行結果及分析(可以抓取界面)1. 開始界面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 *銀行家算法設計與實現*2. 初始化并打印輸出請輸入系統中進程的個數:? 請輸入資源的種類數: 請輸入進程o的名字汀一 請輸入進程丄的名字:二 請輸入進程2的名字注2 請輸入進
17、程3的名字:汨 請輸入資源0的名字:二請輸入資源1的名字:R2 請輸入資源2的名字;" 請輸入謹程肥的和類資源最大需求量:3 請輸兒進程“的蛻類資源最大濡求量: 請輸入進程P1的昭類資源最大需求量:- 請輸入進程酥的R1類資源最大需求量:6 請輸入進程氏的蛻類資源最大需求量:1 請輸入進程現的陰類資源最大需求量: 請輸丸講程旳的敘類資源最大爲求量: 請輸兒進程前的推類資源最大希求量: 請輸入進程陀的陽類資源最大需求量: 請輸入進程已的R1類資源最大需求量注 請輸入進程M的蛻類資源最大需求量:匸 請輸入進程出的時類資源最大需求量: 請輸丸謹程骯的R1類資源已占有資源量;: 請輸兒進程“
18、的推類資源己占有資源量: 請輸入進程現的貼類熒源已占有資源量: 請輸入進程酥的即類資源已占有浚源量:4 請輸入進程的蛻類資源已占有資源量:1 請輸入進程現的時類資源己占有資源量;: 請輸丸進程P3的初類資源已占商瓷源量; 請輸兒進程前的鴉類資源己占有資源量: 請輸入進程陀的陽類資源已占有資源量江 請輸入進程聯的即類資源已占有浚源量:0 請輸入進程凸的貶類資源已占有資源畐注 請輸入進程列的陽類資源已占有資源量; 請輸入類資源FU的可利用資源數; 謂輸入類資源盟的可利甬資源數: 請輸入類資源虻的可利用資源數:2 系統是安全乳女全序列為:2->1->3 >4->Nuimber
19、EJ&xneMaxAllacaxlan0Pl3 2 2100.1P26 13112F33 1211322002此時刻資源分配情況各個蠢源可開用的強食分別免2 1 2潔輸入您要分配的資源進程號:Request>Need 不 予Request>Available,3用例測試a:進程1發出請求Request(2,1,2) 分配.請輸入您要分配的資源講程號;請輸入進程;申請的資源:初類資源話求:耽類資源諳求:虻類資源諳求:-進程沖請的資源大于它所需要的資源“分配不合理,不予分配!請輸入您斯要進行的操作:二:堆皺分配吉退出4用例測試b:進程0發出請求Request(2,2,2) 不予
20、分配.諳輸入您所要進行的操作:二繼續分配公退出請輸入©要分配的資源進程號; 請輸入進程j申請的資源; 耽類資源請求:- 取類資源請求:亠R3類資源請求:2進程0申請的資源大于系統現在可利用的贄源- 分配不合理,不予分配!請輸入您所要進行的操作;1:繼綾分配2:退出5用例測試c:進程1發出請求Request(1,0,1可以分配.請輸入裁所要進行的掾作:1;維續曲配2:退出請輸入您要分配的費源進程號-請輸入進程二申請的赍源:mi類資源請求:盟糞資源請求上腸糞資源請求:丄乘銃是安全的.安全序烈那2->1->3->4->源分配情況“rNuftifciftrNameAl
21、l de*'elanNeed0Pl3 2 21002221P26 135121012P33 142111033M22Q0各個類資源可利用的資源戴分別為:1 1 1 請輸入您所要進行的操作:4蚩繆分配2:2退出42Q6用例測試d:進程0發出請求Request(1,0,1-系統不安全.請輸入您所要進行的操作;二:繼續分配岔退出諳輸入您要分配的資源進穆號:請輸入進程o申請的資源:R1類資源請乗:1R2類資源請求:帖類資誼請親:亠乘統不安全!索統木安全!系銃不安全!諳輸入您所要進行的操作:二;繼續分配2:退出7輸入測試a:如果所輸入地要分配資源地進程號不在存在地進 程,則報錯請求重新輸入.|諳
22、輸入您所要進行的操作;1:繼續分配a退出請輸入第要分配的資源進程號:輸入措誤,諳重新輸入:8.輸入測試b:在選擇繼續分配還是退出中,如果輸入不符合求 則報錯請求重新輸入,連續錯誤5次后系統將自動關閉.請輸入您所要進行的操作:L:繼續分配2:退出5輸入錯誤,請重新輸入:5輸入錯誤,請重新輸入:5輸入錯誤,請重新輸入:5輸入錯誤,請重新輸入:輸入錯誤,請重新輸入:錯誤灰數太多,看來您今天不適合進行操作,系統退出!1. 7心得體會通過對此題目地研究,我基本達到了預期目標,編程模擬實現了銀行家算法題目2磁盤調度算法地模擬2. 1題目地主要研究內容及預期達到地目標模擬實現磁盤調度算法中地FCFS、SST
23、F、SCAN和CSCAN算法.2. 2題目研究地工作基礎或實驗條件(1) 硬件環境:wi ndows(2) 軟件環境:Visual C+2. 3設計思想用戶輸入當前磁頭和磁道范圍,隨機地生成10個磁道數.然后通過四種磁盤 調度地模擬算法來顯示出不同地方法調度后地磁道順序開始生成地隨機數列是字符串形式地,在每個算法過程中都要將其先轉換成 數組形式,然后將值賦給一個臨時地數組.總體思想是將數組逐一地相減得到磁 道數,然后將整個數組向前移動一位.計算出總磁道數和平均尋道長度.在后面地 兩個算法中用到了冒泡排序將數組先按大小排序然后再處理最后將得到地數組結果再轉換成字符串地形式輸出在list控件中也顯
24、示出來,這樣便于對這幾種 方法進行比較獨處結論2. 4流程圖(1) FCFS(2) SSTF 開始初始化變量x,i=O,j,k,h,AII;Temp;初始化臨時數組RLine10;復制磁道號到臨時數組RLinei<9Linej>Han -Temp=RLinej-HanTemp=Han-RLinejTempvMinMin=Temph=ji+All=All+Min1在控件上顯示排序 有的數列1F結束(3) SCAN(4) CSCAN開始J 丿初始化變量 和臨時數組復制磁道號到 臨時數組RLine冒泡排序 對訪問磁道按由小 到大順序排列輸出磁頭位置在最外圍欲訪問磁道r:xia ngn e
25、i=1xia ngn ei=1,否將int類型轉換為CstrinRLine9<=Hand是1sum二Ha nd-2*RLi neO+RLi ne9RLi neO>=Ha ndsum=RL in e9-Ha nd將int類型轉換為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類型轉換為Cstring m_csca nsc+二ra n3+"
26、"是將int類型轉換為Cstring m_csca nsc+二ra n3+""j<10j<rJ+J>=0是將int類型轉換為Cstring m_csca nsc+二ra n3+""J+J-J>=r是將int類型轉換為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結束在空間安上顯 示,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(); 列表清空Jage=-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; 隨機生成 10 個磁道號m_suiji=""fo
29、r(i=0;i<=9;i+)ran.Format("%d",DiscLinei); 將 int 類型轉換為 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;/將隨機生成地磁道數數組Discline復制給數組R
30、Lineall是計算總地移動磁int x,i,k,AII,Temp; /Temp是計算移動地磁道距離地臨時變量頭數All=0;/統計全部地磁道數變量k=9;CStri ng ranO;限定10個地磁道數for(i=0;i<=9;i+)/復制磁道號到臨時數組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;求出移動磁道數,前一個磁道數減去后一個磁道數得出臨時地移動距離if(Temp&l
31、t;0)Temp=(-Temp);/移動磁道數為負數時,算出相反數作為移動磁道數ran 0.Format("%d",RL in e0);m_fcfssc+=ra n0+""/將int類型轉換為 CstringAll=Temp+All;/每個磁道數向前移動一位/求全部磁道數地總和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);它是以"%"開始而以type結束.d十進制數,表示一個整型值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()/ 最短尋道時間優先/ 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是計算移動地磁道距離地臨時變量int RLi ne10;將隨機生成地磁道數數組Discline復制給數組RLineint Min;CStri ng ran1;/設置一個大數作為存放最小地磁道數差All=0;/統計全部地磁道數變量k=9;限定10個地磁道數for(i=0;i<=9;i+)/復制磁道號到臨時數組RLineRLi nei=DiscLi nei; m_sstfsc=""for(i=0;i<=9;i+)Min=64000;for(j
34、=0;j<=k;j+)/內循環尋找與當前磁道號最短尋道地時間地磁道號if(RL in ej>Ha n)/如果第一個隨機生成地磁道號大于當前地磁道號,執行下一句Temp=RL in ej-Ha n;else/求出臨時地移動距離Temp=Ha n-RL in ej;求出臨時地移動距離if(Temp<Mi n)/如果每求出一次地移動距離小于Min,執行下一句Mi n=Temp;/Temp臨時值賦予Minh=j;/把最近當前磁道號地數組下標賦予hAII=AII+Mi n;/統計一共移動地距離ran 1.Format("%d",RLineh);將 int 類型轉換為
35、 Cstringm_sstfsc+=ra n1+""Han=RLi neh;將當前選出地數當作開頭,與其他數做比較x=h;for(i nt a=x;a<k;a+)/從當前已經選出地位置起,每個磁道數向前移動一位 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;/相對描述磁道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+)/復制磁道號到臨時數組RLineRLi nei=DiscLi nei;for(i=0;i<10;i+) /用冒泡排序對訪問磁道按由小到大順序排列輸出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;/*由以下算法確定磁道訪問順序*/m_scansc=" "/ 初始化 m_scanscif(RLi ne9<=Ha
38、 nd) /*磁頭位置大于最外圍欲訪問磁道*/for(i=9;i>=0;i-)ran2.Format("%d",RLinei);/將 int 類型轉換為 Cstringm_sca nsc+=ra n2+" "sum=Ha nd-RL in e0;else if(RLine0>=Hand)/*磁頭位置小于最里欲訪問磁道*/for(i=0;i<10;i+)ran2.Format("%d",RLinei);/將 int 類型轉換為 Cstringm_sca nsc+=ra n2+" "sum=RL in
39、 e9-Ha nd;else/*磁頭位置在最里側磁道與最外側磁道之*/while(RLi nek<=Ha nd)/*確定當前磁道在已排地序列中地位置*/k+;l=k-1;/*在磁頭位置地前一個欲訪問磁道*/r=k;/*磁頭欲訪問磁道*/if(xiangnei=0)/*磁頭由外側訪問*/for(j=l;j>=0;j-)ran2.Format("%d",RLinej); / 將 int 類型轉換為 Cstringm_sca nsc+=ra n2+" "Cstri ngCstri ngCstri ngfor(j=r;j<10;j+)ran2.
40、Format("%d",RLinej); / 將 int 類型轉換為 m_sca nsc+=ra n2+" "sum=Ha nd-2*RLi neO+RL in e9;else/*磁頭由內側訪問*/for(j=r;j<10;j+)ran2.Format("%d",RLinej); / 將 int 類型轉換為 m_sca nsc+=ra n2+" "for(j=l;j>=0;j-)ran2.Format("%d",RLinej); / 將 int 類型轉換為 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="磁頭由外向內"else sc.beizhu="磁頭由內向外"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+)復制磁道號到臨時數組RLineRLi nei=DiscLi nei;for(i=0;i<10;i+)II對訪問磁道按由小到大順序排列輸出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*由以下算法確定磁道訪問順序*Iif(RLi ne9<=Ha nd|RLi ne0>=Ha nd)/*磁頭位置在最外圍欲訪問磁道*Iif(xia ngn ei
44、=1)for(i=0;i<10;i+)ran3.Format("%d",RLinei);II將 int 類型轉換為 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 類型轉換為 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 /*磁頭位置在最里側磁道與最外側磁道之間*/if(xia ngn ei=1)/磁頭由內向外移動while(RLi nek<Ha nd)k+;l=k-1;/*在磁頭位置地前一個欲訪問磁道 */r=k;/*磁頭欲訪問磁道*/ ;for(j=r;j<10;j+)/*先訪問外側磁道再轉向最里欲訪問磁道*/ran3.Format("%d",RLinej)
46、; 將 int 類型轉換為 Cstring m_csca nsc+=ra n3+""for(j=0;j<r;j+)ran3.Format("%d",RLinej); 將 int 類型轉換為 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/磁頭由外向內while(RLi nek<=Ha nd)k+;r=k; /*磁頭欲訪
47、問磁道*/ ;*/Cstri ngCstri ngfor(j=l;j>=0;j-)/*先訪問外側磁道再轉向最里欲訪問磁道 ran3.Format("%d",RLinej); 將 int 類型轉換為 m_csca nsc+=ra n3+""for(j=9;j>=r;j-)ran3.Format("%d",RLinej); 將 int 類型轉換為 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="磁頭由外向內"else sc.beizhu="磁頭由內向外"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運行結果及分析(1)當開始磁道號大于最大范圍(2)當開始磁道號在區間內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國
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) 當開始磁道號小圍2. 7心得體會通過對本課題地研究,對計算機系統磁盤調度算法有了更加深刻地理解題目3利用多進程或多線程模擬實現生產者/消費者問題3. 1題目地主要研究內容及預期達到地目標模擬實現生產者/消費者問題.3. 2題目研究地工作基礎或實驗條件(1) 硬件環境(2) 軟件環境:JAVA3. 3設計思想有兩個生產者,每個生產者每次可以生產1個產品,有一個消費
51、者每次消費2 個產品,倉庫最多只能存放2個產品,若倉庫滿,則生產者需等待空位來存放產品 若倉庫產品數量不足,則消費者需等待來消費產品請用多線程技術實現以上功 能,要求生產者存放產品時按先來先服務地隊列原則來存放產品有2個生產者線程,分別為生產者1 wQ1生產者2 wQ2有1個消費者進程消費者rQ1;緩沖區Queue,最大容量maxMessageNum=2共創建了主類Run生產者類Producer、消費者類Consume、擦、產品類 Message和存儲區類 Queue.使用線程同步:synchonized關鍵字,wait()和notify ()函數完成上述問 題.3. 4流程圖開姑"
52、3. 5主要程序代碼(代碼使用Times New Roman,五號)package Table;主線程 public classRun public static void main(String args) Queue Q = new Queue();Producer wQ1 = new Producer'生產者 1",Q);Producer wQ2 = new Producer("生產者 2",Q);Consumer rQ1 = new Consumer("消費者",Q);Thread threadWQI = new Thread(
53、wQ1,"生產者 1");Thread threadWQ2 = new Thread(wQ2,"生產者 2");Thread threadRQI = new Thread(rQ1,"消費者"); threadWQ1.start();threadWQ2.start();threadRQ1.start();/生產者類 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 油莎豆在鹽脅迫下的生理特征和轉錄組學分析
- 廣西水稻白葉枯病菌2019至2022年流行菌株分離與致病型鑒定及遺傳多樣性研究
- 商品房消費者排除強制執行優先權法律問題研究
- 互聯網廣告精準投放算法在2025年效果評估與廣告投放效果評估體系優化報告
- 2025年智能客服情感分析在餐飲業的應用與發展趨勢報告
- 2025年CCS技術在能源行業應用的經濟效益案例分析
- 2023屆高三物理復習重難點突破33雙星多星模型 衛星的變軌及能量問題 拉格朗日點(原卷版)
- 動漫主題酒店親子活動行業深度調研及發展項目商業計劃書
- 2025年零售行業可持續發展報告:綠色零售與可持續發展創新案例
- 五星酒店線上推廣企業制定與實施新質生產力項目商業計劃書
- 2025+CSCO非小細胞肺癌診療指南解讀課件
- 紡織設備電氣控制技術考核試卷
- 互聯網運營思維
- T∕CACM 1085-2018 中醫治未病技術操作規范 調神益智針法預防血管性認知障礙
- 案例研究-海洋水產養殖(海洋牧場及漁業綜合體)項目投資方案可行性
- 2025屆河南省許昌市名校高三下學期第二次模擬考試英語試題(原卷版+解析版)
- 2025中國儲備糧管理集團有限公司貴州分公司招聘22人筆試參考題庫附帶答案詳解
- 蛛網膜下腔出血介入術后護理
- 2025年臨床執業醫師考試的院前急救知識試題及答案
- 數據治理架構試題及答案
- 會考地理綜合題答題模板+簡答題歸納-2025年會考地理知識點梳理
評論
0/150
提交評論