讀者寫(xiě)者問(wèn)題-操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共14頁(yè)).doc
《讀者寫(xiě)者問(wèn)題-操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共14頁(yè)).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《讀者寫(xiě)者問(wèn)題-操作系統(tǒng)實(shí)驗(yàn)報(bào)告(共14頁(yè)).doc(14頁(yè)珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)內(nèi)容 1、定義一個(gè)數(shù)據(jù)緩存buffer及用于實(shí)現(xiàn)同步互斥的信號(hào)量。 2、定義一個(gè)讀者函數(shù):l 當(dāng)有寫(xiě)者在占用buffer時(shí),讀者應(yīng)該等待,直到寫(xiě)者不再使用該buffer。l 當(dāng)有其他讀者在占用buffer時(shí),讀者可對(duì)buffer進(jìn)行讀取操作。l 當(dāng)buffer中有數(shù)據(jù)時(shí),則從其中讀取一個(gè)數(shù)據(jù),并顯示然后退出。l 當(dāng)buffer中沒(méi)有數(shù)據(jù)時(shí),應(yīng)等待,直到buffer中有數(shù)據(jù)可讀。 3、定義一個(gè)寫(xiě)者函數(shù)l 當(dāng)有讀者在占用buffer時(shí),寫(xiě)者應(yīng)該等待,直到所有的讀者都退出為止。l 當(dāng)有其他寫(xiě)者占用buffer時(shí),該寫(xiě)者應(yīng)該等待,直到占用buffer的寫(xiě)者退出為止。l 當(dāng)
2、buffer有空閑時(shí),寫(xiě)者應(yīng)該在buffer中寫(xiě)入一個(gè)數(shù)據(jù)并退出。l 當(dāng)buffer滿(mǎn)時(shí),寫(xiě)者應(yīng)該等待,直到buffer有空閑為止。 4、定義主函數(shù),在其中可以任意創(chuàng)建讀者與寫(xiě)者。l 可根據(jù)用戶(hù)輸入創(chuàng)建讀者或?qū)懻哌M(jìn)程(線(xiàn)程)。 5、用戶(hù)界面2. 寫(xiě)者:開(kāi)始讀出的內(nèi)容:1. 讀者:開(kāi)始結(jié)束21讀者隊(duì)列等待結(jié)束寫(xiě)出的內(nèi)容:Hello world !結(jié)束實(shí)驗(yàn)當(dāng)堂所要完成事情列表:1. 調(diào)試程序使其在讀者優(yōu)先模式下可以運(yùn)行并且能實(shí)現(xiàn)基本的功能得出正確的結(jié)果:能夠?qū)崿F(xiàn)讀寫(xiě)互斥,寫(xiě)寫(xiě)互斥,讀讀不互斥,一個(gè)進(jìn)程結(jié)束能夠喚醒等待隊(duì)列中的進(jìn)程(先讀者隊(duì)列后寫(xiě)著隊(duì)列)2. 根據(jù)實(shí)驗(yàn)要求完善功能:由用戶(hù)決定寫(xiě)者向緩
3、沖區(qū)中寫(xiě)入的內(nèi)容,讀者能夠讀出并顯示出來(lái);當(dāng)緩沖區(qū)中沒(méi)有數(shù)據(jù)時(shí),讀者要等待,直到緩沖區(qū)中有數(shù)據(jù)才能讀3. 根據(jù)“讀者優(yōu)先”加以改變,增加一個(gè)“寫(xiě)者優(yōu)先”模式,并且由用戶(hù)來(lái)選擇模式源代碼:#include#includeint rcount=0;/正在讀的讀者數(shù)量int wcount=0;/寫(xiě)者隊(duì)列中等待寫(xiě)操作的寫(xiě)者數(shù)量int read_id=0;/讀進(jìn)程號(hào)int write_id=0;/寫(xiě)進(jìn)程號(hào)int w=1;/讀寫(xiě)互斥信號(hào)量char temp300 = 0;int choice; /用戶(hù)選擇讀者優(yōu)先OR寫(xiě)者優(yōu)先int sign; /標(biāo)識(shí)temp空的信號(hào)量 0表示temp空void WFwak
4、eup();void RFwakeup();struct rqueue/讀者等待隊(duì)列int readers200;int index;rq;struct wqueue/寫(xiě)者等待隊(duì)列int writers200;int index;wq;/*void first() /初始化int i;rq.index = 0;wq.index = 0;for(i = 0;i20;i+)rq.readersi = 0;wq.writersi = 0;*/*讀進(jìn)程讀操作void read()int i = 0;read_id+;if(rcount = 0)/當(dāng)前沒(méi)有讀進(jìn)程在讀 可能有寫(xiě)進(jìn)程在寫(xiě) 可能CPU空閑if
5、(w=1) /如果CPU空閑,讀者拿到CPUw-;/ 相當(dāng)于一個(gè)P操作rcount+;if(temp0 = 0)sign = 0;if(choice = 1)rq.readersrq.index+=read_id;/將讀者進(jìn)程加入等待隊(duì)列RFwakeup();return;elserq.readersrq.index+=read_id;/將讀者進(jìn)程加入等待隊(duì)列WFwakeup();return;/ifprintf(讀者%d正在讀n,read_id);for(i = 0;i 300;i+)/讀取temp內(nèi)容 即寫(xiě)者寫(xiě)的內(nèi)容if(tempi = 0)printf(n);return;/ifprin
- 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)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 讀者 問(wèn)題 操作系統(tǒng) 實(shí)驗(yàn) 報(bào)告 14
鏈接地址:http://zhizhaikeji.com/p-8669061.html