IPC(Inter-Process Communication)는 여러 프로세스가 서로 데이터를 주고받거나 자원을 공유하기 위해 사용되는 메커니즘을 의미합니다.
각 프로세스는 독립적인 메모리 공간을 가지므로, 프로세스 간 자원을 공유하거나 통신하려면 IPC 방식이 필요합니다. 다양한 IPC 방식은 프로세스 간 데이터 교환 및 동기화 문제를 해결하는 데 도움을 줍니다.
주요 IPC 방식과 함께 좀비 프로세스와 고아 프로세스에 대해서도 알아보겠습니다.
1. IPC (Inter-Process Communication) 방식
1.1. 공유 메모리 (Shared Memory)
공유 메모리는 여러 프로세스가 동일한 메모리 공간을 공유하여 데이터를 전달하는 방식입니다. 각 프로세스는 해당 메모리 영역을 통해 서로 데이터를 읽거나 쓸 수 있습니다. 이 방식은 속도가 빠르지만, 여러 프로세스가 동시에 접근하게 되면 동기화 문제를 해결해야 하므로 세마포어나 뮤텍스 등을 추가로 사용해야 합니다.
1.2. 소켓 (Socket)
소켓을 사용한 IPC는 네트워크 통신 방식과 유사하게 작동합니다. 프로세스 간에 소켓을 통해 데이터를 송수신하며, 로컬 프로세스뿐만 아니라 원격 시스템과도 통신이 가능합니다. 클라이언트와 서버의 구조로 데이터를 주고받으며, TCP/IP, UDP 등 다양한 프로토콜을 사용할 수 있습니다.
1.3. 세마포어 (Semaphore)
세마포어는 공유 자원에 대한 접근을 제어하여 동시 접근을 방지하는 기법입니다. 세마포어는 두 가지 방식으로 사용될 수 있습니다: 이진 세마포어와 카운팅 세마포어. 이를 통해 프로세스 간의 경쟁 조건을 예방하고, 자원의 일관성을 유지할 수 있습니다.
1.4. 파이프 (Pipe)
파이프는 FIFO(First In First Out) 구조를 가진 메모리로, 한 프로세스에서 데이터를 쓰면 다른 프로세스에서 읽을 수 있습니다. 파이프는 기본적으로 단방향 통신만 지원하므로 양방향 통신을 하려면 읽기와 쓰기 파이프를 각각 따로 생성해야 합니다. 파이프는 상대적으로 간단하고 직관적인 방식으로, 일반적으로 프로세스 간 간단한 데이터 전달에 사용됩니다.
1.5. 메시지 큐 (Message Queue)
메시지 큐는 FIFO 형태의 큐 자료구조를 사용하여 프로세스 간 메시지를 주고받는 방식입니다. 메시지는 큐에 순차적으로 저장되며, 각 프로세스는 큐에서 메시지를 읽거나 쓸 수 있습니다. 이 방식은 동기화 문제를 해결할 수 있으며, 특히 프로세스 간 메시지 전달의 순서와 안정성을 보장할 수 있습니다.
2. 좀비 프로세스와 고아 프로세스
2.1. 좀비 프로세스 (Zombie Process)
좀비 프로세스는 자식 프로세스가 종료되었지만 부모 프로세스가 자식의 종료 상태를 회수하지 않아 남아있는 프로세스입니다. 일반적으로 자식 프로세스가 종료되면 부모 프로세스는 wait() 시스템 콜을 통해 자식 프로세스의 종료 상태를 수집하고 자원을 회수합니다. 하지만 부모가 이를 처리하지 않으면 자식 프로세스는 종료되지 않고, 시스템 리소스를 낭비하는 좀비 프로세스로 남게 됩니다.
좀비 프로세스를 방지하려면 부모 프로세스가 자식 프로세스의 종료 상태를 제대로 회수해야 하며, 이를 위해 SIGCHLD 시그널을 받고 wait() 함수를 호출하는 방식으로 처리할 수 있습니다.
2.2. 고아 프로세스 (Orphan Process)
고아 프로세스는 부모 프로세스가 종료된 후 남게 되는 자식 프로세스입니다. 일반적으로 프로세스는 종료되면 자식 프로세스에게 리소스를 회수해야 하는 책임이 있습니다. 하지만 부모 프로세스가 종료되면 자식은 고아 프로세스로 남게 되며, 이 경우 고아 프로세스의 부모는 init 프로세스가 됩니다. init 프로세스는 PID가 1인 프로세스로, 고아 프로세스의 자원을 회수하고 좀비 프로세스로 변하지 않도록 관리합니다.
결론
IPC는 프로세스 간 통신과 자원 공유를 위한 필수적인 기법이며, 다양한 방식이 각기 다른 상황에 적합하게 사용됩니다. 또한, 프로세스 관리에 있어 좀비 프로세스와 고아 프로세스를 이해하고 적절히 처리하는 것이 시스템의 안정성 및 리소스 효율성을 높이는 데 중요합니다.
해당 글은 다음 도서의 내용을 참고하고 추가적인 정보를 기재한 글임을 밝힙니다.
이수진, ⌜기술면접대비 CS전공 핵심요약집⌟, (주)도서출판 길벗
'CS지식 > 운영체제' 카테고리의 다른 글
교착 상태(Deadlock)와 스레드 안전(Thread Safe) (0) | 2025.02.03 |
---|---|
프로세스 동기화 (0) | 2025.02.01 |
동시성과 병렬성, 멀티 프로세스와 멀티 스레드 (0) | 2025.01.31 |
PCB(Process Control Block), 프로세스의 생성, 프로세스 상태도 (0) | 2025.01.30 |
프로세스, 메모리 구조 (0) | 2024.11.05 |