作業系統 2 3訊號量機制

2021-08-28 13:38:40 字數 1964 閱讀 6939

荷蘭科學家

dijkstra(

狄克斯特拉

)提出的一種卓有成效的程序同步機制。 1

) 整型訊號量 1.

訊號量定義為乙個

整型量; 2.

根據初始情況賦相應的值;

3.僅能通過

兩個原子操作

來訪問。

p操作 wait(s):

while s<=0 do no-op;

s:=s-1;

v操作 signal(s):

s:=s+1;

2.記錄型訊號量

整型訊號量符合「有限等待」原則

signal釋放資源後,當cpu被分配給等待程序後,等待程序仍可繼續執行,可以符合「有限等待」。

但整型訊號量不符合「讓權等待」原則

整型訊號量的wait操作,當s ≤0時,當前程序會佔著cpu不斷測試;

訊號量原語不能被打斷,這個占有cpu的程序會一直不斷的佔據cpu迴圈下去,陷入忙等。

3.改進

不僅要有值的處理,還有佇列的處理。

此時形成記錄型資料結構,包括兩部分:

整型變數value(代表資源數目)

程序鍊錶l(鏈結所有等待程序):

**描述:

type semaphore=record

value:integer;

l:list of pcb;

end;

操作:s.value,s.l

p/v操作

p操作wait():

s.value = s.value - 1;

if s.value < 0 then block(s,l)

v操作signal():

s.value = s.value + 1;

if s.value <= 0 then wakeup(s,l)

4.訊號燈

定義訊號量semaphore代表可用資源實體的數量。又叫訊號燈。

當≥0,代表可供併發程序使用的資源實體數

當<0,表示正在等待使用該資源的程序數。

除初值外,訊號量的值僅能由標準原子操作p、v操作來改變。

5.訊號量機制的應用

6.互斥訊號量的注意點

7.實現有序

前趨關係:

為每對前趨關係設定乙個同步訊號量s12

,並賦初值為0。

則只有v

操作所在程序獲得

cpu時能執行

7.控制同步順序的注意點

訊號量值為0的點是限制的關鍵所在;

成對使用p和v原語(在有先後關係的兩個程序中),不能次序錯誤、重複或遺漏,否則同步順序出錯。

8.and型訊號量

出現原因:一些應用往往需要兩個或多個共享資源,而不是前述的乙個資源。程序同時要求的共享資源越多,發生

死鎖可能性越大。

解決思想:一次性分配給程序所需資源,用完一起釋放。wait

操作時對它所有需要的資源都要判斷,有

and條件,故稱「

and同步」、「同時

wait」。

9.

訊號量集

引入原因:

每次只能獲得或釋放乙個單位的資源,低效;

某些時候資源分配有下限的限制;

修改:在大於可分配設定的下界值

t前提下,每次可分配d個。

只有乙個訊號量s的幾種特殊情況:

作業系統 訊號量機制

用乙個整數型的變數作為訊號量,用來表示股系統中某種資源的數量。與普通整數變數的區別 對訊號量的操作只有三種,初始化,p操作,v操作。p操作 相當於wait原語,進入區 v操作 signal原語,相當於退出區。大體實現 wait 方法一氣呵成,避免併發導致的問題。但是不滿足 讓權等待原則 程序會處於忙...

作業系統之 訊號量機制

訊號量機制是一種卓越成效的程序同步工具,訊號量機制已經被廣泛的使用於單處理機,和多處理系統的計算機網路中。訊號量s 是乙個整數,s大於等於零代表可供併發程序使用的資源實體數,當 s小於零時則表示正在等待使用臨界區的程序數,整型訊號量 整型訊號量定義乙個用於表示資源數目的整型量數目s 但是僅能通過兩個...

作業系統之訊號量機制

使用者程序可以使用作業系統提供的原語來操作訊號量,以實現程序的互斥和同步 原語是一塊不可中斷的程式段,由關中斷實現 這對原語是wait signal 又稱為p v操作 訊號量可分為整形訊號量記錄型訊號量 程序的互斥需要遵守 四個原則,空則讓進,忙則等待,有限等待,讓全等待 由圖可以看出,在進行p操作...