操作系統(tǒng)生產(chǎn)者與消費(fèi)者問(wèn)題實(shí)驗(yàn)報(bào)告(共9頁(yè)).doc
《操作系統(tǒng)生產(chǎn)者與消費(fèi)者問(wèn)題實(shí)驗(yàn)報(bào)告(共9頁(yè)).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)生產(chǎn)者與消費(fèi)者問(wèn)題實(shí)驗(yàn)報(bào)告(共9頁(yè)).doc(9頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)實(shí)驗(yàn)報(bào)告生產(chǎn)者和消費(fèi)者的問(wèn)題一、 實(shí)驗(yàn)?zāi)康?. 掌握基本的同步與互斥的算法,理解基本的生產(chǎn)者與消費(fèi)者的模型。2. 學(xué)習(xí)使用Windows 2000/XP中基本的同步對(duì)象,掌握相關(guān)的API的使用方法。3. 了解Windows 2000/XP中多線程的并發(fā)執(zhí)行機(jī)制,線程間的同步和互斥。二、 實(shí)驗(yàn)的內(nèi)容及其要求1. 實(shí)驗(yàn)內(nèi)容以生產(chǎn)者/消費(fèi)者模型為根據(jù),在Windows 2000環(huán)境下創(chuàng)建一個(gè)控制臺(tái)進(jìn)程,在改進(jìn)程中創(chuàng)建n個(gè)線程模擬生產(chǎn)者和消費(fèi)者,實(shí)現(xiàn)進(jìn)程(線程)的同步與互斥。2實(shí)驗(yàn)要求學(xué)習(xí)并理解生產(chǎn)者/消費(fèi)者模型及其同步/互斥規(guī)則學(xué)習(xí)了解Windows同步對(duì)象及其特性
2、熟悉實(shí)驗(yàn)環(huán)境,掌握相關(guān)API的使用方法設(shè)計(jì)程序,實(shí)現(xiàn)生產(chǎn)者/消費(fèi)者進(jìn)程(線程)的同步與互斥提交實(shí)驗(yàn)報(bào)告三、 實(shí)驗(yàn)的時(shí)間安排1 實(shí)驗(yàn)前,先到圖書館或上網(wǎng)百度了解有關(guān)生產(chǎn)者/消費(fèi)者模型的相關(guān)知識(shí),建立生產(chǎn)者/消費(fèi)者模型的基本概念。2 利用13周、15周、17周的上機(jī)時(shí)間編寫和調(diào)試程序代碼。3 利用其他課余時(shí)間來(lái)分析實(shí)驗(yàn)的最終結(jié)果并完成相關(guān)的實(shí)驗(yàn)報(bào)告。四、 實(shí)驗(yàn)的環(huán)境1. 硬件條件:普通計(jì)算機(jī)一臺(tái)2. 軟件條件:操作系統(tǒng):Windows 2000/XP開發(fā)語(yǔ)言:VC+本實(shí)驗(yàn)是在Windows 2000+VC6.0環(huán)境下實(shí)現(xiàn)的,利用Windows SDK提供的系統(tǒng)接口(API)完成程序的功能。實(shí)驗(yàn)在W
3、indows下安裝VC后進(jìn)行,因?yàn)閂C是一個(gè)集成開發(fā)環(huán)境,其中包含了Windows SDK所有工具和定義,所以安裝了VC后就不用特意安裝SDK了。實(shí)驗(yàn)中所用的API(應(yīng)用程序接口),是操作系統(tǒng)提供的用來(lái)進(jìn)行應(yīng)用程序設(shè)計(jì)的系統(tǒng)功能接口。要使用這些API,需要包含對(duì)這些函數(shù)進(jìn)行說(shuō)明的SDK頭文件,最常見的就是windows.h。一些特殊的API調(diào)用還需要包含其他的頭文件。五、 正文1 程序結(jié)構(gòu)圖:2.數(shù)據(jù)結(jié)構(gòu):(1)用一個(gè)整型數(shù)組Buffer_Critical來(lái)代表緩沖區(qū)。不管是生產(chǎn)產(chǎn)品還是對(duì)已有產(chǎn)品的消費(fèi)都需要訪問(wèn)改組緩沖區(qū)。(2)在程序中用一個(gè)自定義結(jié)構(gòu)ThreadInfo記錄一條線程的信息,
4、即將測(cè)試用例文件中的一行信息記錄下來(lái),用于程序創(chuàng)建相應(yīng)的生產(chǎn)者或者消費(fèi)者。由于要?jiǎng)?chuàng)建多個(gè)線程,所以程序中使用了一個(gè)ThreadInfo結(jié)構(gòu)的數(shù)組Thread_Info。(3)在實(shí)現(xiàn)本程序的消費(fèi)生產(chǎn)模型時(shí),具體地通過(guò)如下同步對(duì)象實(shí)現(xiàn)互斥:設(shè)一個(gè)互斥量h_mutex,以實(shí)現(xiàn)生產(chǎn)者在查詢和保留緩沖區(qū)內(nèi)的下一個(gè)空位置時(shí)進(jìn)行互斥。每一個(gè)生產(chǎn)者用一個(gè)信號(hào)量與其消費(fèi)者同步,通過(guò)設(shè)置h_SemaphoreMAX_THREAD_NUM信號(hào)量數(shù)組實(shí)現(xiàn),該組信號(hào)量用于表示相應(yīng)產(chǎn)品已生產(chǎn)。同時(shí)用一個(gè)表示空緩沖區(qū)數(shù)目的信號(hào)量empty_semaphore進(jìn)行類似的同步,指示緩沖區(qū)中是否存在空位置,以便開始生產(chǎn)下一個(gè)產(chǎn)品
5、。每一個(gè)緩沖區(qū)用一個(gè)同步對(duì)象實(shí)現(xiàn)該緩沖區(qū)上消費(fèi)者之間的互斥,這通過(guò)設(shè)置臨界區(qū)對(duì)象數(shù)組PC_CriticalMAX_BUFFER_NUM實(shí)現(xiàn)。3.實(shí)驗(yàn)步驟:(1)打開VC,選擇菜單項(xiàng)File->New,選擇Projects選項(xiàng)卡并建立一個(gè)名為R_WP1的win32 console application工程,創(chuàng)建時(shí)注意指定創(chuàng)建該工程的目錄。(2)在工程中創(chuàng)建源文件R_WP1.cpp:選擇菜單項(xiàng)Project->Add to project->Files,此時(shí)將打開一個(gè)新窗口,在其中的“文件名”輸入欄中輸入自己想要?jiǎng)?chuàng)建的文件名,這里是R_WP1.cpp;接著詢問(wèn)是否創(chuàng)建新文件時(shí)回
6、答“yes”。通過(guò)Workspace->Source Files打開該文件,在其中編輯源文件并保存。(3)通過(guò)調(diào)用菜單項(xiàng)Build->Rebuild all進(jìn)行編譯連接,可以在指定的工程目錄下得到debug->R_WP1.exe程序,然后把給定的test.txt文件存入該debug目錄下,就可以在控制臺(tái)進(jìn)入該debug目錄運(yùn)行程序了。需要強(qiáng)調(diào)的是:在創(chuàng)建數(shù)據(jù)文件時(shí),由于涉及文件的格式問(wèn)題,最好在記事本中手工逐個(gè)輸入數(shù)據(jù),而不要用復(fù)制和粘貼數(shù)據(jù)。4.實(shí)驗(yàn)源代碼:/*R_WP1.cpp*#include<windows.h>#include<fstream.h&
- 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您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 生產(chǎn)者 消費(fèi)者 問(wèn)題 實(shí)驗(yàn) 報(bào)告
鏈接地址:http://zhizhaikeji.com/p-6064804.html