程序的同步與通訊

2021-09-18 03:45:28 字數 1570 閱讀 3941

同步關係(直接制約):為了完成乙個共同任務,相互協作的幾個程序需要在某些確定點上協調他們的工作,等待來自其它程序的資訊,以調整它們的推進速度,方可順利執行完畢。

互斥關係(間接制約):把併發程序間存在的因相互競爭使用獨佔資源(共享資源)而產生的制約關係。

例如:印表機,共享記憶體;

臨界資源:一次僅允許乙個程序使用的硬體或軟體資源。

注意:對於臨界資源,必須互斥訪問,否則會導致執行結果的不確定性。

臨界段(區):指在程序中訪問臨界資源的那段**。

訪問過程:

1)在進入臨界段之前,寫一段**以檢查可否進入臨界段,通常把這段**稱為進入區(申請,判斷)。

2)在退出臨界段後,必須有一段**來清除「正在訪問臨界段」標誌,或發出本程序已經退出臨界段的資訊,把這段**稱為退出區(釋放)。

同步機構:指能實現程序同步的機制,該機制能把其它程序需要的資訊傳送出去,也能測試自己需要的資訊是否到達。

同步機構應遵循4個準則:

空閒讓進;2、忙則等待;3、有限等待;4、讓權等待;

實現臨界段的硬體方法(低階方法)(了解)

遮蔽中斷法,如程序1的程式:

disableinterrupt();// 不准中斷

balance=balance+amount;  //執行指令

enableinterrupt(); //允許中斷

「test_and_set」指令

如果機器支援test_and_set,可用下列方法解決:(lock=false)

dowhile(1);

3、「swap」指令

該指令功能描述為:

void swap(boolean &a, boolean &b)

pv操作的實現

1. 訊號量定義

typedef struct semaphore

semaphore s;

2. p操作

p(s):   s.value=s.value-1;

if s.value<0 then 儲存現場,

將本程序掛入s.l佇列,等待重新排程。

3. v操作

v(s):   s.value:=value+1

if s.value≤0 then 從s.l佇列

取一程序,掛入就緒佇列。

4. p,v操作的優點:同步能力強

5. p,v操作的缺點:程式結構差,易產生死鎖。

訊號量的物理意義

p(s)操作:

①請求分配乙個s代表的資源,執行s.value-1;

②若s.value<0,表示系統已無該類資源,申請者阻塞。此時,|s.value|表示該訊號量上阻塞的程序數;

v(s)操作:

①程序釋放乙個s代表的資源,執行s.value+1;

②若s.value<=0,表示尚有程序因等待s代表的資源而處於阻塞狀態,所以應喚醒其中之一。

使用pv 操作的幾個經典案例,比如哲學家就餐問題

程序的同步與通訊

於文章,表示十分古老的文章了 進入sleep過程後,核心首先儲存進入睡眠時的處理機執行級,再提高處理機的執行優先順序,來遮蔽所有的中斷,接著將該程序置為 睡眠 狀態,將睡眠位址儲存在程序表項中,並將該程序放入睡眠佇列中。如果程序的睡眠是不可中斷的,做了程序上下文的切換後,程序便可安穩地睡眠。當程序被...

程序通訊與程序同步

多個程序可以共享系統中的各種資源,但其中許多資源一次只能為乙個程序使用,我們把一次僅允許乙個程序使用的資源稱為臨界資源。許多物理裝置都屬於臨界資源,如印表機等 對臨界資源的訪問必須互斥進行,在每個程序中,訪問臨界資源的那段 稱為臨界區。程序通訊與同步的目的主要有下面 1 資料傳輸 乙個程序需要將他的...

程序的同步與通訊2

二 讀者寫者問題 個資料檔案或記錄可被多個程序共享,我們把只要求讀該檔案的程序稱為 reader 程序 其他程序則稱為 writer程序 允許多個程序同時讀乙個共享物件,因為讀操 作不會使資料檔案混亂。但不允許乙個writer程序和其他reader程序或writer程序同時訪 問共享物件。因為這種訪...