




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
電子科技大學(xué)信息與軟件學(xué)院實驗報告(實驗)課程名稱計算機(jī)操作系統(tǒng)學(xué)生姓名康彪學(xué)生學(xué)號電子科技大學(xué)教務(wù)處制表7、實驗及結(jié)果分析:能夠正確模擬生產(chǎn)者和消費者模型,對緩沖區(qū)進(jìn)行讀寫操作。生產(chǎn)者消費者問題 1生產(chǎn)者2消費者4緩沖區(qū)--byMoreldindows(http:)--生產(chǎn)者在緩沖池第。個緩沖區(qū)中投放數(shù)據(jù)1生產(chǎn)者在緩沖池第1個緩沖區(qū)中投放數(shù)據(jù)2生產(chǎn)者在緩沖池第2個緩沖區(qū)中投放數(shù)據(jù)3編號為420的消費者從緩沖池中第0個緩沖區(qū)取出數(shù)據(jù)1生產(chǎn)者在緩沖池第3個緩沖區(qū)中投放數(shù)據(jù)4編號為3520的消費者從緩沖池中第1個緩沖區(qū)取出數(shù)據(jù)2編號為3520的酒費者從度沖池中第2個度沖區(qū)取出數(shù)據(jù)3生產(chǎn)者在緩沖池第0個緩沖區(qū)中投放數(shù)據(jù)5編號為420的消費者從緩沖池中第3個緩沖區(qū)取出數(shù)據(jù)"生產(chǎn)者在緩沖池第1個緩沖區(qū)中投放數(shù)據(jù)6編號為352。的消費者從緩沖池中第。個緩沖區(qū)取出數(shù)據(jù)5生產(chǎn)者在緩沖池第2個緩沖區(qū)中投放數(shù)據(jù)7編號為42。的消費者從緩沖池中第1個緩沖區(qū)取出數(shù)據(jù)6生產(chǎn)者在緩沖池第3個緩沖區(qū)中投放數(shù)據(jù)8生產(chǎn)者完成任務(wù),線程結(jié)束運行編號為3520的消費者從緩沖池中第2個緩沖區(qū)取出數(shù)據(jù)7編號為420的消費者從緩沖池中第3個緩沖區(qū)取出數(shù)據(jù)8編號為420的消費者收到通知,線程結(jié)束運行編號為352。的消費者從緩沖池中第3個緩沖區(qū)取出數(shù)據(jù)8編號為3520的消費者收到通知,線程結(jié)束運行Pressangkeytocontinue.8、實驗結(jié)論、心得體會和改進(jìn)建議:本次實驗是關(guān)于生產(chǎn)者與消費者之間互斥和同步的問題。問題的是指是P、V操作,實驗設(shè)一個共享緩沖區(qū),生產(chǎn)者和消費者互斥的使用,當(dāng)一個線程使用緩沖區(qū)的時候,另一個讓其等待直到前一個線程釋放緩沖區(qū)為止。生產(chǎn)者與消費者是一個與現(xiàn)實有關(guān)的經(jīng)驗問題,通過此原理舉一反三可以解決其他類似的問題。通過本實驗設(shè)計,我們對操作系統(tǒng)的P、V進(jìn)一步的認(rèn)識,深入的了解PV操作的實質(zhì)和其重要性。課本的理論知識進(jìn)一步闡述了現(xiàn)實中的實際問題。2、實驗學(xué)時:23、實驗內(nèi)容和目的:實驗?zāi)康模和ㄟ^本實驗掌握進(jìn)程間的同步和互斥機(jī)制的使用。實驗內(nèi)容:1、有一群生產(chǎn)者進(jìn)程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給消費者進(jìn)程去消費。為使生產(chǎn)者進(jìn)程與消費者進(jìn)程能并發(fā)執(zhí)行,在兩者之間設(shè)置了一個具有n個緩沖區(qū)的緩沖池:生產(chǎn)者進(jìn)程從文件中讀取一個數(shù)據(jù),并將它存放到一個緩沖區(qū)中;消費者進(jìn)程從一個緩沖區(qū)中取走數(shù)據(jù),并輸出此數(shù)據(jù)。生產(chǎn)者和消費者之間必須保持同步原則:不允許消費者進(jìn)程到一個空緩沖區(qū)去取產(chǎn)品;也不允許生產(chǎn)者進(jìn)程向一個已裝滿產(chǎn)品且尚未被取走的緩沖區(qū)中投放產(chǎn)品。2、創(chuàng)建3進(jìn)程(或者線程)作為生產(chǎn)者,4個進(jìn)程(或者線程)作為消費者。創(chuàng)建一個文件作為數(shù)據(jù)源,文件中事先寫入一些內(nèi)容作為數(shù)據(jù)。3、生產(chǎn)者和消費者進(jìn)程(或者線程)都具有相同的優(yōu)先級。4、實驗原理:利用進(jìn)程間共享的信號量、互斥鎖等控制線程的同步。相關(guān)函數(shù)說明:信號量sem_tsemjnit信號量初始化)、sem_wait(信號量值減一)、sem_post(信號量值加一)互斥量(線程)pthread_mutex_tpthread_mutex_init(互斥量初始化)pthread_mutexJock(互斥量加鎖)pthread_mutex_unlock(互斥量解鎖)線程和進(jìn)程pthread_t(線程)pid_t(進(jìn)程)pthread_create(創(chuàng)建線程)fork(創(chuàng)建進(jìn)程)pthreadjoin(等待線程結(jié)束)waitpid(停止目前進(jìn)程的執(zhí)行,直到有信號來到或子進(jìn)程結(jié)束)(1)學(xué)生每人一臺PC,安裝WindowsXP^OOO操作系統(tǒng)。(2)局域網(wǎng)絡(luò)環(huán)境。(3)個人PC安裝VMware虛擬機(jī)和Ubuntu系統(tǒng)。6、實驗步驟:.算法思想生產(chǎn)者線程生產(chǎn)物品,然后將物品放置在一個空緩沖區(qū)中供消費者線程消費。消費者線程從緩沖區(qū)中獲得物品,然后釋放緩沖區(qū)。當(dāng)生產(chǎn)者線程生產(chǎn)物品時,如果沒有空緩沖區(qū)可用,那么生產(chǎn)者線程必須等待消費者線程釋放出一個空緩沖區(qū)。當(dāng)消費者線程消費物品時,如果沒有滿的緩沖區(qū),那么消費者線程將被阻塞,直到新的物品被生產(chǎn)出來。.流程圖否生產(chǎn)者向隊列中寫入一個新元素項否生產(chǎn)者向隊列中寫入一個新元素項.程序代碼#include<windows.h>#include<iostream.h>#include<fstream.h>#include<string.h>#include<conio.h>〃聲明所需變量intin=O;intout=0;HANDLEh_Thread[20];//線程數(shù)組HANDLEempty_Semaphore;〃表示空緩沖區(qū)的信號量HANDLEfull_Semaphore;〃表示空緩沖區(qū)的信號量HANDLEmutex;structdata(intID;〃序號chartype;〃類型,是生產(chǎn)者還是消費者,porcdoubledelay;〃線程延遲的時間,對應(yīng)生產(chǎn)者生產(chǎn)產(chǎn)品的時間或消費者消費產(chǎn)品的時間);dataThreadlnfo[20];〃線程信息數(shù)組intlength;〃線程信息數(shù)組中實際的線程個數(shù)voidProduce(void*p);〃生產(chǎn)者進(jìn)程voidConsume(void*p);〃消費者進(jìn)程voidinput(void);intmain(void)(input();〃初始化臨界區(qū)對象//lnitializeCriticalSection(&PC_Critical);empty_Semaphore=CreateSemaphore(NULLz10/10,NULL);full_Semaphore=CreateSemaphore(NULL,0,10,NULL);mutex=::CreateMutex(NULL,FALSE,NULL);cout<<”下面生產(chǎn)者和消費者開始工作!!”<<endl;cout?endl;〃創(chuàng)建生產(chǎn)者和消費者線程for(inti=O;i(if(Threadlnfo[i].type=='p')h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Produce),&(Threadlnfo[i]),0,NULL);elseif(Threadlnfo[i].type==,c')h_Thread[i]=CreateThread(NULL,07(LPTHREAD_START_ROUTINE)(Consume),&(Threadlnfo[i]),0,NULL);)〃主程序等待各個線程的動作結(jié)束WaitForMultipleObjects(length,h_Thread,TRUE,-l);cout?endl;::Sleep(100);cout<<“所有的生產(chǎn)者和消費者都完成了它們的工作!!”<<endl?endl;return0;//〃生產(chǎn)者進(jìn)程*T* *T* *i* “T,^T* ,T■,T■*T**T* *T**T*,T-voidProduce(void*p)(〃局部變量聲明intmyjd;doublemy_delay;〃從線程信息數(shù)組中獲得信息my_id=((data*)(p))->ID;my_delay=((data*)(p))->delay;〃開始請求生產(chǎn)WaitForSingleObject(empty_Semaphore,-l);::WaitForSingleObject(mutex,-l);//EnterCriticalSection(&PC_Critical);cout""生產(chǎn)者”<vmyjd<<“發(fā)出生產(chǎn)請求。"<<endl;cout?endl;cout<<“生產(chǎn)者“<<myjd<<"生產(chǎn)"?endl;in=(in+l);Sleep(my_delay*10);cout<<“生產(chǎn)者完成了生產(chǎn)?!?lt;<endl<<endl;//LeaveCriticalSection(&PC_Critical);ReleaseSemaphore(full_Semaphore,l/NULL);::ReleaseMutex(mutex);Kf4tli4_t|^fa〃消費者進(jìn)程voidConsume(void*p)〃局部變量聲明intmyjd;doublemy_delay;〃從線程信息數(shù)組中獲得信息my_id=((data*)(p))->ID;my_delay=((data*)(p))->delay;〃開始請求消費WaitForSingleObject(full_Semaphore,-l);::WaitForSingleObject(mutex,-l);//EnterCriticalSection(&PC_Critical);cout<<“消費者"<<my_id<〈”發(fā)出消費請求。"<<endl;cout?endl;cout<<”消費者,,<<myjd<<,'消費"?endl;out=(out+l);Sleep(my_delay*10);cout<<“消費者完成了消費。"<<endl?endl;//LeaveCriticalSection(&PC_Critical)ReleaseSemaphore(empty_Semaphore,l,NULL);::ReleaseMutex(mutex)〃輸入進(jìn)程信息的函數(shù)voidinput(void)(〃定義局部變量intid;charch;doubletime;intk=0;cout<<”********請輸入線程信息:"?encll;cout<<“********線程ID;"?endl;cout<<”********線程的類型(生產(chǎn)者線程,還是消費者線程,P代表生產(chǎn)者,C代表消費者);"?endl;cout<<“********線程延遲時間?!?lt;<endl;coutvv"********線程ID為0時結(jié)束線程信息的輸入!!”<<endl<<endl;while(id!=0)(cout?"pleaseinputathreadID."?endl;cin?id;Threadlnfo[k].ID=id;if(id==O)break;cout?"pleaseinputathreadtype."?endl;cin?ch;Threadlnfo[k].type=c
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 時間管理的基本措施
- 二年級美術(shù)下冊教案-《第4課 漂亮的包裝紙》教學(xué)設(shè)計 人教版
- 農(nóng)業(yè)產(chǎn)業(yè)鏈生態(tài)化改造指南
- 2025屆河北省保定高三10月一模摸底考-生物試題(含答案)
- 區(qū)塊鏈技術(shù)在數(shù)字貨幣中的應(yīng)用預(yù)案
- 農(nóng)民合作社法律事務(wù)作業(yè)指導(dǎo)書
- 裝配式住宅項目機(jī)電工程施工方案
- 汽車美容與裝飾一體化教程 教案 模塊二 3.其他部位清洗
- P2P網(wǎng)絡(luò)借貸平臺服務(wù)協(xié)議
- 軌道式精準(zhǔn)投飼機(jī)器人設(shè)計與試驗
- 太陽能熱利用系統(tǒng)的太陽能集熱系統(tǒng)、得熱量、集熱效率、太陽能保證率執(zhí)行標(biāo)準(zhǔn)
- 試驗檢驗資料管理措施
- 加油站安全風(fēng)險評估與控制培訓(xùn)
- 機(jī)械工程師的職業(yè)發(fā)展與就業(yè)前景
- 連接員題庫(全)題庫(855道)
- 精神科理論知識考核試題題庫及答案
- 康復(fù)治療信息管理系統(tǒng)需求說明
- 臺球棋牌俱樂部管理制度
- 學(xué)校食堂餐廚廢棄物(泔水)處理記錄
- 中醫(yī)養(yǎng)生之藥膳食療考試試題
- 低壓開關(guān)產(chǎn)品出廠檢驗報告
評論
0/150
提交評論