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

八 真經之管道通信問題(西北工大2000)

2013-11-15 15:56:34  來源: 操作系統 

八 真經之管道通信問題(西北工大
  
  在管道通信機制中用信號量描述讀進程和寫進程訪問管道文件的過程假設管道文件大小為KB
  
  問題分析
  UNIX系統中利用一個打開的共享文件來連接兩個相互通信的進程這個共享文件叫管道作為管道輸入的發送進程以字符流的形式將信息送入管道而作為管道輸出的接收進程從管道中獲取信息管道通信機制要提供三方面的協調能力()互斥.當一個進程對管道進行讀/寫操作時另一個進程必須等待()同步當寫進程把數據寫入管道後便去睡眠等待直到輸出進程取走數據後喚醒它若一次寫入的數據超過緩沖區剩余空間的大小當緩沖區滿時寫進程必須阻塞並喚醒讀進程()對方是否存在只有確定對方存在時才能夠進行通信本題只需要考慮互斥同步問題由於只有一對進程訪問管道因此不需要設置互斥信號量只要設置兩個同步信號量emptyfull分別表示管道可寫和可讀
  
  The PV code Using Pascal
  
  begin
    pipe:array[]of kilobytes;
    ts=lengthin=out=:integer;
    emptyfull:semaphore=;
  cobegin
  process PipeWriter
    begin
      repeat;
      產生數據
      p(empty);
      length=data length;
      while(length> and ts>)
      begin
        pipe[in]=data of KB;
        in=(in+)mod n;
        ts=ts;
        length=length;
      end
      v(full);
    end
  process Consumer
    begin
      repeat;
     p(full);
     從緩沖區取出一件物品;
     out=(out+)mod n;
     ts=ts+;
     v(empty);
   end
  coend
  end

    返回《操作系統之PV金典》


From:http://tw.wingwit.com/Article/program/czxt/201311/24254.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.