程序間同步與互斥 P V原語操作

2021-09-24 12:24:34 字數 1124 閱讀 9472

p
v操作:s=s+1,表示釋放乙個被占用的資源;如果s+1大於0,則該程序繼續執行,如果s+1小於等於0,則從該訊號的等待佇列中喚醒乙個執行緒,然後再返回原程序繼續執行或轉程序排程

v
用於互斥的訊號量s與所有的併發程序有關,所以稱之為公有訊號量

初始化訊號量s為1,當進入臨界區時執行p操作,退出臨界區時執行v操作

p(s)

臨界區**;

v(s)

注意:

示例:一、 生產圍棋的工人不小心把相等數量的黑子和白子混裝載乙個箱子裡,現要用自動分揀系統把黑子和白子分開,該系統由兩個併發執行的程序組成,功能如下:

(1)程序a專門揀黑子,程序b專門揀白子;

(2)每個程序每次只揀乙個子,當乙個程序在揀子時不允許另乙個程序去揀子;

二、某車站售票廳,任何時刻最多可容納20名購票者進入,當售票廳中少於20名購票者時,廳外的購票者可立即進入,否則需要在外面等待。每個購票者可看成乙個程序。

程序同步時的訊號量只與制約程序及被制約程序有關而不是與整組併發程序有關,所以稱該訊號量為私有訊號量

注意:p操作不一定在v操作的前面

示例:一、 4中的示例一加上下面條件(3)

(3)當乙個程序揀了乙個棋子(黑子或白子)以後,必讓另乙個程序揀乙個棋子(黑子或白子)

二、生產者程序p1不斷地生產產品送入緩衝區,消費者程序p2不斷地從緩衝區中提取產品消費。(單緩衝區的生產者和消費者問題)

p1(生產):p(s1)測試緩衝區是否為空----->產品送緩衝區---->v(s2)設定有產品---->重複

p2(消費):p(s2)測試是否有產品----->從緩衝區取出產品------->v(s1)設定緩衝區為空—>重複

三、設有乙個生產者和乙個消費者,緩衝區可以存放n件物品,生產者程序p1不斷地生產產品,消費者程序p2不斷地消費產品。(多緩衝區同步問題)

p1(生產):p(s1)—>p(s)—>產品送緩衝區—>v(s)---->v(s2)

p2(消費):p(s2)------>p(s)—>從緩衝區取出乙個產品----->v(s)----->v(s1)

其中p(s)—>緩衝區—>v(s)是實現程序間的互斥,必須滿足pv實現互斥操作的原則

參考:

作業系統 程序管理 PV原語解決同步和互斥問題

作業系統 程序管理 pv原語解決同步和互斥問題 答 pv操作的含義 pv操作由p操作原語和v操作原語組成 原語是不可中斷的過程 對訊號量進行操作。pv操作的意義 我們用訊號量及pv操作來實現程序的同步和互斥。pv操作屬於程序的低階通訊。在多道程式環境下,併發執行的程序之間存在在不同的相互制約關係。同...

程序間同步 互斥鎖與條件變數

include 互斥鎖 用於主動獲取共享資源時的互斥與等待 static pthread mutex t mutex pthread mutex initializer int pthread mutexattr init pthread mutexattr t int pthread mutexa...

程序互斥與同步

1.解釋併發與並行,並說明兩者關係。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物理資源強制行使多使用者共享以提高效率。並行性指兩個或兩個以上事件或活動在同一時刻發生。在多道程式環境下,並行性使多個程式同一時刻可在不同cpu上同時執行。併發與並行是兩個既...