二 真經之生產消費問題擴展(浙江大學)
假設緩沖區buf和緩沖區buf無限大進程p向buf寫數據進程p向buf寫數據要求buf數據個數和buf數據個數的差保持在(mn)之間(m<nmn都是正數)
問題分析
題中沒有給出兩個進程執行順序之間的制約關系只給出了一個數量上的制約關系即m≤—buf數據個數-buf數據個數≤n不需要考慮緩沖區的大小只需要考慮兩個進程的同步和互斥p向buf寫數據比p向buf寫數據的次數最少不超過m次最多不能超過n次反之也成立.所以是一個生產者和消費者問題將等式展開得()m≤(buf數據個數-buf數據個數)≤n()m≤(buf數據個數-buf數據個數)≤n由於mn都是正數等式只有一個成立不妨設()成立在進程p和p都沒有運行時兩個緩沖區數據個數之差為因此p必須先運行向buf至少寫m+個數據後再喚醒p運行信號量s表示p一次寫入的最大量初值為ns表示p一次寫入的最大量初值為m
The PV code Using Pascal
begin
var mutex=mutex=s=ns=m:semaphore;
cobegin
process p
begin
repeat
get data;
p(s);
p(mutex);
寫數據到buf;
v(mutex);
v(s);
end
process p
begin
repeat;
get data;
p(s);
p(mutex);
寫數據到buf;
v(mutex);
v(s);
end
coend
end
返回《操作系統之PV金典》
[] []
From:http://tw.wingwit.com/Article/program/czxt/201311/24174.html