728x90
728x90
IPC(Interprocess Communication)
프로세스는 유저 영역의 독립된 공간에서 실행되어 서로간에 통신이 어렵다.
그러나, 협력해야 되는 경우가 발생한다.
IPC 기법은 이러한 독립적인 프로세스들 간에 데이터 및 정보를 주고받기 위한 메커니즘을 말한다.
1. 공유 메모리(Shared Memory) 모델
- 주소 공간의 일부를 공유하는 방식이다.
- 일반적으로 OS는 프로세스 간 접근을 금지하는데, 이 제약 조건을 제거해야 한다.
- 시스템 콜을 통해 공유 메모리가 설정되고, 그 이후의 통신은 커널의 관여 없이 진행이 가능하다.
장점
- 커널의 관여가 없기에 속도가 빠르다.
- 양방향 통신이다.
단점
- Producer-Consumer Problem 을 발생시킬 수 있다.
1. Producer가 기존의 data를 덮어 쓰는 문제
- 동시에 메모리에 Write를 진행할 시 덮어쓰게 된다.
- 동시적인 접근에 대한 제어를 위해 Locking, Semaphore를 이용한다.
2. Consumer가 쓰레기 값을 읽는 문제
- 공유 메모리가 비어있을 때 발생한다.
- data가 입력되길 기다린다면 busy waiting이 발생한다.
2. 메세지 전달(Message Passing) 모델
- 커널을 통해 메세지(데이터, 자원)를 전달하는 방식이다.
- 커널이 send/receive 연산에 대해 동기화를 제공한다.
장점
- 커널에서 통신을 관리할 수 있어 안전하다.
- 구현이 쉽다.
단점
- 커널을 통해 데이터를 주고 받기 때문에 통신 속도가 느리다.
- 시스템 콜이 필요하고, 이로인한 overhead가 발생한다.
2-1. PIPE(파이프)
- 두 개의 프로세스를 연결하는데, 하나는 Write, 다른 하나는 Read 의 역할을 한다.
- 부모-자식 간의 단방향 통신에 자주 사용한다.
- Half-Duplex(반이중) 통신이라고도 불린다.
- 양방향 송/수신을 원한다면 두 개의 파이프를 이용해야 한다.
- 동시에 한 프로세스만 pipe에 접근이 가능하다.
장점
- 구현이 간단하다.
- 단순한 데이터 흐름에 적합하다.
단점
- 단방향이다.
- PIPE를 두 개를 사용하는 것(양방향)은 구현이 복잡하다.
2-2. Named PIPE(FIFO, 이름이 있는 파이프)
- PIPE의 확장으로, 이름이 있는 파일을 포함한 FIFO를 통해 통신을 한다.
장점
- PIPE의 장점을 가진다.
- 부모 프로세스와 무관하게 전혀 다른 모든 프로세스들 사이에서도 통신이 가능하다.
- 이름 파일을 사용하기 때문이다.
단점
- 하나는 읽기, 하나는 쓰기만 가능하다(단방향)
- 전이중 통신(양방향)을 위해서는 두 개의 FIFO가 필요하고, 구현이 복잡하다.
2-3. Message Queue
- Named PIPE와 비슷한 방식이다.
- Named PIPE는 데이터의 흐름인 반면, Message Queue는 메모리 공간이다.
- FIFO(First In First Out)인 큐를 이용한다.
- 장점
- 비동기 : 처리할 양이 많다면 큐에 넣고 나중에 처리할 수 있다.
- 다수의 프로세스가 큐에 메시지를 보내고 다수의 프로세스가 큐로부터 메시지를 꺼낼 수 있다.
- 낮은 결합도 : 생산자, 소비자 서비스가 독립적으로 행동하게 된다.
- 확장성 : 생산자, 소비자 서비스를 원하는대로 확장할 수 있다.
- 탄력성 : 소비자 서비스가 중단 되어도 메시지는 메시지 큐에 남아 있다.
- 단점
- 메시지가 제대로 전달 되었는지 확인할 수 없다.
- 큐에 데이터를 넣고 빼는 과정에서 overhead가 발생한다.
- 데이터가 많이 쌓일수록 추가적인 메모리 자원이 필요하다.
참고
728x90
728x90
'Computer Science > Operating System' 카테고리의 다른 글
Thread Pool(스레드 풀) / Monitor(모니터) / Fork-Join(포크-조인) (1) | 2023.03.08 |
---|---|
Thread Safe(스레드 안전) (0) | 2023.03.08 |
Compile(컴파일) (0) | 2023.03.08 |
Deadlock(데드락) (0) | 2023.03.08 |
Mutex(뮤텍스) & Semaphore(세마포어) (0) | 2023.03.07 |