作業系統 程序管理之經典同步問題

2021-09-26 18:28:12 字數 1007 閱讀 8883

生產消費者模型

多生產者多消費者模型

單生產者多消費者模型

哲學家進餐

p()程序需向互斥緩衝區進行寫操作,而c()程序從互斥緩衝區進行取操作。

==分析:p和c互斥訪問同一臨界資源,需設定mutex=1;

p和c相互同步,p提供產品給c,而c提供空間給p

semaphore mutex=

1,empty=n,product=0;

p()}

c()}

當緩衝區大小為1時,只會有1個程序進行,此時無需設定對緩衝區的互斥訊號量

semaphore empty=10

,orrange=0;

p1()}

p2()}

c1()}

c2()}

int i =0;

semaphore full1=

0,full2=

0,full3=

0,empty=1;

p()}

ci()}

分析:

讀程序與寫程序互斥,需設定互斥量mutex=1;

寫程序與寫程序互斥,可使用互斥量mutex;

讀程序與讀程序不互斥,因此需區分第乙個讀程序與之後的讀程序,只在第乙個讀程序進行p(mutex);

還需設定互斥量protect=1用於保護計數過程

semaphore mutex=

1,protect=1;

int count=0;

w()}

r()}

分析:

為避免死鎖,可通過設定訊號量mutex=1做到只允許乙個人進餐;

為每乙個資源設定訊號量tag[i]=1;

semaphore tag[5]

=,mutex=1;

ci()}

作業系統之經典程序同步問題

2.哲學家進餐問題 3.讀者寫者問題 semaphore mutex 1 互斥訊號量,實現對緩衝區的互斥訪問 semaphore empty n 同步訊號量,表示空閒緩衝區的數量 semaphore full 0 同步訊號量,表示產品的數量 producer consumer semaphore m...

作業系統 程序同步經典問題

問題描述 使用乙個緩衝區來儲存物品,只有緩衝區沒有滿,生產者才可以放入物品 只有緩衝區不為空,消費者才可以拿走物品。因為緩衝區屬於臨界資源,因此需要使用乙個互斥量 mutex 來控制對緩衝區的互斥訪問。為了同步生產者和消費者的行為,需要記錄緩衝區中物品的數量。數量可以使用訊號量來進行統計,這裡需要使...

作業系統 程序管理之程序同步

程序同步 由程序非同步所匯出的概念。由於多道程式設計的非同步性,導致記憶體中的程序時走時停,以不可預知的速度前進 但某些情況下又要求固定某些程序的先後順序。所謂程序同步就是指程序之間的直接制約關係,具體體現在程序的執行順序上。程序互斥 是由於程序之間均需要訪問同一臨界資源,而臨界資源同一時間又只能允...