作業系統 讀者寫者問題

2021-10-01 15:21:04 字數 1076 閱讀 4761

乙個資料檔案或記錄可以被多個程序共享。

唯讀的程序為「reader程序」,其他程序為「writer程序」。

允許多個物件同時讀乙個共享物件,但是不允許乙個writer程序和其他reader程序同時共享物件。

使用記錄性訊號量解決讀者與寫者問題

互斥訊號量wmutex:實現reader與writer程序間在讀或寫時的互斥,

整型變數readcount:表示正在讀的程序數目。

由於只要有乙個reader程序在讀,便不允許writer程序寫。

所以,僅當readcount=0,即無reader程序在讀時,reader才需要執行wait(wmutex)操作,

若wait(wmutex)操作成功,reader程序便可以去讀,相應地,做readercount+1操作。

同理,僅當reader程序在執行了readcount-1操作後其值為0後,才需要執行signal(wmutex)操作,以便讓writer程序寫

互斥訊號量 rmutex:reader程序間互斥訪問readcount

總結:

wmutex:是讀寫時的互斥訊號量。

rmutex:是讀程序互斥訪問readcount的訊號量

讀者優先,會造成寫者飢餓現象。(讀者優先指的是除非有寫者在寫檔案,否則讀者不需要等待)

semaphore wmutex=1;//讀寫互斥,寫寫互斥

semaphore rmutex=1;讀間訪問readcount互斥

int readcount=0;讀者程序數

reader}

writer

}

讀者寫者問題 作業系統

動機 共享資料的訪問 兩種型別使用者 讀者 不需要修改資料 寫者 讀取和修改資料 問題的約束 允許同一時間有多個讀者,但在任何時候只有乙個寫者 當沒有寫者是讀者才能訪問資料 當沒有讀者和寫者時,寫者才能訪問資料 在任何時候只有乙個執行緒能操作共享變數 多個併發程序的資料集共享 rcount 有多少個...

作業系統 讀者 寫者問題

讀者間可以同時訪問資源 任一寫者必須與其他寫者或者讀者互斥訪問共享資源 分析 寫者與任一程序互斥訪問共享資源 讀者互斥訪問readcount變數 1申請對檔案的使用權p mutex 2寫檔案 3釋放對檔案的使用權v mutex 設正在讀的讀者個數readcount初 0 1第乙個讀者來 申請對檔案的...

作業系統 讀者寫者問題

有兩組併發程序 讀者和寫者,共享乙個檔案f 讀者可以同時讀取檔案 讀者和寫者不能同時對檔案進行操作 兩個讀者也不能同時對檔案進行操作 讀者優先模型 讀者不釋放寫者的臨界區資源,寫者就不能進行操作 int readcount 0 讀程序計數 semaphore writeblock,mutex 訊號量...