日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

操作系统之进程管理:14、读者-写者问题

發布時間:2025/3/15 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统之进程管理:14、读者-写者问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

14、讀者-寫者問題

  • 問題描述
  • 解題思路
  • 注意

問題描述

解題思路

分析:
無論是寫寫還是讀寫互斥都是對文件的互斥訪問,需要一個互斥信號量rw,在讀和寫的前后加入互斥訪問

問題1:但是這樣的話無法實現多個讀者訪問文件的操作;當reader1讀時,rw=0;在reader1讀的過程中切換到reader2讀時,因為rw=0而阻塞。
解決1:用一個計數變量count=0來對讀者進程計數,當第一個讀者進程開始時加鎖,最后一個讀者進程結束時解鎖

問題2:當倆個讀者進程并發執行時,r1判斷完count=0后切換到r2,此時r2認為count=0,加鎖;在切換回r1繼續執行加鎖,這樣r1進程就會被阻塞
解決2:產生該問題的原因是由于原因在于對count 變量的檢查和賦值無法一氣呵成;為了實現一氣呵成的操作,需要設置一個互斥的信號量mutex=1來互斥的訪問count變量

問題3:當一直有讀者進程到來時,寫進程就會“餓死”
解決3:在設置一個互斥的信號量w=1用于實現“讀寫公平”(或者說“寫優先”’)

分析:
1、讀者1–>讀者2:r1讀執行p(w)后r2阻塞;當r1執行完V(w),后r1讀,r2喚醒;倆個進程并發讀
2、寫者1–>寫者2:w1寫,w=0,w2在P(w)阻塞
3、寫者1–>讀者1:w1執行,w=0;讀者阻塞在P(w)
4、讀者1–>寫者1–>讀者2:r1讀,rw=0,w=1;w1寫,w=0,p(rw)阻塞;r2讀,P(w)阻塞;當r1結束后,w1喚醒;但r2依舊阻塞;這樣就實現了寫進程到來后,讀完立即執行寫進程。
5、寫者1–>讀者1–>寫者2:w1寫,w=0;r1讀,在p(w)阻塞;w2寫,p(w)阻塞;w1寫,由于讀1先入隊,所以執行r1讀,w2依舊阻塞;因此,其實他應該叫做“讀寫公平”比“寫優先”更合適。

注意

總結

以上是生活随笔為你收集整理的操作系统之进程管理:14、读者-写者问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。