2014-03-19 2 views
0

IPC를 구현하는 몇 가지 방법이 있다는 것을 알고있었습니다. 파이프, 소켓 등등. 프로세스와 쓰레드 간의 통신

우리가 부모 프로세스 A를 가지고 두 아이가 B와 C

나는 B는 C.와 통신하려는 경우가 IPC를 사용할 필요가 있음을 알고

를 처리하는 말 :

여기 내 질문이다.

1 :이 경우 IPC 방법이 제한되어 있습니까? 이런 종류의 IPC를 구현하려면 IPC의 일부 유형 만 사용할 수 있습니까? 그것은 오직 파이프, 공유 메모리하지만 신호를 사용할 수 있습니다.

질문 2 : 하위 프로세스가 부모와 통신하려면 IPC가 필요합니까? (B는 자식 D가 있습니까? D가 A와 통신을 원할 경우 IPC가 필요합니까?) Q3 : B의 ​​스레드와 D의 스레드가 있으면이 두 스레드가 통신하는 데 IPC가 필요합니까?

Q4 : Q3과 같은 질문입니다. 두 스레드 중 하나는 하위 프로세스에 있고 다른 하나는 상위 프로세스에 있습니까?

감사

답변

1

A1. 귀하의 디자인에 따라 다릅니다. 부모는 필요한 IPC 구조 (파이프, 공유 메모리 등)를 할당하고 자식에게 IPC 키를 전파하여 자녀 사이에 IPC를 설정할 수 있습니다. 부모가 구조 할당 및 키 전달에 필요한 모든 작업을 수행하는 경우 제한없이 IPC 방식을 사용할 수 있습니다. 부모가 자녀 사이에 IPC를 설정하지 않았거나 IPC 키를 공유하지 않는 경우 관련되지 않은 (포크가 아닌) 프로세스 사이의 다른 IPC와 같은 제한이 있습니다. 이 경우, 예를 들어 파이프는 사용할 수 없지만 공유 메모리 또는 명명 된 파이프를 사용할 수 있습니다 (키 또는 이름 규칙을 생각해보십시오).

A2. 부모가 자식과 통신하기를 원할 경우 다른 프로세스이므로 IPC를 사용할 수 있습니다 (또한 사용해야 함). 부모와 그 자녀는 관련 프로세스이므로 모든 IPC 유형을 제한없이 사용할 수 있습니다.

A3. 스레드가 개의 다른 프로세스 인 프로세스에 속하기 때문에 IPC를 사용해야합니다. 어떤 유형의 IPC를 사용해야합니까? 그것은 당신의 디자인에 달려 있습니다. 대답 1과 2는 그것을 설명하려고 시도합니다.

A4. 스레드가 다른 프로세스에 속하기 때문에 IPC가 필요합니다. 프로세스가 관련 (부모 및 자식)이므로 이론적으로 모든 IPC 방식을 사용할 수 있습니다.

+0

안녕하세요. Michael, 훌륭한 답변에 감사드립니다. :) – Sam