IPC란?
IPC
- Inter-Process Communication.
- 프로세스 간에 데이터를 주고받으며 공유 자원1을 관리하는 메커니즘.
IPC의 종류
- 비동기화 메커니즘: 데이터 전달에 중점.
- 파이프(Pipe): 한 프로세스의 출력을 다른 프로세스의 입력으로 연결합니다. 보통 단방향 통신에 사용됩니다.
- 이름 있는 파이프(Named pipe): 이름이 있는 파일을 통해 서로 통신할 수 있게 하는 파이프입니다. 양방향 통신이 가능합니다.
- 메시지 큐(Message queue): 데이터를 메시지를 큐에 저장하여 비동기적으로 전송합니다.
- 공유 메모리(Shared memory): 메모리의 같은 부분을 공유합니다. 비동기화 메커니즘 중에서 가장 빠른 방식입니다.
- 소켓(Socket): 네트워크를 통해 통신합니다.
- 시그널(Signal): 프로세스에 특정 이벤트가 발생했음을 알리는 데 사용합니다.
- 메모리 맵 파일(Memory-mapped file): 파일이나 장치를 메모리의 일부로 매핑하여, 파일 I/O를 메모리 접근처럼 빠르게 할 수 있게 합니다.
- 파이프(Pipe): 한 프로세스의 출력을 다른 프로세스의 입력으로 연결합니다. 보통 단방향 통신에 사용됩니다.
- 동기화 메커니즘: 데이터의 정합성과 무결성을 유지하며, 경쟁 상태2나 교착 상태3 같은 문제를 방지하는 목적.
- 세마포어: 카운터를 사용하여 제한된 수의 프로세스만 자원에 접근할 수 있도록 합니다. 여러 프로세스가 동시에 임계 영역4에 접근할 수 있습니다.
- 뮤텍스: 이진 세마포어의 일종. 한 번에 하나의 프로세스만 자원에 접근할 수 있습니다.
- 모니터: 둘 이상의 스레드나 프로세스가 공유 자원에 안전하게 접근할 수 있도록 인터페이스(모니터큐)만 제공하는 객체.
- 세마포어: 카운터를 사용하여 제한된 수의 프로세스만 자원에 접근할 수 있도록 합니다. 여러 프로세스가 동시에 임계 영역4에 접근할 수 있습니다.
1공유 자원: 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 자원이나 변수. 모니터, 프린터, 메모리, 파일, 데이터 등.
2경쟁 상태(Race Condition): 공유 자원을 둘 이상의 프로세스 또는 스레드가 동시에 읽거나 쓰는 상황.
3교착 상태(Deadlock): 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태.
4임계 영역: 둘 이상의 프로세스 또는 스레드가 공유 자원에 접근할 때 접근 순서 등에 따라 결과가 달라지는 코드 영역.