운영체제
Inter Process Communication
Younghun
2024. 1. 22. 12:58
1. IPC란
개념
- 프로세스는 독립된 메모리를 가지고 다른 프로세스 메모리에 직접 접근할 수 없다.
- 다른 프로세스와 소통하기 위해 커널이 제공하는 IPC 기법 사용해야 한다.
- 프로세스들이 서로 협력하여 작업을 수행하기 위해 중요한 기능
주요 역할
- 작업 결과나 데이터를 공유
- 복잡한 작업을 여러 프로세스가 분담하기 위한 통신
- 프로세스간 동기화를 위한 통신
2. IPC 종류
1. 파이프
- 익명 파이프: 주로 한 방향의 통신에 사용되며, PID를 정확히 아는 부모 프로세스와 자식 프로세스 간의 통신에 사용된다. 이 파이프는 메모리 내에서만 존재하며 파일 시스템에는 나타나지 않는다.
- 네임드 파이프: 두 프로세스가 서로 다른 시간에 실행되거나, 서로 관련이 없을 때도 통신할 수 있도록 해준다. 네임드 파이프는 파일 시스템 내에 특정 이름을 가지고 있어서, 그 이름을 통해 접근할 수 있다.
2. 공유 메모리
- 공유 메모리를 사용하면 두 개 이상의 프로세스가 메모리의 같은 부분에 접근할 수 있다. 이 방법은 IPC 중 가장 빠른 데이터 전송 방식을 제공한다.
- 공유 메모리는 데이터의 일관성을 유지하기 위해 세마포어나 뮤텍스와 같은 동기화 메커니즘과 함께 사용되어야 한다.
3. 메시지 큐
- 메시지 큐는 프로세스가 메시지를 큐에 삽입하고, 다른 프로세스가 이를 읽을 수 있게 하는 통신 방식이다.
- 각 메시지는 특정 타입이나 ID를 가지고 있어서, 프로세스는 특정 타입의 메시지만 선택적으로 받을 수 있다.
- 메시지 큐는 커널 메모리에 저장되므로, 프로세스가 종료되어도 메시지가 유지된다.
4. 소켓
- 소켓은 네트워크를 통해 두 프로세스가 데이터를 주고받을 수 있게 하는 통신의 엔드포인트이다. 소켓은 IP 주소와 포트 번호를 사용하여 연결을 구성한다.
- 소켓은 TCP를 기반으로 신뢰성 있는 연결 지향적 통신을 제공하거나, UDP를 기반으로 빠르지만 신뢰성이 낮은 비연결식 통신을 제공할 수 있다.
5. 시그널
- 시그널은 운영체제가 프로세스에게 어떤 사건이 발생했음을 알리는 간단한 방법이다.
- `SIGKILL`은 프로세스를 즉시 종료시키고, `SIGSTOP`은 프로세스를 일시 정지시킨다.
- 시그널은 프로세스가 다른 프로세스에게 비동기적으로 신호를 보낼 때도 사용된다.