1. 程式人生 > >計算機作業系統感悟隨筆--訊號量機制

計算機作業系統感悟隨筆--訊號量機制

在這裡插入圖片描述 2.訊號量的基本應用 實現程序互斥 實現程序間的前趨關係(有序) 3.整型訊號量

把整型訊號量定義為一個表示資源數目的整型量S,除初始化外,僅能通過兩個標準的原子操作wait(S)和signal(S)來訪問。

wait(S)和signal(S)操作可以描述為:

wait(S):  while S <= 0 do no-op;
      S:=S-1;
signal(S):  S:=S+1;123

wait(S)和signal(S)是兩個原子操作,它們在執行時是不可中斷的。當一個程序在修改某訊號量時,沒有其他程序能同時對該訊號量進行修改。

在整型訊號量機制中的wait操作中,只要是訊號量S<=0,就會不斷地測試。因此該機制沒有遵循“讓權等待”準則,而是使程序處於“忙等”的狀態。 4.記錄型訊號量

記錄型訊號量機制採取了“讓權等待”策略,是一種不存在“忙等”現象的程序同步機制。它所包含的資料項描述為:

typedef struct{
int value;
struct process_control_block *list;
}semaphore;

wait(S)和signal(S)操作可描述如下: