版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)操作系統(tǒng)實驗報告題 目 三大經(jīng)典問題之生產(chǎn)者與消費(fèi)者問題一、 課程設(shè)計的性質(zhì)與任務(wù)1、加深對并發(fā)協(xié)作進(jìn)程同步與互斥概念的理解。通過編寫程序?qū)崿F(xiàn)進(jìn)程同步和互斥,使學(xué)生掌握有關(guān)進(jìn)程(線程)同步與互斥的原理,以及解決進(jìn)程(線程)同步和互斥的算法,從而進(jìn)一步鞏固進(jìn)程(線程)同步和互斥等有關(guān)的內(nèi)容。2、掌握進(jìn)程和線程的概念,進(jìn)程(線程)的控制原語或系統(tǒng)調(diào)用的使用。3、了解Windows2000/XP中多線程的并發(fā)執(zhí)行機(jī)制,線程間的同步和互斥。學(xué)習(xí)使用Windows2000/XP中基本的同步對象,掌握相應(yīng)的API函數(shù)。4、培養(yǎng)學(xué)生能夠獨(dú)立進(jìn)行知識綜合,獨(dú)立開發(fā)較大程序的能力。5、培養(yǎng)提高學(xué)生軟件開發(fā)
2、能力和軟件的調(diào)試技術(shù)。6、培養(yǎng)學(xué)生開發(fā)大型程序的方法和相互合作的精神。7、培養(yǎng)學(xué)生的創(chuàng)新意識。8、培養(yǎng)學(xué)生的算法設(shè)計和算法分析能力。9、培養(yǎng)學(xué)生對問題進(jìn)行文字論述和文字表達(dá)的能力。二、課程設(shè)計的內(nèi)容及其要求在Windows XP、Windows 2000等操作系統(tǒng)下,使用的VC、VB、Java或C等編程語言,采用進(jìn)程(線程)同步和互斥的技術(shù)編寫程序?qū)崿F(xiàn)生產(chǎn)者消費(fèi)者問題或哲學(xué)家進(jìn)餐問題或讀者-寫者問題或自己設(shè)計一個簡單進(jìn)程(線程)同步和互斥的實際問題。要求:(1)經(jīng)調(diào)試后程序能夠正常運(yùn)行。(2)采用多進(jìn)程或多線程方式運(yùn)行,體現(xiàn)了進(jìn)程(線程)同步互斥的關(guān)系。(3)程序界面美觀。
3、三、實驗原理本實驗要求利用PV操作實現(xiàn)解決生產(chǎn)者消費(fèi)者問題中的同步問題。此問題描述的是一群生產(chǎn)者進(jìn)程在生產(chǎn)產(chǎn)品并將這些產(chǎn)品提供給消費(fèi)者進(jìn)程去消費(fèi),在兩者之間設(shè)置了一個具有n個緩沖區(qū)的緩沖池,生產(chǎn)者進(jìn)程將它所生產(chǎn)的產(chǎn)品放入一個緩沖區(qū),消費(fèi)者進(jìn)程可從緩沖區(qū)中取走產(chǎn)品去消費(fèi),但它們之間必須保持同步,即不允許消費(fèi)者進(jìn)程到一個空緩沖區(qū)去取產(chǎn)品,也不允許生產(chǎn)者進(jìn)程向一個已裝滿且尚未取出的緩沖區(qū)中投放產(chǎn)品,并且生產(chǎn)者消費(fèi)者互斥使用緩沖區(qū)。四、實驗原理圖開始ProduceWait BufferWait ProductsConsumeWhile consume結(jié)束While produce五、算法實現(xiàn)(1)有一
4、個生產(chǎn)者線程ProduceThread,有1個消費(fèi)者進(jìn)程CustomerThread;緩沖區(qū)為shareList。(2)使用線程同步:用synchonized關(guān)鍵字(加鎖)使得一個時間內(nèi)只能有一個線程得到執(zhí)行,另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊;wait()讓線程進(jìn)入等待狀態(tài);notify()函數(shù)喚醒一個處于等待狀態(tài)的線程。(3)程序運(yùn)行流程圖如下:(如不在外部中斷,程序?qū)⒁恢毖h(huán)運(yùn)行)開始消費(fèi)者生產(chǎn)者倉庫是否滿?否生產(chǎn)者生產(chǎn)消費(fèi)者等待是消費(fèi)者消費(fèi)生產(chǎn)者等待喚醒消費(fèi)者喚醒生產(chǎn)者六、源代碼package 操作系統(tǒng);/* *產(chǎn)品類 */publicclass Goods
5、 int id; String name;public String toString()return id+" "+name; package 操作系統(tǒng);importjava.util.List;/* * 消費(fèi)者線程:有產(chǎn)品時可以取出,無產(chǎn)品時等待 */publicclassCustomerThreadextends ThreadprivateListshareList;CustomerThread(ListshareList)this.shareList=shareList;publicvoid run()System.out.println("消費(fèi)線程已啟動
6、."+shareList.size();while(true)trysynchronized(shareList)while(shareList.size()=0)/如果沒有產(chǎn)品,消費(fèi)線程則等待shareList.wait();while(shareList.size()>0)System.out.println("<-消費(fèi)線程取出產(chǎn)品:"+shareList.remove(0).toString();shareList.notify();catch(Exception ef)ef.printStackTrace();package 操作系統(tǒng);impo
7、rtjava.util.List;/* * 生產(chǎn)者線程:無數(shù)據(jù)時再存,存入一個要發(fā)通知 */publicclassProduceThreadextends Thread/構(gòu)造器參數(shù)是生產(chǎn)線程要放入的隊列publicProduceThread(ListshareList)this.shareList=shareList;publicvoid run()System.out.println("生產(chǎn)線程已啟動."+shareList.size();while(true)tryThread.sleep(2000);synchronized(shareList)while(share
8、List.size()>0)shareList.wait();while(shareList.size()=0)Goods gs = newGoods();count+;gs.id=count;="產(chǎn)品"+count;System.out.println("->生產(chǎn)線程放入對象:"+gs.toString();shareList.add(gs);/通知消費(fèi)線程,隊列中有對象了shareList.notify();catch(Exception ef)ef.printStackTrace();/用來標(biāo)記放入對象的每一個獨(dú)立ID號p
9、rivatestaticintcount=0;/與消費(fèi)者線程或以共同存取的對象列表privateListshareList;package 操作系統(tǒng);importjava.util.LinkedList;importjava.util.List;public class Manage /主函數(shù)public static void main(String args)/生產(chǎn)消費(fèi)線程交換對象的隊列List shareList = new java.util.LinkedList();/啟動生產(chǎn)線程newProduceThread(shareList).start();/啟動消費(fèi)線程newCustomerThread(shareList).start();七、運(yùn)行結(jié)果八、實驗心得在此次實驗中我們模擬PV 操作同步機(jī)構(gòu),來解決消費(fèi)者與生產(chǎn)者這兩個進(jìn)程之間的同步協(xié)調(diào)問題 。實驗中值得注意的是解決進(jìn)程同步需要做哪些工作,如何利用信號量機(jī)制來 解決進(jìn)程同步問題等等。通過本次實驗,我對操作系統(tǒng)的p、v有了進(jìn)一步認(rèn)識,深入了解了p、v操作的實質(zhì)和其重要性,加深了我對操作系統(tǒng)中多線程機(jī)制的理解和認(rèn)識,更讓我認(rèn)識到知識的掌握,僅靠學(xué)習(xí)理論知識是遠(yuǎn)遠(yuǎn)不夠的,要與實際動手操作相結(jié)合才能更好地理解和分析問題。此外,我也發(fā)現(xiàn)自己在編程上仍存在較大的問題,本次實驗讓我對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科貿(mào)職業(yè)學(xué)院《物聯(lián)網(wǎng)定位技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東技術(shù)師范大學(xué)《能源工程與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東海洋大學(xué)《臨床醫(yī)學(xué)基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工商職業(yè)技術(shù)大學(xué)《教師素質(zhì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《食品儀器分析原子吸收測定水中鈣(標(biāo)準(zhǔn)曲線法)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《廣播電視敘事學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- OEE培訓(xùn)課件教學(xué)課件
- 食品安全班會課件
- 《高星級酒店操作規(guī)》課件
- 廣東碧桂園職業(yè)學(xué)院《商務(wù)英語視聽說(4)》2023-2024學(xué)年第一學(xué)期期末試卷
- 海南省瓊海市五年級數(shù)學(xué)期末自測模擬試題詳細(xì)答案和解析
- 垃圾清運(yùn)服務(wù)投標(biāo)方案技術(shù)方案
- 電子工程師職位合同
- 2025屆青海省西寧二十一中學(xué)七年級數(shù)學(xué)第一學(xué)期期末考試試題含解析
- 湖北省宜昌市2025屆九年級物理第一學(xué)期期末達(dá)標(biāo)測試試題含解析
- 宜賓市翠屏區(qū)2022-2023學(xué)年七年級上學(xué)期期末生物試題【帶答案】
- DL-T5394-2021電力工程地下金屬構(gòu)筑物防腐技術(shù)導(dǎo)則
- 八年級下冊語文教材分析
- 2021泛海三江JB-QBL-QM210火災(zāi)自動報警控制器消防聯(lián)動控制器說明書
- 瑜伽社團(tuán)教學(xué)計劃
- 兒科護(hù)理技術(shù)操作規(guī)范
評論
0/150
提交評論