讀者寫者問題-操作系統(tǒng)實驗報告_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗內容實驗內容1、定義一個數(shù)據(jù)緩存buffer及用于實現(xiàn)同步互斥的信號量。2、定義一個讀者函數(shù):?當有寫者在占用buffer時,讀者應該等待,直到寫者不再使用該buffer。?當有其他讀者在占用buffer時,讀者可對buffer進行讀取操作。?當buffer中有數(shù)據(jù)時,則從其中讀取一個數(shù)據(jù),并顯示然后退出。?當buffer中沒有數(shù)據(jù)時,應等待,直到buffer中有數(shù)據(jù)可讀。3、定義一個寫者函數(shù)?當有讀者在占用buffer時,寫者應該

2、等待,直到所有的讀者都退出為止。?當有其他寫者占用buffer時,該寫者應該等待,直到占用buffer的寫者退出為止。?當buffer有空閑時,寫者應該在buffer中寫入一個數(shù)據(jù)并退出。?當buffer滿時,寫者應該等待,直到buffer有空閑為止。4、定義主函數(shù),在其中可以任意創(chuàng)建讀者與寫者。?可根據(jù)用戶輸入創(chuàng)建讀者或寫者進程(線程)。5、用戶界面2.寫者:寫者:開始開始讀出的內容:讀出的內容:1.讀者:讀者:開始開始結束結束21讀

3、者隊列等待讀者隊列等待結束結束寫出的內容:寫出的內容:Hellowld!結束結束wq.index=0f(i=0i20i)rq.readers[i]=0wq.writers[i]=0讀進程讀操作voidread()inti=0read_idif(rcount==0)當前沒有讀進程在讀可能有寫進程在寫可能CPU空閑if(w==1)如果CPU空閑,讀者拿到CPUw相當于一個P操作rcountif(temp[0]==0)sign=0if(cho

4、ice==1)rq.readers[rq.index]=read_id將讀者進程加入等待隊列RFwakeup()returnelserq.readers[rq.index]=read_id將讀者進程加入等待隊列WFwakeup()returnifprintf(“讀者%d正在讀n“read_id)f(i=0i300i)讀取temp內容即寫者寫的內容if(temp[i]==0)printf(“n“)returnifprintf(“%c“te

溫馨提示

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

評論

0/150

提交評論