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