程序同步學習筆記

2021-09-29 16:04:11 字數 2007 閱讀 6279

程序同步的概念

程序同步也是程序之間直接的制約關係,是為完成某種任務而建立的兩個或多個執行緒,這個執行緒需要在某些位置上協調它們的工作次序而等待、傳遞資訊所產生的制約關係,程序間的直接制約關係**於它們之間的合作

由於程序切換並不完全受程序或作業系統的控制,所以在程序執行的任何時刻都可能發生程序切換

在作業系統中,程序是占有資源的最小單位(執行緒可以訪問其所在程序內的所有資源,但執行緒本身並不占有或僅僅占有一點必須資源)

臨界資源指那些同一時間只能被乙個程序所占有的資源,對臨界資源的訪問必須互斥

競爭條件:多個程序併發訪問和操作統一資料且執行結果與訪問發生的特定順序有關。

故引入臨界區問題的概念

臨界區問題的解答必須滿足三個要求:

解決臨界區問題的方法

peterson演算法中程序p

ip_i

pi​的結構

do

while

(true)

採用鎖的臨界區問題的解答

do

while

(true)

testandset指令的定義以及使用testandset的互斥實現

boolean testandset

(boolean *target)

do

while

(true)

swap指令的定義以及使用swap的互斥實現

void

swap

(boolean *a,boolean *b)

do

while

(true)

compareandswap指令的定義以及使用compareandswap的互斥實現

int

compareandswap

(int

*value,

int expected,

int new_value)

do

while

(true)

使用testandset/compareandswap指令的有限等待互斥

do

while

(true)

使用訊號量的互斥實現

do

while

(true)

訊號量操作wait()的定義

wait

(semaphore *s)

}

訊號量操作signal()的定義

signal

(semaphore *s)

}

有限緩衝問題中生產者和消費者程序結構

do

while

(true)

do

while

(true)

讀者寫者問題中寫者和讀者程序結構

do

while

(true)

do

while

(true)

solaris同步:適應互斥、條件變數、訊號量、讀寫鎖和十字轉門

windows xp同步:互斥鎖、訊號量、事件、定時器、自旋鎖

事件是乙個同步機制,其使用與條件變數相似,即當所需條件出現時會通知等待執行緒。

linux同步:自旋鎖和訊號量

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

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

Linux程序同步

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

程序同步問題

有讀者和寫者兩組併發程序,共享乙個檔案,當兩個或以上的讀程序同時訪問共享資料時不會產生 但若某個寫程序和其他程序 讀程序或寫程序 同時訪問共享資料時則可能導致資料不一致的錯誤。因此要求 允許多個讀者可以同時對檔案執行讀操作 只允許乙個寫者往檔案中寫資訊 任一寫者在完成寫操作之前不允許其他讀者或寫者工...