




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《操作系統(tǒng)》課程設(shè)計(jì)題目:進(jìn)程通信與進(jìn)程同步機(jī)制實(shí)踐學(xué)院名稱:計(jì)算機(jī)科學(xué)與通信工程學(xué)院班級(jí)學(xué)號(hào):學(xué)生姓名:教師姓名:教師職稱:2016年1月8日
目錄一課程設(shè)計(jì)內(nèi)容二開發(fā)環(huán)境二原理五主要數(shù)據(jù)結(jié)構(gòu)和流程六原語對(duì)應(yīng)的函數(shù)及算法七測(cè)試結(jié)果與分析八總結(jié)九源程序清單一課程設(shè)計(jì)的內(nèi)容【設(shè)計(jì)內(nèi)容】某銀行提供6個(gè)服務(wù)窗口(3個(gè)對(duì)私服務(wù)窗口,2個(gè)對(duì)公服務(wù)窗口,1個(gè)理財(cái)服務(wù)窗口、一臺(tái)取號(hào)機(jī)和20個(gè)供顧客等待的座位。顧客到達(dá)銀行時(shí),若有空座位,則到取號(hào)機(jī)上領(lǐng)取一個(gè)號(hào),等待叫號(hào);若沒有空座位,則在門外等待或離開。取號(hào)機(jī)每次僅允許一位顧客使用,有對(duì)公、對(duì)私和理財(cái)三類號(hào),每位顧客只能選取其中一個(gè)。當(dāng)營(yíng)業(yè)員空閑時(shí),通過叫號(hào)選取一位顧客,并為其服務(wù)?!菊f明】(1)可模擬設(shè)立一個(gè)服務(wù)時(shí)間區(qū)間如9:00-17:00,也可限定最大服務(wù)人數(shù);(2)顧客達(dá)到時(shí)間隨機(jī),辦理對(duì)私、對(duì)公、理財(cái)業(yè)務(wù)隨機(jī),每位顧客服務(wù)時(shí)間可設(shè)定在一定范圍內(nèi)。這些都可通過隨機(jī)數(shù)產(chǎn)生。(3)取號(hào)時(shí)顧客拿到的號(hào)含有號(hào)碼和等待的人數(shù),例如A、B、C分別代表對(duì)私、對(duì)公、理財(cái),“號(hào)碼:A05,有2人等待”表示取的是對(duì)私服務(wù)號(hào),編號(hào)是05,有2人等待辦理對(duì)私業(yè)務(wù)。(4)成績(jī)?cè)u(píng)定:平時(shí)占60%,實(shí)驗(yàn)報(bào)告占40%;其中平時(shí)60%包括考勤和學(xué)習(xí)態(tài)度、學(xué)習(xí)積極性等占20%,兩次檢查,每次檢查各占20%。【檢查說明】第一次檢查:時(shí)間18周周三-四,檢查同步與互斥算法與API熟悉情況第二次檢查:時(shí)間18周周五上午與晚上,檢查最終程序完成情況?!疽蟆空f明設(shè)置哪些信號(hào)量?信號(hào)量的含義和初始值是什么?并用信號(hào)量和P、V操作寫出進(jìn)程的同步算法。(注:該內(nèi)容包含在設(shè)計(jì)報(bào)告中,并在第一次檢查時(shí)檢查)查閱并自學(xué)進(jìn)程、線程的創(chuàng)建與撤銷、信號(hào)量、P操作、V操作等相關(guān)原語的系統(tǒng)調(diào)用。(注:該內(nèi)容包含在設(shè)計(jì)報(bào)告中,并在第一次檢查時(shí)檢查)在Linux或Windows或Unix環(huán)境下,采用系統(tǒng)調(diào)用中的進(jìn)程或線程的創(chuàng)建與撤銷、信號(hào)量、P操作、V操作,編程解決上述問題,并完成調(diào)試與測(cè)試工作。(注:該內(nèi)容包含將并在第二次檢查時(shí)檢查)打?。海ㄗ⒁猓河捎诙鄠€(gè)進(jìn)程共享一個(gè)顯示器或文件,需要互斥訪問)各進(jìn)程的初始狀態(tài)信息;中間狀態(tài)變化信息;最終狀態(tài)信息。例如,顧客到達(dá)時(shí)的時(shí)間狀態(tài)信息,領(lǐng)取的號(hào)碼信息,等待時(shí)間,接收服務(wù)的服務(wù)窗口信息、服務(wù)時(shí)間,離開時(shí)間等信息。目的通過課程設(shè)計(jì)模擬銀行辦理業(yè)務(wù)的情景,使用pv操作實(shí)現(xiàn)互斥與同步。來進(jìn)一步熟悉課堂上講授的pv操作原語,掌握進(jìn)程的互斥與同步的知識(shí)。二開發(fā)環(huán)境windows操作系統(tǒng),使用Java語言,在eclipse上實(shí)現(xiàn)三原理及算法1用一個(gè)線程來模擬一位客戶,客戶到來時(shí)間,離開時(shí)間,都是通過獲取系統(tǒng)的時(shí)間來體現(xiàn)。中間等待及辦理業(yè)務(wù)的時(shí)間則通過產(chǎn)生的一定范圍的隨機(jī)數(shù)對(duì)線程進(jìn)行睡眠來模擬的2總共分為三個(gè)類,第一個(gè)類是包括主函數(shù)的類,用來開啟程序并創(chuàng)建線程對(duì)象。第二個(gè)類是線程類,包括線程的定義和線程的方法run方法,在run方法內(nèi)對(duì)實(shí)現(xiàn)主要程序的功能的函數(shù)進(jìn)行調(diào)用。第三個(gè)類,就是存儲(chǔ)的需要用到的主要變量,計(jì)數(shù)器,及實(shí)現(xiàn)程序功能的三個(gè)函數(shù),供所有的線程公用。三個(gè)函數(shù)。第一個(gè)函數(shù)進(jìn)行座位的檢測(cè),有座位則進(jìn)入銀行,沒有在在外等待,以及獲取此時(shí)運(yùn)行該線程的名字,作為一個(gè)客戶的標(biāo)識(shí),并通告該客戶到來及此時(shí)的時(shí)間。第二個(gè)函數(shù)實(shí)現(xiàn)取號(hào)功能,其中包括判斷取號(hào)機(jī)是否有人使用,取號(hào)時(shí)根據(jù)隨機(jī)數(shù)產(chǎn)生三種不同的票號(hào),同時(shí)該票號(hào)的內(nèi)容還包括票的序號(hào)和此類票號(hào)對(duì)應(yīng)的服務(wù)窗口現(xiàn)在還有多少人在等待。第三個(gè)函數(shù)是服務(wù)功能,包括根據(jù)票號(hào)判斷此時(shí)該類窗口是否有已滿,滿了就等待,沒滿則去辦理業(yè)務(wù)。辦理業(yè)務(wù)通過產(chǎn)生隨機(jī)數(shù)對(duì)線程進(jìn)行休眠,客戶離開時(shí),通告客戶的服務(wù)時(shí)間,及離開的時(shí)間。四主要數(shù)據(jù)結(jié)構(gòu)和流程六個(gè)信號(hào)量一個(gè)代表大廳的座位,初值為20。一個(gè)代表取號(hào)機(jī),初值為1,。三個(gè)窗口,初值分別為3,2,1。一個(gè)用來實(shí)現(xiàn)對(duì)記錄大廳人數(shù)的變量的互斥操作。四個(gè)變量一個(gè)代表辦理業(yè)務(wù)的總?cè)藬?shù)。三個(gè)分別代表三個(gè)窗口的等待人數(shù)。票號(hào)的格式為服務(wù)+票號(hào)+等待人數(shù)。例如A-22-3表示辦理對(duì)私服務(wù),票號(hào)為22,該窗口還有3人在等待。等待時(shí)間,服務(wù)時(shí)間,均是調(diào)用函數(shù)產(chǎn)生隨機(jī)數(shù)。流程圖五原語對(duì)應(yīng)函數(shù)及pv算法創(chuàng)建線程:繼承Thread類,實(shí)現(xiàn)run方法信號(hào)量semaphorep操作:acquirev操作:releaseSemaphoreZcount,Qcount,counta,countb,countc,countx;Zcount.value=20;Qcount.value=1;Counta.value=3;Countb.value=2;Countc.value=1;Countx.value=1;Process{P(&zcount);{p(&qcount);取票ABCReturnA或者B或者C;v(&qcount);If(A){P(&counta);V(&zcount);辦理服務(wù)V(&counta);}Elseif(B){P(&countb);V(&zcount);辦理服務(wù)V(&countb);}Else{P(&countc);V(&zcount);辦理服務(wù)V(&countc);}}}六測(cè)試結(jié)果與分析分析:進(jìn)程的名字標(biāo)志客戶。由于線程太快,設(shè)置的休眠時(shí)間較短,所以存在同一秒級(jí)有多個(gè)用戶到達(dá)。服務(wù)時(shí)間為1000,2000,3000毫秒隨機(jī)。到來及離開都是分別獲取此時(shí)系統(tǒng)的時(shí)間。七總結(jié)經(jīng)過本次的實(shí)驗(yàn)對(duì)pv操作有了更進(jìn)一步的理解,從更深層次了解了同步與互斥的原理及實(shí)現(xiàn)的過程。設(shè)計(jì)過程遇到了各種問題。在設(shè)計(jì)pv操作時(shí)由于座位加上窗口共可以存放26個(gè)人,盡管信號(hào)量設(shè)置的是20,但是需要在每一個(gè)人申請(qǐng)到窗口時(shí)即釋放座位。就是在釋放窗口之前。在設(shè)計(jì)程序時(shí)關(guān)于每個(gè)線程共享的變量以及每個(gè)線程私有的變量的問題,比如取到的號(hào)即為每個(gè)線程的私有變量。最后經(jīng)過一周半的課程設(shè)計(jì)之后,對(duì)編程,解決問題的能力,都有了一定的提升。九源程序清單第一個(gè)類packagebank1;publicclassroutine{publicstaticcommoncomm=newcommon(); @SuppressWarnings("deprecation") publicstaticvoidmain(String[]args){ inti; for(i=1;i<=20;i++){ clientclii=newclient(comm); clii.start(); } }}第二個(gè)類packagebank1;importmon;importjava.util.Random;importjava.util.concurrent.Semaphore;publicclassclientextendsThread{privatecommoncomm;Stringresult=newString(); publicclient(commonthiscomm){ //TODO自動(dòng)生成的構(gòu)造函數(shù)存根 comm=thiscomm; }publicvoidrun(){ Randomran=newRandom(); try{ sleep((ran.nextInt(6)+1)*2000); }catch(InterruptedExceptione1){ //TODO自動(dòng)生成的catch塊 e1.printStackTrace(); } comm.sit(this.getName()); result=comm.qu(this.getName()); comm.handle(result,this.getName()); try{ sleep(10); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); }}}第三個(gè)類packagebank1;importjava.util.Date;importjava.util.Random;importjava.util.concurrent.Semaphore;publicclasscommon{ privateintzcount; privateintaa,bb,cc; Semaphoresemaphore=newSemaphore(10); Semaphoresemaphoreq=newSemaphore(1); Semaphoresemaphorea=newSemaphore(3); Semaphoresemaphoreb=newSemaphore(2); Semaphoresemaphorec=newSemaphore(1); Semaphoresemaphorez=newSemaphore(1); Randomran1=newRandom(); publiccommon(){ zcount=1; aa=-3; bb=-2; cc=-1; } publicvoidsit(Stringname){ try{ semaphore.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } Datedate=newDate(); System.out.println("客戶:"+name+"在時(shí)間"+date.toString()+":到達(dá)"+"\n"); }publicStringqu(Stringname){ Stringa=newString(); try{ semaphoreq.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } intx; inty; Randomran=newRandom(); x=ran.nextInt(9); y=zcount; //System.out.println(x); if(x<3){ aa++; intaaa; if(aa<0) aaa=0; else{aaa=aa;} a="A"+"--"+y+"該服務(wù)有"+aaa+"人等待"; System.out.println("客戶:"+name+":取到號(hào):"+a+"\n"); try{ semaphorez.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } zcount++; semaphorez.release(); } elseif(3<=x&&x<=6){ bb++; intbbb; if(bb<0) bbb=0; else{bbb=bb;} a="B"+"--"+y+"該服務(wù)有"+bbb+"人等待"; System.out.println("客戶:"+name+":取到號(hào):"+a+"\n"); try{ semaphorez.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } zcount++; semaphorez.release(); } else{ cc++; intccc; if(cc<0) ccc=0; else{ccc=cc;} a="C"+"--"+y+"該服務(wù)有"+ccc+"人等待"; System.out.println("客戶:"+name+":取到號(hào):"+a+"\n"); try{ semaphorez.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } zcount++; semaphorez.release(); } semaphoreq.release(); returna; }publicvoidhandle(Stringb,Stringname){ if(b.charAt(0)=='A'){ try{ semaphorea.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } semaphore.release();System.out.println(name+":正在對(duì)私服務(wù)窗口辦理業(yè)務(wù)"+"\n");intt=(ran1.nextInt(3)+1)*1000;try{ Thread.sleep(t);}catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace();}aa--;semaphorea.release();Datedate=newDate();System.out.println(name+"服務(wù)時(shí)間"+t+"毫秒在"+date+":離開"+"\n"); } elseif(b.charAt(0)=='B'){ try{ semaphoreb.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } semaphore.release(); System.out.println(name+":正在對(duì)公服務(wù)窗口辦理業(yè)務(wù)"+"\n"); intt=(ran1.nextInt(3)+1)*1000; try{ Thread.sleep(t); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } bb--; semaphoreb.release(); Datedate=newDate();System.out.println(name+"服務(wù)時(shí)間"+t+"毫秒在"+date+":離開"+"\n"); } elseif(b.charAt(0)=='C'){ try{ semaphorec.acquire(); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } semaphore.release(); System.out.println(name+":正在理財(cái)服務(wù)窗口辦理業(yè)務(wù)"+"\n"); intt=(ran1.nextInt(3)+1)*1000; try{ Thread.sleep(t); }catch(InterruptedExceptione){ //TODO自動(dòng)生成的catch塊 e.printStackTrace(); } cc--;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 精裝臥室出租合同范本
- OEM加工食品合同范例
- 公路路燈安裝合同范例
- 兼職導(dǎo)游勞務(wù)合同范本
- 醫(yī)院廣告合同范本
- 合肥裝潢公司合同范本
- 單位長(zhǎng)期租車合同范本
- 單位出讓房屋合同范例
- 制作安裝供貨合同范本
- 后增補(bǔ)協(xié)議合同范本
- 220kV GIS組合電器安裝施工方案
- 公園綠化養(yǎng)護(hù)景觀綠化維護(hù)項(xiàng)目迎接重大節(jié)會(huì)活動(dòng)的保障措施
- 國(guó)內(nèi)外旅游公共服務(wù)研究的文獻(xiàn)綜述
- 集團(tuán)公司各職能部管控分權(quán)手冊(cè)
- 機(jī)車電測(cè)儀表使用及檢修
- PMS顏色對(duì)照表
- 營(yíng)銷手冊(cè)范本匯總(24個(gè)共)35.doc
- 2012年北京大學(xué)醫(yī)學(xué)部外國(guó)留學(xué)生本科入學(xué)考試
- 七年級(jí)英語閱讀理解50篇(附答案)
- 乙酸乙酯的制備ppt課件
- 音樂之聲中英文臺(tái)詞
評(píng)論
0/150
提交評(píng)論