熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 操作系統 >> 正文

二 真經之生產消費問題擴展[1]

2013-11-15 15:54:15  來源: 操作系統 

二 真經之生產消費問題擴展(浙江大學

 

假設緩沖區buf和緩沖區buf無限大進程pbuf寫數據進程pbuf寫數據要求buf數據個數和buf數據個數的差保持在(mn)之間(m<nmn都是正數)

  

問題分析

題中沒有給出兩個進程執行順序之間的制約關系只給出了一個數量上的制約關系m≤—buf數據個數-buf數據個數≤n不需要考慮緩沖區的大小只需要考慮兩個進程的同步和互斥pbuf寫數據比pbuf寫數據的次數最少不超過m最多不能超過n反之也成立.所以是一個生產者和消費者問題將等式展開得()m(buf數據個數-buf數據個數)n()m(buf數據個數-buf數據個數)n由於mn都是正數等式只有一個成立不妨設()成立在進程pp都沒有運行時兩個緩沖區數據個數之差為因此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
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.