程序同步的幾種方式

2021-09-07 13:06:17 字數 709 閱讀 3754

1、訊號量

用於程序間傳遞訊號的乙個整數值。在訊號量上只有三種操作可以進行:初始化,p操作和v操作,這三種操作都是原子操作。

p操作(遞減操作)可以用於阻塞乙個程序,v操作(增加操作)可以用於解除阻塞乙個程序。

基本原理是兩個或多個程序可以通過簡單的訊號進行合作,乙個程序可以被迫在某一位置停止,直到它接收到乙個特定的訊號。該訊號即為訊號量s。

為通過訊號量s傳送訊號,程序可執行原語semsignal(s);為通過訊號量s接收訊號,程序可執行原語semwait(s);如果相應的訊號仍然沒有傳送,則程序被阻塞,直到傳送完為止。

可把訊號量視為乙個具有整數值的變數,在它之上定義三個操作:

2、管程

管程是由乙個或多個過程、乙個初始化序列和區域性資料組成的軟體模組,其主要特點如下:

管程通過使用條件變數提供對同步的支援,這些條件變數包含在管程中,並且只有在管程中才能被訪問。有兩個函式可以操作條件變數:

3、訊息傳遞

訊息傳遞的實際功能以一對原語的形式提供:

這是程序間程序訊息傳遞所需要的最小操作集。

乙個程序以訊息的形式給另乙個指定的目標程序傳送訊息;

程序通過執行receive原語接收訊息,receive原語中指明傳送訊息的源程序和訊息。

保持程序同步的幾種方法

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

程序同步(一) 程序同步相關概念

在os中引入程序後,雖然提高了資源的利用率和系統吞吐量,但是由於程序的非同步性將會給系統造成混亂,尤其是他們在爭搶臨界資源時。當多個程序去爭用共享變數 鍊錶時,可能導致資料處理出錯。程序同步的任務就是對多個相關程序在執行次序上進行協調,使得併發執行的程序之間能有效地共享資源和相互合作,從而使程式的執...

Linux程序同步

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