進(jìn)程同步模擬實(shí)驗(yàn)_第1頁(yè)
進(jìn)程同步模擬實(shí)驗(yàn)_第2頁(yè)
進(jìn)程同步模擬實(shí)驗(yàn)_第3頁(yè)
進(jìn)程同步模擬實(shí)驗(yàn)_第4頁(yè)
進(jìn)程同步模擬實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、進(jìn)程同步模擬實(shí)驗(yàn)姓名學(xué)號(hào)實(shí)驗(yàn)日期成績(jī)?cè)簞e班級(jí)實(shí)驗(yàn)場(chǎng)地實(shí)驗(yàn)課程名稱計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)項(xiàng)目名稱進(jìn)程同步模擬實(shí)驗(yàn)對(duì)于每一個(gè)實(shí)驗(yàn)項(xiàng)目,實(shí)驗(yàn)報(bào)告(含預(yù)習(xí))一般應(yīng)包含以下內(nèi)容:第一部分一一預(yù)習(xí)后的書面匯報(bào)。其主要內(nèi)容應(yīng)包含:*1、實(shí)驗(yàn)?zāi)康模?*2、實(shí)驗(yàn)內(nèi)容。第二部分一一實(shí)驗(yàn)結(jié)果的書面匯報(bào)。其主要內(nèi)容應(yīng)包含:*3、實(shí)驗(yàn)源代碼;*4、實(shí)驗(yàn)結(jié)果及分析(含實(shí)驗(yàn)測(cè)試輸入數(shù)據(jù), 試驗(yàn)運(yùn)行結(jié)果截圖,用簡(jiǎn)潔的語(yǔ)言總結(jié)實(shí)驗(yàn),匯報(bào)是否達(dá)到實(shí)驗(yàn)?zāi)康模?5、實(shí)驗(yàn)體會(huì)、問題討論(談體會(huì)或感想、提出建議或意見、討論 與實(shí)驗(yàn)有關(guān)的且自己感興趣的問題、回答課后思考題)。一、實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn)?zāi)M讀者和寫者之間的關(guān)系,了解并掌握他們之間的

2、關(guān)系及其原理。由此增加對(duì)進(jìn)程 同步的問題的了解。具體如下:1)掌握基本的同步互斥算法,理解讀者和寫者模型;2)了解windows中多線程(多進(jìn)程)的并發(fā)執(zhí)行機(jī)制,線程(進(jìn)程)間的同步和互斥;3)學(xué)習(xí)使用windows中基本的同步對(duì)象,掌握相應(yīng)的API。二、實(shí)驗(yàn)內(nèi)容用高級(jí)語(yǔ)言編寫和調(diào)試一個(gè)采用“讀寫平等”策略的“讀者寫者”問題的模擬程序。利用模擬 信號(hào)量機(jī)制實(shí)現(xiàn)讀者和寫者問題;通過用戶控制讀進(jìn)程和寫進(jìn)程,反應(yīng)讀者和寫者問題中涉及的進(jìn)程 的同步與互斥。問題描述:模擬用信號(hào)量機(jī)制實(shí)現(xiàn)讀者和寫者問題,即有兩組并發(fā)進(jìn)程:讀者和寫者,共享一組數(shù) 據(jù)區(qū),進(jìn)行讀寫操作,要求任一時(shí)刻“寫者”最多只允許一個(gè),而“

3、讀者”則允許多 個(gè)。規(guī)則說(shuō)明:允許多個(gè)讀者同時(shí)執(zhí)行讀操作;不允許讀者寫者同時(shí)操作;不允許多個(gè)寫者同時(shí)操作。三、實(shí)驗(yàn)源程序(或?qū)嶒?yàn)步驟)#include int L;int r_num;int w_num;int Wmutex=1;int Rcount=0;int Rmutex=1;int r10=0,0,0,0,0,0,0,0,0,0;int w10=0,0,0,0,0,0,0,0,0,0;int w_wait11=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;int r_wait11=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;void write_

4、p(int i);void write_v(int i);void radd_p(int i);void radd(int i);void read_p(int i);void radd_v(int i);void read(int i);void rsub_p(int i);void rsub(int i);void read_v(int i);void rsub_v(int i);void write(int i);void write_p(int i)/模擬寫者對(duì)Wmutex的P操作,同時(shí)也作為寫者進(jìn)程的入口Wmutex-;if (Wmutex0)w_wait-Wmutex-1=i;el

5、sewrite(i);void write(int i)wi=4;void write_v(int i)/模擬寫者對(duì)Wmutex的V操作,同時(shí)也作為讀者進(jìn)程的入口wi=0;Wmutex+;if(Wmutex=0)&(w_wait0w_num)y=w_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;write(y);elsey=r_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd_v(y);void radd_p(int i)/模擬讀之前對(duì)Rmu

6、tex的操作,同時(shí)也作為讀者進(jìn)程的入口Rmutex-;if(Rmutex0)r_wait-Rmutex=i;elseradd(i);void radd(int i)/Rcount 加一Rcount+;if(Rcount=1)read_p(i);elseradd_v(i);void read_p(int i)/模擬讀者對(duì) Rmutex 的 P 操作Wmutex-;if(Wmutex0)w_wait-Wmutex-1=10;r_wait0=i;elseradd_v(i);void radd_v(int i)/模擬讀者對(duì) Rmutex 的 V 操作Rmutex+;if(Rmutex=0)int x,

7、y;y=r_wait0;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd(y);read(i);void read(int i)/讀操作ri=1;void rsub_p(int i)/模擬讀之后對(duì)Rmutex的P操作,讀操作完成時(shí)調(diào)用ri=0;Rmutex-;rsub(i);void rsub(int i)/Rcount 減一Rcount-;if(Rcount=0)read_v(i);elsersub_v(i);void read_v(int i)/模擬讀者對(duì) Rmutex 的 V 操作Wmutex+;if(Wmutex=0)&(w_wait0w_num)y=w

8、_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;write(y);elsey=r_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd_v(y);rsub_v(i);void rsub_v(int i)/模擬讀之后對(duì) Rmutex 的 V 操作Rmutex+;int main()coutw_num;while(w_num10)coutw_num;coutr_num;while(r_num10)coutr_num;int i,x,y,a20;whi

9、le(1)cout;for(x=0;x20;x+)ax=0;coutWmutex=WmutexRcount=RcountRmutex=Rmutexendl;for(x=0;xw_num;x+)if(wx=1)cout寫者(x+1)號(hào)正在寫endl;for(x=0;xr_num;x+)if(rx=1)cout讀者(x+1)號(hào)正在寫endl;if(w_wait0=-1)cout-等待隊(duì)列空閑-endl;elsecout等待隊(duì)列中有:;for (x=0;xw_num;x+)if(w_waitx=10)for(y=0;y5;y+)if(r_waity!=1)cout-讀者=0)&(w_waitxw_n

10、um)cout-寫,(w_waitx+1);coutendl;for(x=0;xw_num;x+)int L=0;for(y=0;yw_num;y+)if(x=w waity)ax=1;L=1;if(x=1) continue;cout寫者”(x+1);if(wx=0)cout申請(qǐng)”;elsecout完成”;for(x=0;xw_num;x+)int L=0;for(y=0;yw_num;y+)if(x=w_waity)ax+w_num=1;L=1;if(x=1) continue;cout(x+1)讀者(x+1);if(rx=0)cout申請(qǐng);elsecout完成;cout(w_num+r_

11、num+1)結(jié)束endl;coutL;while(L(w_num+r_num+1)|aL-1=1)if(aL-1=1)cout該對(duì)象已經(jīng)在等待隊(duì)列中,請(qǐng)重新輸入:elsecoutL;for(x=0;xw_num;x+)if(L=(x+1)if(wx=0)write_p(x);elsewrite_v(x);break;for(x=0;xr_num;x+)if(L=(x+1+w num)if(rx=0)radd_p(x);elsersub_p(x);break;if(L=(w_num+r_num+1)return 0;回四、實(shí)驗(yàn)結(jié)果及分析回-C:UsersAdm i n istrator.PC-2

12、0140913 QRDDe5ktopDe b u gsh iya n 1 .exe: 7Umut ex=lRco Lin t =0Rmut e x=l:等待隊(duì)JU 寶閑- 、一、_ 、一 、者1申鬲寫音3申請(qǐng)寫者4申請(qǐng)寫者5串請(qǐng)寫者6申請(qǐng)1.讀者1申請(qǐng)3讀者3申請(qǐng)4讀者4庫(kù)S讀者S申請(qǐng)6讀者6申請(qǐng)14備束輸X通項(xiàng)序號(hào)XWmut e x =0Rc o Lin t =0Rmut e x=l請(qǐng)S讀者S申請(qǐng)6龍請(qǐng)輸X選項(xiàng)序號(hào):6直寫者4完成寫者S申請(qǐng)寫者6申請(qǐng)1讀者1申請(qǐng)3讀者3申請(qǐng)4讀者4申 備申請(qǐng)只結(jié)束雀堂隊(duì)列中有 亙者請(qǐng)輸乂展項(xiàng)序,請(qǐng).寫看3Umut e x =1 Rcount =0RmLit ex=l.5寫者4完成寫者S申請(qǐng)寫者6申請(qǐng)1讀者1申請(qǐng)3讀者3申請(qǐng)4讀者4申 亦讀者6申請(qǐng)14結(jié)束號(hào)N有 1 -目頁(yè) 井青-5J 待者S輸 等胃請(qǐng)Umut e x =2 Rcount =0Rnut ex

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論