2017-02-11 3 views
2

두 프로세스간에 파이프를 사용하여 프로세스 간 통신을하려면 두 개의 파이프를 사용하는 것이 좋습니다. 하나는 자식이 쓰기 위해 사용하는 파이프입니다. 아버지는 그것을 읽고 또 다른 하나는 반대되는 의사 소통을하기 위해서입니다. 왜 더 좋은 방법인가요? 부모와 자식 모두가 읽고 쓸 수 있도록 단 하나의 파이프 만 사용할 수는 없습니까?프로세스 간 통신, 운영 체제, 파이프

답변

0

프로세스 간 통신을 격론하는 방법이 필요합니다. 프로세스가 다른 프로세스에서 쓴/읽은 것을 읽고 쓸 수 있습니다. 예 : 하나의 파이프를 사용하는 경우 :

//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); 
} 

두 개의 파이프를 동기화하거나 사용하는 어리석은 논리를 찾아보십시오. 나는 어리 석음을 기다리는 것이이고, 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); 
}