例題詳解
訊號量大於等於0:代表可供併發使用的資源實體數。
小於0:其絕對值標識正在等待使用的程序的數量。
pv操作
p操作: 作用是將訊號量減1。當訊號量變成負數時,則停止呼叫p操作的程序,直到另乙個程序對同一訊號量執行v操作。
v操作: 作用是將訊號量加1。當訊號量小於等於0時,從相應的佇列中選擇乙個程序喚醒它。
互斥/同步
互斥: 一組併發的程序中乙個或多個程式段,因共享某乙個公有資源而導致他們必須以乙個不允許交叉執行的單位執行,所以互斥訊號量的取值只能是1或0。簡而言之,互斥是要保證臨界資源在某一時刻只能被乙個程序訪問。
同步: 非同步環境下的一組併發程序因直接制約而互相傳送訊息,程序互相合作和等待,使得各個程序按一定的速度執行的過程。簡而言之,程序之間是非同步執行的,同步是說使各個程序按一定的制約順序和速度執行。
某企業的生產流水線上有2名工人p1 和p2,1名檢驗員p3。p1將初步加工的半成品放入半成品箱b1,p2從半成品箱b1取出繼續加工,加工好的產品放入成品箱b2,p3從成品箱b2取出產品檢驗。假設b1可存放n件半成品,b2可存放m件產品,並設定6個訊號量s1、s2、s3、s4、s5和s6,且s3和s6的初值都為0,採用pv操作實現p1、p2和p3的同步模型如下圖所示,則訊號量s1和s5(1 ),s2和s4的初值分別為(2 )。
1、a、分別為同步訊號量和互斥訊號量,初值分別為0和1
b、都是同步訊號量,其初值分別為0和0
c、都是互斥訊號量,其初值分別為1和1
d、都是互斥訊號量,其初值分別為0和1
訊號量分析
* s1 互斥訊號量,指的是b1這個容器,同一時間只能被同乙個人占用,初始值為1
* s5 互斥訊號量,指的是b2這個容器,同一時間只能被同乙個人占用,初始值為1
* s2 出現在b1中半成品加工,與從b1取出半成品操作後,因此s2表示的是b1的容量,初始值為n
* 同理 s4表示的是b2中的容量,初始值為m
* s3 同步訊號量(p1和p2互相合作,等待,相互制約),表示箱子b1中產品個數,初始值為0
* s6 同步訊號量,表示箱子b2中產品個數,初始值為0
詳細解析p1初步加工,占用半成品箱s1,即p
(s1),此時s1從1變成0,其他人要使用的話需要等待。
p1將半成品放到b1中,b1容量被占用了乙個p
(s2)。
之後,釋放s1,即v
(s1),此時s1從0變成1,可以被其他人使用。
v(s3)表示箱子中產品個數加1。
p2從b1執行取出半成品操作,p
(s3)表示箱子b1中產品個數減1。p
(s1)表示占用半成品箱子s1,
即p2正在使用箱子b1,其他人如果想使用需要等待。
p2從b1取出半成品後,釋放s1,v
(s1)表示箱子b1未被占用,可以被其他人使用。
v(s2)表示b1容量被釋放了乙個,即容量增加1個。
後續成品在b2箱中的操作同前邊操作原理一模一樣。
只要把b1換成b2,p1換成p2,p2換成p3,s1換成s5,s2換成s4,s3換成s6即可。
訊號量,PV操作
它從整型訊號量 記錄型訊號量,進而發展為 訊號量集 機制 訊號量集,就是訊號量的集合 現在要用的是記錄型訊號量 1,訊號量幹嘛用的?訊號量 解決程序間同步與互斥問題 2.訊號量的組成 訊號量 分很多種,在此寫記錄型訊號量 record semaphore 訊號量組成 每個訊號量s除乙個整數值s.va...
訊號量同步 P V 操作
訊號是 e.w.dijkstra 在二十世紀六十年代末設計的一種程式設計架構。dijkstra 的模型與鐵路操作有關 假設某段鐵路是單線的,因此一次只允許一列火車通過。訊號將用於同步通過該軌道的火車。火車在進入單一軌道之前必須等待訊號燈變為允許通行的狀態。火車進入軌道後,會改變訊號狀態,防止其他火車...
PV操作和訊號量
乙個程序被分為了 就緒 ready 執行 running 和 阻塞 blocking 三個工作狀態,當前用處理器的哪個程序是 執行 狀態,當前已經具備了使用處理器的條件而等待處理器的程序是處於就緒狀態的程序,當執行的程序由於某種原因無法繼續使用處理器的時候就停止他使用處理器使他進入 阻塞 狀態,當他...