2023年操作系統(tǒng)實(shí)驗(yàn)報(bào)告經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題.doc
《2023年操作系統(tǒng)實(shí)驗(yàn)報(bào)告經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《2023年操作系統(tǒng)實(shí)驗(yàn)報(bào)告經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題.doc(12頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、實(shí)驗(yàn)二 經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題一、目的實(shí)現(xiàn)對(duì)經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題的模擬,以便更好的理解經(jīng)典進(jìn)程同步問(wèn)題。二、實(shí)驗(yàn)內(nèi)容及規(guī)定編制生產(chǎn)者消費(fèi)者算法,模擬一個(gè)生產(chǎn)者、一個(gè)消費(fèi)者,共享一個(gè)緩沖池的情形。1、實(shí)現(xiàn)對(duì)經(jīng)典的生產(chǎn)者消費(fèi)者問(wèn)題的模擬,以便更好的理解此經(jīng)典進(jìn)程同步問(wèn)題。生產(chǎn)者消費(fèi)者問(wèn)題是典型的PV操作問(wèn)題,假設(shè)系統(tǒng)中有一個(gè)比較大的緩沖池,生產(chǎn)者的任務(wù)是只要緩沖池未滿(mǎn)就可以將生產(chǎn)出的產(chǎn)品放入其中,而消費(fèi)者的任務(wù)是只要緩沖池未空就可以從緩沖池中拿走產(chǎn)品。緩沖池被占用時(shí),任何進(jìn)程都不能訪問(wèn)。2、每一個(gè)生產(chǎn)者都要把自己生產(chǎn)的產(chǎn)品放入緩沖池,每個(gè)消費(fèi)者從緩沖池中取走產(chǎn)品消費(fèi)。在這種情況下,生產(chǎn)者消費(fèi)者進(jìn)
2、程同步,由于只有通過(guò)互通消息才知道是否能存入產(chǎn)品或者取走產(chǎn)品。他們之間也存在互斥,即生產(chǎn)者消費(fèi)者必須互斥訪問(wèn)緩沖池,即不能有兩個(gè)以上的進(jìn)程同時(shí)進(jìn)行。三、生產(chǎn)者和消費(fèi)者原理分析在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行兩個(gè)線程。生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。消費(fèi)者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時(shí),假如沒(méi)有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費(fèi)者線程釋放一個(gè)空緩沖區(qū)。當(dāng)消費(fèi)者線程消費(fèi)物品時(shí),假如沒(méi)有滿(mǎn)的緩沖區(qū),那么消費(fèi)者線程將被阻擋,直到新的物品被生產(chǎn)出來(lái)。四、生產(chǎn)者與消費(fèi)者功能描述:生產(chǎn)者功能描述:在同一個(gè)進(jìn)程地址空間內(nèi)執(zhí)行兩個(gè)線程。生產(chǎn)者線
3、程生產(chǎn)物品,然后將物品放置在一個(gè)空緩沖區(qū)中供消費(fèi)者線程消費(fèi)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時(shí),假如沒(méi)有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費(fèi)者線程釋放出一個(gè)空緩沖區(qū)。消費(fèi)者功能描述:消費(fèi)者線程從緩沖區(qū)獲得物品,然后釋放緩沖區(qū),當(dāng)消費(fèi)者線程消費(fèi)物品時(shí),假如沒(méi)有滿(mǎn)的緩沖區(qū),那么消費(fèi)者線程將被阻塞,直到新的物品被生產(chǎn)出來(lái)。五、實(shí)驗(yàn)環(huán)境操作系統(tǒng)環(huán)境:Windows系統(tǒng)。編程語(yǔ)言:C#。六、生產(chǎn)者與消費(fèi)者的思緒和設(shè)計(jì)1、程序流程圖(1) 生產(chǎn)者 NYYN開(kāi) 始生產(chǎn)產(chǎn)品Wait (empty)empty0Wait (mutex)Mutex=1存入緩沖區(qū)empty = empty- 1Signal (mutex)S
4、ignal (full)緩沖區(qū)內(nèi)已滿(mǎn),已無(wú)可用緩沖區(qū)緩沖區(qū)正被其他進(jìn)程占用結(jié) 束(2) 消費(fèi)者NYYN開(kāi) 始Wait (full) 消費(fèi)請(qǐng)求full0Wait (mutex)Mutex=1消 費(fèi)full = full - 1Signal (mutex)Signal (empty)緩沖區(qū)內(nèi)產(chǎn)品已空,不能進(jìn)行消費(fèi)緩沖區(qū)正被其他進(jìn)程占用結(jié) 束2、重要程序代碼/初始化變量 private void Form1_Load(object sender, EventArgs e) mutex = 1; /互斥信號(hào)量 full = 0; /緩沖池中滿(mǎn)緩沖區(qū)的數(shù)量 empty = 5;/緩沖池中空緩沖區(qū)的數(shù)量
5、count1 = 0;/生產(chǎn)的產(chǎn)品數(shù)目 i = 0; lb_mutex.Text = 1; lb_full.Text = 0; lb_empty.Text = 5; /消費(fèi)者從緩沖區(qū)中消費(fèi)一個(gè)產(chǎn)品 private void consumer_Click(object sender, EventArgs e) if (full 0) /消費(fèi)者已進(jìn)入互斥臨界區(qū) if (mutex = 1) /申請(qǐng)進(jìn)入臨界區(qū) mutex = 0; /消費(fèi)者已進(jìn)入互斥臨界區(qū) lb_mutex.Text = 0; timer_consumer.Enabled = true;/啟動(dòng)消費(fèi)者消費(fèi)緩沖區(qū)產(chǎn)品 else Mess
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
12.9 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 2023 操作系統(tǒng) 實(shí)驗(yàn) 報(bào)告 經(jīng)典 生產(chǎn)者 消費(fèi)者 問(wèn)題
鏈接地址:http://zhizhaikeji.com/p-21023374.html