




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、頁尉內(nèi)容軟件學(xué)院操作系統(tǒng)實驗報告6專業(yè): 班級: 學(xué)號: 學(xué)生姓名: 指導(dǎo)教師:軟件工程RB軟工互152201560160226王澤華韓新超頁尉內(nèi)容5實驗二:進程同步(生產(chǎn)者與消費者)一. 實驗?zāi)康?) 理解進程競爭資源的現(xiàn)象,進而理解進程的同步于互斥;2) 掌握基本的互斥與同步算法,進一步理解“生產(chǎn)者一消費者”模型;S)通過對“生產(chǎn)者一消費者”問題編程實現(xiàn),了解進程創(chuàng)建、同步信號 量、互斥信號量、臨界區(qū)的創(chuàng)建和使用,初步了解并發(fā)程序設(shè)計方法;4) 進一步理解P、V原語和信號量在線程互斥和同步機制中的運用。二. 實驗屬性該實驗為設(shè)計性實驗。三. 實驗儀器設(shè)備及器材普通PCSS6以上微機四. 實
2、驗理論基礎(chǔ)1、該實驗中使用到相關(guān)的windows API函數(shù):1) create Thread建立新的線程;2) create Mutex創(chuàng)建一個互斥體;5) create Semaphore創(chuàng)建一個新的信號量;4) release Mutex釋放山線程擁有的一個互斥體;5) release Semaphore對指定的信號量增加指定的值;6) wait for Single Object用來檢測handle時間的信號狀態(tài);7 )wait for Multiple Objects true即等待所有信號量有效再往下執(zhí)行,false 當(dāng)其中一個信號量有效時向下執(zhí)行;S)Close Handle關(guān)閉
3、一個內(nèi)核對象。2、數(shù)據(jù)結(jié)構(gòu)用實驗一中的進程就緒隊列,并在此基礎(chǔ)上進行調(diào)度,如 果隊列排序與算法要求不一致則編寫一個排序函數(shù)。S、進程調(diào)度算法:選擇一種進程調(diào)度算法實現(xiàn)。士、主界面設(shè)計:在實驗一的界面上增加一個進程調(diào)度按鈕、被調(diào)進程 的PCB顯示。5、功能測試:從顯示出的就緒隊列狀態(tài)和被調(diào)進程的PCB,查看操作 的正確與否。五實驗步驟60!1234567891i1:1:1:l i主緩區(qū)區(qū)區(qū)區(qū)區(qū)區(qū)區(qū)岡區(qū)區(qū)區(qū)區(qū)兇區(qū)區(qū)區(qū) 亠宀新一 kajm占 m frmol.tim03 占.mol.Bn. 生fes'I摻1-1霾s:l-蠢1-1參滾盪盪<爰區(qū) 3 = 01 編入狀號 放的編 口asB1品
4、 口弄當(dāng)產(chǎn) 亠嚴(yán)的區(qū)號012341000000000費產(chǎn)1(2)結(jié)果分析: 在每個過程中先做P(mutex),后做V(mutex),二者要成對出現(xiàn)。夾在 二者中間的代碼段就是該進程的臨界區(qū)。 對同步信號量full和empty的P, V操作同樣必須成對出現(xiàn),但它們 分別位于不同的程序中。 無論在生產(chǎn)者進程中還是在消費者進程中,兩個P操作的次序不能顛 倒:應(yīng)先執(zhí)行同步信號量的P操作,然后執(zhí)行互斥信號量的P操作。否則可 能造成進程死鎖。六.實驗總結(jié)計算機操作系統(tǒng)中引入了進程后,極大的改善了系統(tǒng)資源的利用率和提 高了系統(tǒng)的喬吐量,但是由于多道環(huán)境中同時存在多個進程,它們共享系統(tǒng) 資源,各自按照各自的方
5、式執(zhí)行,給系統(tǒng)造成了混亂,所以系統(tǒng)必須提供一 種機制管理進程,使這些并發(fā)執(zhí)行的進程之間能有條不紊地運行,能有效地 共享資源和相互合作,使得程序的執(zhí)行具有可再現(xiàn)性,這就是進程同步的主 要任務(wù)。七.附錄#include <iostream>#include <process.h>#include <windows.h>using namespace std;/生產(chǎn)者消費者問題,單個生產(chǎn)者,多個消費者,多個緩沖池/使用信號量 和關(guān)鍵段來實現(xiàn)using namespace std;int gi或const int num = 10; /產(chǎn)生數(shù)據(jù)的個數(shù)const in
6、t size = 土; /緩沖池的大小volatile bool flag = true; /用于消費者線程之間int buPsizeJ; / 緩沖池CRITICAL_SECTION gc; / 關(guān)鍵段HANDLE empty full; / / Semaphoreunsigned int _stdcall pro(PVOID p) / 生產(chǎn)者線程fbr(int i = 0; i <= num ; i+)WaitForSingleObject(emptylXFINITE); / 線程同步EnterCriticalSection(&:gc); / 線程互斥bufTgO = i;co
7、ut « "生產(chǎn)者在n « gi << n號緩沖也放入H « bufTgiJ « endl; gi = (gi+l)%size;Leave CriticalSec tion( &gc);ReleaseSemaphore(fi.ill, 1 .NULL);頁尉內(nèi)容cout « “生產(chǎn)者運行結(jié)朿!” « endl; return 0;unsigned int _stclcall cus(PVOID p) / 消費者線程while(true)WaitForSingleObject(fullJXFINITE);
8、/ 線程同步 if flag = false ) /線程之間的邏輯判斷break;EnterCriticalSection(Srgc); / 線程互斥cout « ”線程 H « GetCurrentThreadId() « M 在緩沖池 H « gj « H 獲取數(shù)據(jù)« bufTgj << endl;if( bufTgj" = num ) / 結(jié)束條件LeaveCriticalSection (& gc); ReleaseSemaphore(fulL 1 ,NULL); flag = false; br
9、eak;gj = (gj+l)%size;LeaveCriticalSection (&gc);Sleep(oO);ReleaseSemaphore(empty 1 ,NULL);cout « "消費者線程 M « GetCurrentThreadId() « n 運行結(jié)朿!" « endl;return 0;int main()/相關(guān)變量的定義const int sz = S;gi = gj = 0;InitializeCriucalSection (&gc);empty = CreateSemaphore(NULL,l,4,NULL); fiill = CreateSemaphore(NULL,0,-£-,NULL);HANDLE handsz;hand0 = HAKDLE)_beginchreadex(NULL,0,pro,NULL,0,NULL); / 創(chuàng)建了三個 線程hand13 = (HANDLE)-beginchreadex(NULL,O,cus,NULL.O,NULL);hand2 = (PLNDLE)-beginthreadex(NULL,O,cus,NULL,O,NULL);X7aitForMultipleObjects(sz,han
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025房地產(chǎn)銷售人員工作總結(jié)(19篇)
- 小學(xué)一年級差生評語差生評語(32篇)
- 聯(lián)通公司述職報告(7篇)
- 二年級上美術(shù)教學(xué)設(shè)計(A)-灑水成畫-湘教版
- 2025慶祝建團百年演講稿(4篇)
- 文明禮儀演講稿3范文(17篇)
- 庫管員的述職報告(19篇)
- 2025年大一工作計劃范文(5篇)
- 2025大學(xué)生暑假實踐心得體會800字(20篇)
- 電臺廣告合同(5篇)
- 扎鋼機控制系統(tǒng)的MCGS界面控制設(shè)計
- 超聲波探傷作業(yè)指導(dǎo)書
- 課程思政視域下小學(xué)音樂教學(xué)策略初探 論文
- 群眾性戰(zhàn)傷救治技術(shù)知識考試題庫-下(多選、判斷題部分)
- 微風(fēng)發(fā)電系統(tǒng)施工方案
- 機械設(shè)計說明書-精煉爐鋼包車設(shè)計
- E+-H-Promass-80流量計基本操作步驟說明書
- 中國傳統(tǒng)文化之中國古代科技PPT
- 心力衰竭護理業(yè)務(wù)查房
- 粉塵防爆安全知識考試試題
- 固定床列管式反應(yīng)器設(shè)計說明書(曾禮菁)
評論
0/150
提交評論