操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)
操作系統的pv操作是很核心的概念。
臨界區 : 我們把并發進程中與共享變量有關的程序段稱為臨界區。
信號量 : 信號量的值與相應資源的使用情況有關。當它的值大于0時,表示當前可用資源的數量;當它的值小于0時,其絕對值表示等待使用該資源的進程個數。
進程的互斥:是指當有若干個進程都要使用某一共享資源時,任何時刻最多只允許一個進程去使用該資源,其他要使用它的進程必須等待,直到該資源的占用著釋放了該資源。
進程的同步:是指在并發進程之間存在這一種制約關系,一個進程依賴另一個進程的消息,當一個進程沒有得到另一個進程的消息時應等待,直到消息到達才被喚醒。
pv操作又稱wait,signal原語。
主要是操作進程中對進程控制的信息量的加減控制。
wait用法:
wait(num),num是目標參數,wait的作用是使其(信息量)減一。
如果信息量>=0,則該進程繼續執行;否則該進程置為等待狀態,排入等待隊列。
signal用法:
signal(num),num是目標參數,signal的作用是使其(信息量)加一。
如果信息量>0,則該進程繼續執行;否則釋放隊列中第一個等待信號量的進程。
一下提供兩個例題,答案僅供參考。
1.有一閱覽室,共有100個座位。讀者進入時必須先在一種登記表上登記,該表為每一座位列一個表目,包括座號和讀者姓名。讀者離開時要注銷掉登記內容。試用wait和signal原語描述讀者進程的同步問題。
首先提供一份我參考的答案網址
https://www.ppkao.com/tiku/shiti/10058883.html
然后·我個人理解的代碼(解釋基本在注釋中):
2.這個題是按我自己理解寫的,無任何參考(可能有錯)
(1)小問可以看成經典的生產消費模型,
共用資源是獨木橋,且同時只允許一人通過。
(2)小問
設信號量: MUTEX=1 (東西方互斥)MD=1 (東向西使用計數變量互斥)MX=1 (西向東使用計數變量互斥) 設整型變量: CD=0 (東向西的已上橋人數)CX=0 (西向東的已上橋人數)從東向西: P (MD) IF (CD=0) {P (MUTEX) } CD=CD+1 V (MD) 過橋 P (MD) CD=CD-1 IF (CD=0) {V (MUTEX) } V (MD) 從西向東: P (MX) IF (CX=0) {P (MUTEX) } CX=CX+1 V (MX) 過橋 P (MX) CX=CX-1 IF (CX=0) {V (MUTEX) } V (MX)有些不規范,如果有錯,希望大家多多指教!
加油!
ps:第二次修改,學藝不精,例題坑了(少寫,有錯)部分同學!不好意思!現在改了,我把例題及一些其他概念也補充了一些,雖然可能還是不太好!
總結
以上是生活随笔為你收集整理的操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编loop指令及用法解释
- 下一篇: 打开VMware的系统出错