




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上計算機操作系統實驗報告題 目 三大經典問題之生產者與消費者問題一、 課程設計的性質與任務1、加深對并發協作進程同步與互斥概念的理解。通過編寫程序實現進程同步和互斥,使學生掌握有關進程(線程)同步與互斥的原理,以及解決進程(線程)同步和互斥的算法,從而進一步鞏固進程(線程)同步和互斥等有關的內容。2、掌握進程和線程的概念,進程(線程)的控制原語或系統調用的使用。3、了解Windows2000/XP中多線程的并發執行機制,線程間的同步和互斥。學習使用Windows2000/XP中基本的同步對象,掌握相應的API函數。4、培養學生能夠獨立進行知識綜合,獨立開發較大程序的能力
2、。5、培養提高學生軟件開發能力和軟件的調試技術。6、培養學生開發大型程序的方法和相互合作的精神。7、培養學生的創新意識。8、培養學生的算法設計和算法分析能力。9、培養學生對問題進行文字論述和文字表達的能力。二、課程設計的內容及其要求在Windows XP、Windows 2000等操作系統下,使用的VC、VB、Java或C等編程語言,采用進程(線程)同步和互斥的技術編寫程序實現生產者消費者問題或哲學家進餐問題或讀者-寫者問題或自己設計一個簡單進程(線程)同步和互斥的實際問題。要求:(1)經調試后程序能夠正常運行。(2)采用多進程或多線程方式運行,體現了進程(線程)同步互斥的
3、關系。(3)程序界面美觀。三、實驗原理本實驗要求利用PV操作實現解決生產者消費者問題中的同步問題。此問題描述的是一群生產者進程在生產產品并將這些產品提供給消費者進程去消費,在兩者之間設置了一個具有n個緩沖區的緩沖池,生產者進程將它所生產的產品放入一個緩沖區,消費者進程可從緩沖區中取走產品去消費,但它們之間必須保持同步,即不允許消費者進程到一個空緩沖區去取產品,也不允許生產者進程向一個已裝滿且尚未取出的緩沖區中投放產品,并且生產者消費者互斥使用緩沖區。四、實驗原理圖五、算法實現(1)有一個生產者線程ProduceThread,有1個消費者進程CustomerThread;緩沖區為shareLis
4、t。(2)使用線程同步:用synchonized關鍵字(加鎖)使得一個時間內只能有一個線程得到執行,另一個線程必須等待當前線程執行完這個代碼塊以后才能執行該代碼塊;wait()讓線程進入等待狀態;notify()函數喚醒一個處于等待狀態的線程。(3)程序運行流程圖如下:(如不在外部中斷,程序將一直循環運行)開始消費者生產者倉庫是否滿?否生產者生產消費者等待是消費者消費生產者等待喚醒消費者喚醒生產者六、源代碼package 操作系統;/* *產品類 */publicclass Goods int id; String name;public String toString()return id+
5、" "+name; package 操作系統;importjava.util.List;/* * 消費者線程:有產品時可以取出,無產品時等待 */publicclassCustomerThreadextends ThreadprivateListshareList;CustomerThread(ListshareList)this.shareList=shareList;publicvoid run()System.out.println("消費線程已啟動."+shareList.size();while(true)trysynchronized(sha
6、reList)while(shareList.size()=0)/如果沒有產品,消費線程則等待shareList.wait();while(shareList.size()>0)System.out.println("<-消費線程取出產品:"+shareList.remove(0).toString();shareList.notify();catch(Exception ef)ef.printStackTrace();package 操作系統;importjava.util.List;/* * 生產者線程:無數據時再存,存入一個要發通知 */publiccla
7、ssProduceThreadextends Thread/構造器參數是生產線程要放入的隊列publicProduceThread(ListshareList)this.shareList=shareList;publicvoid run()System.out.println("生產線程已啟動."+shareList.size();while(true)tryThread.sleep(2000);synchronized(shareList)while(shareList.size()>0)shareList.wait();while(shareList.size(
8、)=0)Goods gs = newGoods();count+;gs.id=count;="產品"+count;System.out.println("->生產線程放入對象:"+gs.toString();shareList.add(gs);/通知消費線程,隊列中有對象了shareList.notify();catch(Exception ef)ef.printStackTrace();/用來標記放入對象的每一個獨立ID號privatestaticintcount=0;/與消費者線程或以共同存取的對象列表privateListsha
9、reList;package 操作系統;importjava.util.LinkedList;importjava.util.List;public class Manage /主函數public static void main(String args)/生產消費線程交換對象的隊列List shareList = new java.util.LinkedList();/啟動生產線程newProduceThread(shareList).start();/啟動消費線程newCustomerThread(shareList).start();七、運行結果八、實驗心得在此次實驗中我們模擬PV 操作同步機構,來解決消費者與生產者這兩個進程之間的同步協調問題 。實驗中值得注意的是解決進程同步需要做哪些工作,如何利用信號量機制來 解決進程同步問題等等。通過本次實驗,我對操作系統的p、v有了進一步認識,深入了解了p、v操作的實質和其重要性,加深了我對操作系統中多線程機制的理解和認識,更讓我認識到知識的掌握,僅靠學習理論知識是遠遠不夠的,要與實際動手操作相結合才能更好地理解和分析問題。此外,我也發現自己在編程上仍存在較大的問題,本次實驗讓我對java語言的線程編
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于信息技術支持的初中物理實驗操作能力培養策略研究論文
- 中學物理實驗誤差控制與腦機接口信號處理算法融合創新論文
- 初中生校園涂鴉藝術教育與團隊協作能力的培養論文
- 艾滋檢測點管理制度
- 苗圃場運營管理制度
- 茶藝功能室管理制度
- 設備承諾書范文
- 北京晶城秀府房地產項目整合推廣案
- 八年級思品上冊(湘師大版)教學課件-第一節 生活中的法律保護
- 自動化生產線運行與維護課程標準
- DL-T448-2016電能計量裝置技術管理規程
- 廣東省江門市2022-2023學年四年級下學期語文期末試卷(含答案)
- 2024建筑工程勞務分包合同標準范本
- 河南天一大聯考2025屆高一物理第二學期期末監測試題含解析
- 碩博研究生英語綜合教程完整版電子課件
- 微水泥施工工藝流程
- 安徽省合肥市濱湖區壽春中學2024年八年級下冊物理期末統考試題含解析
- MOOC 軍事理論-哈爾濱工程大學 中國大學慕課答案
- 實驗室工作月報
- 貨物倒塌危害預防管理
- 辦公室綜合業務培訓課件
評論
0/150
提交評論