程序間同步的幾種方法

2021-08-24 20:14:26 字數 739 閱讀 8122

什麼是臨界區?

每個程序中訪問臨界資源的那段程式稱為臨界區(臨界資源是一次僅允許乙個程序使用的共享資源)。每次只准許乙個程序進入臨界區,進入後不允許其他程序進入。

程序間同步

把非同步環境下的一組併發程序因直接制約而互相傳送訊息而進行互相合作、互相等待,使得各程序按一定的速度執行的過程稱為程序間的同步。

實現程序間同步主要有如下方法:

一種最為簡單和直觀的方法是直接制約的程序互相給對方程序傳送執行條件已經具備的訊號。這樣,被制約程序即可省去對執行條件的測試,只要收到了制約程序發來的訊號便開始執行,而在未收到制約程序發來的訊號時便進入等待狀態。

p操作:

p(s)是乙個原語操作,p操作執行 s– ,若s為負數,呼叫p(s)的程序被阻塞,放到等待佇列q中。

v操作

v(s)剛好與p(s)操作相反,v操作執行 s++ ,若s為大於0,繼續執行;s <=0,從訊號燈等待佇列移出乙個程序,解除等待狀態,返回本程式繼續執行。

使用p、v原語操作實現程序間的同步,分為3步:

首先為各併發程序設定私用訊號量

然後為私用訊號量賦初值

最後利用p、v原語和私用訊號量規定各程序的執行順序

併發程序同步和互斥問題,一般都可以抽象為生產者-消費者問題。

張堯學著《計算機作業系統教程》第4版

保持程序同步的幾種方法

1 訊號量 用於程序間傳遞訊號的乙個整數值。在訊號量上只有三種操作可以進行 初始化,p操作和v操作,這三種操作都是原子操作。p操作 遞減操作 可以用於阻塞乙個程序,v操作 增加操作 可以用於解除阻塞乙個程序。基本原理是兩個或多個程序可以通過簡單的訊號進行合作,乙個程序可以被迫在某一位置停止,直到它接...

程序間同步的方法

2010 05 10 01 03 42 分類 linux 字型大小 訂閱 程序間通訊 ipc 方法主要有以下幾種 管道 fifo 共享記憶體 訊息佇列 訊號 1.管道中還有命名管道和非命名管道 即匿名管道 之分,非命名管道 即匿名管道 只能用於父子程序通訊,命名管道可用於非父子程序,命名管道就是fi...

linux程序間的同步方法

程序間通訊 ipc 方法主要有以下幾種 管道 fifo 共享記憶體 訊息佇列 訊號 1.管道中還有命名管道和非命名管道 即匿名管道 之分,非命名管道 即匿名管道 只能用於父子程序通訊,命名管道可用於非父子程序,命名管道就是fifo,管道是先進先出的通訊方式 2.訊息佇列是用於兩個程序之間的通訊,首先...