作業系統 讀者與寫者問題

2021-09-13 13:34:39 字數 729 閱讀 7907

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

唯讀的程序為「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第乙個讀者來 申請對檔案的...

作業系統 讀者寫者問題

乙個資料檔案或記錄可以被多個程序共享。唯讀的程序為 reader程序 其他程序為 writer程序 允許多個物件同時讀乙個共享物件,但是不允許乙個writer程序和其他reader程序同時共享物件。使用記錄性訊號量解決讀者與寫者問題 互斥訊號量wmutex 實現reader與writer程序間在讀或...