2017-02-11 20 views
2

2つのプロセス間のパイプを使用してプロセス間通信を行うには、2つのパイプを使用することが好ましく、そのうちの1つは、それと父親がそれから読むこと、そしてもう一つは反対のコミュニケーションをすることです。これはなぜより良い方法ですか?親と子の両方が読み書きできるようにパイプを1つしか使用できませんか?プロセス間通信、オペレーティングシステム、パイプ

答えて

0

プロセス間の通信をひどく疎かにする方法が必要です。それ以外の場合は、プロセスが何を書き込んだり何かを何度も読み書きします。例えば1つのパイプを使用する場合:

//parent 
while(1) 
{ 
    write(p1); 
    //need a logic to wait so as to read what child wrote back and also so 
    // that we may not end up reading back what we wrote. 
    read(p1); 
} 
//child 
while(1) 
{ 
    read(p1); 
    //need a logic to wait so as to read what child wrote back and also so 
    // that we may not end up reading back what we wrote. 
    write(p1); 
} 

2本のパイプを同期または使用するための偽の証明論理を見つけます。私はばかばかしい待機sleep()またはsignalsのような簡単なテクニックは、OSの人々が彼らの作品で概説したスケジューリングの問題に脆弱であると言っています。

パイプ自体が構造をブロックしているため、同期するためにパイプに依存します。

//parent 
while(1) 
{ 
    write(p1); 
    //pipe blocks until till child writes something in pipe 
    read(p2); 
} 
//child 
while(1) 
{ 
    //pipe waits for parent to write. 
    read(p1); 
    //parent is waiting to read. 
    write(p2); 
}