作業系統之 訊號量機制

2021-07-06 08:02:46 字數 1109 閱讀 8901

訊號量機制是一種卓越成效的程序同步工具,訊號量機制已經被廣泛的使用於單處理機,和多處理系統的計算機網路中。

訊號量s

是乙個整數,

s大於等於零代表可供併發程序使用的資源實體數,當

s小於零時則表示正在等待使用臨界區的程序數,

整型訊號量:

整型訊號量定義乙個用於表示資源數目的整型量數目s 

,但是僅能通過兩個原子操作

wait(s

)和sigal (s

)來訪問,

while (s)

semaphore;

wait ( s) 與

signl (s) 

如下:

wait ( 

semaphore  *s){

s->value --;

if (s->value <= 0 ) block (s->list);

singal (semaphore  * s)

s->value ++;

if (s->value++) 

wakeup (s->list)

s->value代表系統中某類資源的數目,對其進行

wait

操作,意味著程序請求乙個單位的該類資源,使系統中可供分配的該類資源數目減少乙個,當

s.value<0 

表示該資源已經分配完畢,該程序呼叫阻塞原語將自己阻塞,放棄處理機,並插入訊號量鍊錶中,其遵循讓權等待,

此時s->value

表示的絕對值表示在訊號量鏈隊阻塞的程序數目,對訊號量的每次

signl

操作表示執行程序釋放乙個單元的資源,使系統中可供分配的的該類資源數增加乙個。若加1後

s->value<=0 

,表示在訊號量鏈隊中仍有等待該資源的程序被阻塞。故應調動

wakeup

原語。

and型訊號量

將程序在整個執行過程中的所有資源,一次性全部分配給程序,程序使用完後再一次性釋放,只要乙個程序尚未分配成功,其他所有為之分配的資源也不分配給它。

訊號量集:

對and

訊號量機制加以擴充,對程序所申請的所有資源以及每類資源不同的資源需求量,在一次

pv原語操作中完成申請或釋放。

作業系統之訊號量機制

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

作業系統 訊號量機制

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

作業系統之訊號量機制詳解

使用者程序可以通過使用乙個變數 可以是乙個整數,也可以是更為複雜的記錄型變數 可以用乙個訊號量來表示系統中某種資源的數量。比如 系統中只有一台印表機,就i可以設定乙個初值為1的訊號量。原語是一種特殊的程式段,其執行只能一氣呵成,不可被中斷。原語是由關中斷 開中斷指令實現的。wait s 原語和sig...