프로세스 간 통신이란
- Process들 간에 데이터 및 정보를 주고 받기 위한 메카니즘
- 커널에서 시스템 콜 형태로 IPC 도구 제공
- 프로세스 협력 모델을 구현하기 위해서 IPC가 필요함
IPC - 공유메모리
Ex) faster PID, slower PID
- Read and Write 방식
- 프로세스의 특정 메모리 영역을 공유 ex) shared Memory
- 공유메모리가 설정되면 그 이후의 통신은 커널 도움없이 바로 접근 가능
단점
- 공유 메모리를 위해서 메모리 일부를 오직 그 목적으로 사용해야함.
- 동기화 문제있음. => 누군가가 메모리 영역에 접근하는 순서를 정해줘야함 => Locking이나 세마포어가 대안
IPC - 메세지 교환
- Send and Receive 방식
- 프로세스 간 메모리 공유없이 동작가능
- 메세지를 송/수신자들끼리 주고받음
- 클라이언트 -서버의 통신 에서 사용
장점
단점
- 커널을 항상 통해야함. => context switching 발생 => 성능 안좋아짐
디테일한 IPC 방법들
Pipe 파이프
- 하나의 프로세스가 다른 프로세스로 데이터를 직접 전달하는 방법
- 한쪽 방향으로만 데이터가 이동
- 1대1의 의사소통만 가능
- 보내진 순서대로만 받음
- 용량제한 있어서 꽉차면 못씀
시그널
- 특정 프로세스에게 커널을 통해 이벤트를 전달하는 방법
송신 프로세스:
프로세스의 여러신호 중 하나를 특정 프로세스에게 보냄. 이는 수신하는애 의사와 상관없이 보냄. (마치 비동기적인 interrupt)
수신 프로세스:
신호 종류에 따라서 다른 대응. (interrupt와 달라)
- 무시
- 단순히 신호 붙잡아둠
- 특정 처리 루틴으로 처리
메세지 큐
- 메세지 패싱의 메세지 + shared 메모리의 큐 메모리
- 고정 크기 메세지의 연결리스트를 이용해서 통신함
- 메세지 형식! 으로 shared memory 큐에다가 데이터를 써주고,
프로세스들이 메세지 단위로 B와 C에서 읽어들임.
- 메세지는 링크드 리스트로 되어있음으로 선입 선출
- 여전히 동기화가 필요
소켓
- 데통네의 TCP/UDP 소켓과 동일
- 포트를 이용해서 통신
- 포트 번호를 이용해서 상대 프로세스의 소켓을 찾아감
- 다른 IPC와 달리 프로세스 위치에 Independent