✔️ IPC
IPC(Inter Process Communication)이란?
- 독립적인 공간을 가지고 독립적으로 실행되는 프로세스 간의 통신을 가능하도록 해주는 것
- 프로세스는 운영체제의 핵심 부분인 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 됨
- 필요에 따라 IPC 설비를 선택해서 사용하며
프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용해
공유된 자원에 한번에 하나의 프로세스만 접근하도록 함
IPC 종류
- 익명 PIPE
- 하나의 파이프가 두 개의 프로세스를 연결
이때 통신할 프로세스를 모두 명확히 알고 있어야 함 (부모-자식 관계 프로세스 간 등) - 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 함
- 한쪽 방향으로만 통신이 가능한 반이중 통신으로 매우 간단하게 사용할 수 있으므로 단순한 데이터 흐름일 때 사용
- 만약 양쪽으로 모두 송신, 수신을 하는 전이중 통신을 위해서는 2개의 파이프를 만들어야 함
- 하나의 파이프가 두 개의 프로세스를 연결
- Named PIPE (PIPO)
- 익명 파이프의 확장된 상태로 전혀 모르는 상태의 프로세스들 사이의 통신에 사용
- 익명 파이프와 마찬가지로 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 함
- 전이중 통신을 위해서는 2개의 파이프를 만들어야 함
- Message Queue
- 입출력 방식은 Named PIPE와 동일하나 파이프처럼 데이터의 흐름이 아니라 메모리 공간을 가짐
- 사용할 데이터에 번호를 붙여 여러 프로세스가 동시에 데이터를 다루도록 함
- 공유 메모리
- 통신(데이터 전달)을 위한 설비인 파이프, 메시지 큐와 달리 데이터 자체를 공유하도록 함
- 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용해줌
- 중개자 없이 곧바로 메모리에 접근할 수 있어서 IPC 중에 가장 빠르게 작동
- 메모리 맵
- 공유 메모리처럼 메모리를 공유해주며 열린 파일을 메모리에 맵핑시켜서 공유해줌 (공유 매개체가 파일과 메모리)
- 주로 파일로 대용량 데이터를 공유해야 할 때 사용
- 소켓
- 네트워크 소켓 통신을 통해 데이터를 공유
- 클라이언트와 서버가 소켓을 통해서 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용
'Tech Interview > Operating System' 카테고리의 다른 글
[Operating System] 프로세스 동기화 (0) | 2023.12.15 |
---|---|
[Operating System] CPU 스케줄링 (0) | 2023.12.14 |
[Operating System] 프로세스와 스레드 (0) | 2023.12.12 |
[Operating System] 운영체제 (0) | 2023.12.04 |
[Operating System] 컴퓨터 시스템의 동작 원리 (0) | 2023.12.04 |