作業系統PV操作及讀者寫者問題

2021-08-17 14:41:13 字數 2087 閱讀 7040

作業系統pv操作及讀者寫者問題

目錄:1、訊號量:

2、p、v操作原語可描述為以下式子:

3、解釋:

4、互斥模式原理:

5、同步模式原理:

6、讀者寫者問題:

1、訊號量:

pv操作與訊號量的處理有關,訊號量是表示資源的實體,是乙個與佇列有關的整型變數,其值只能由p、v操作來改變。作業系統利用訊號量對程序和資源進行控制和管理。

2、p、v操作原語可描述為以下式子:

[cpp]view plain

copy

"font-family:'times new roman';font-size:14px;"

>procedure p(var s:samephore);  

procedure v(var s:samephore);  

其中用到兩個標準過程:

asleep(s.queue):執行此操作的程序的pcb進入s.queue尾部,程序變成等待狀態

wakeup(s.queue):將s.queue頭程序喚醒插入就緒佇列

s.value初值為1時,可以用來實現程序的互斥。

3、解釋:

p(s):

(1)s:=s-1;

(2)若s>=0,則呼叫p(s)的程序繼續執行。

(3)若s<0,則呼叫p(s)的程序被阻塞,並把它插入到等待訊號量s的阻塞佇列中

v(s):

(1)s:=s+1;

(2)若s>0,則呼叫v(s)的程序繼續執行;

(3)若s<=0,從等待訊號量s的阻塞佇列中喚醒頭乙個程序,然後呼叫v(s)的程序繼續執行

4、互斥模式原理:

s:=1

程序p1                       程序p2

p(s)                            p(s)

s1                               s2

v(s)                            v(s)

分析:由於訊號量的初值為1,故第乙個程序p1執行p操作後訊號量減為0,表明臨界資源空閒,可分配給該程序,使之進入臨界區。若此時又有第二個程序p2欲進入臨界區,也應先執行p操作。結果使s=-1,表示臨界資源已被占用,因此第二程序變為阻塞狀態,當第乙個程序在臨界區內將s1執行完後再執行v操作,釋放該資源而使訊號量恢復到0,有喚醒了第二個程序p2。待第二個程序p2完成對臨界資源的使用(s2)後,又執行v操作,最後訊號量恢復到初值1。

5、同步模式原理:

s:=0

程序p1                        程序p2

l1:p(s)                       l2:v(s)

分析:設程序p1先到達l1點,當它執行p(s)時,使s=-1;

於是p1進入阻塞狀態並進入訊號量s的阻塞佇列;

然後程序p2到達l2點,當它執行到v(s)時,將s值變為0,於是喚醒p1,使其轉變為就緒狀態,當再次排程到程序p1時,則p1可在l1點後繼續執行下去,由此可見,當程序p1到達l1時,除非程序p2已過了l2點,否則程序p1就要暫停執行,這就是說,p1在l1點必須與程序p2進行同步。在這種同步操作中,進出那個p1受到程序p2的制約,而程序p2卻不受程序p1的制約,所以是非對稱的。

6、讀者寫者問題:

(1)滿足條件:①寫寫互斥;②讀寫互斥;③讀讀同時

(2)單純使用訊號量不能解決讀者與寫者問題,必須引入計數器readcount對讀程序計數;rmutex是用於對計數器readcount操作的互斥訊號量;wmutex表示是否允許寫的訊號量;

(3)**示例:

[plain]view plain

copy

semaphore rmutex = 1, wmutex = 1; //rmutex 是用於對計數器readcount操作的互斥訊號量;wmutex表示是否允許寫的訊號量;  

int readcount = 0; //整型變數,表示讀者數  

void reader()while(true);  

}  void writer()while(true);  

}  void main()

作業系統PV操作及讀者寫者問題

作業系統pv操作及讀者寫者問題 目錄 1 訊號量 2 p v操作原語可描述為以下式子 3 解釋 4 互斥模式原理 5 同步模式原理 6 讀者寫者問題 1 訊號量 pv操作與訊號量的處理有關,訊號量是表示資源的實體,是乙個與佇列有關的整型變數,其值只能由p v操作來改變。作業系統利用訊號量對程序和資源...

PV 操作 讀者寫者問題

讀者 寫者問題 訊號量的英文叫做 semaphore,是乙個用於在程序間傳遞的特殊便量,通常定義成乙個結構體,其中包含乙個整形變數,以及乙個佇列,如下 struct semaphore一般來說,s 0,s 表示可用資源數量。執行一次 p 操作意味著請求分配乙個單位資源,因此 s 當 s 0 表示已經...

作業系統複習筆記 pv操作 讀者 寫者問題回顧

1.朱老師的講解 要求如上 d 只有檔案被正式關閉以後,寫者才能以讀寫的方式開啟檔案。讀者優先 你可以自己腦補一下分析的那些細節 寫操作必須互斥地來進行,所以有semaphore ws 1 ps 對於目前來說的我說,目前一般是讀者寫者類的問題我都是要設定整數型 int 的計數器的嘿嘿,其他的題目一般...