프로세스 간 통신(IPC) 이란?
프로세스는 운영체제의 기본 실행 단위로, 일반적으로 독립적으로 실행된다.
그러나 때때로 프로세스들은 데이터를 주고받으며 상호 작용할 필요가 있다.
이러한 상호 작용을 가능하게 하는 기술을
프로세스 간 통신(IPC, Inter-Process Communication)이라고 한다.
프로세스 간 통신은 대표적으로 3가지의 종류가 존재한다.
프로세스 간 통신 종류
1. 같은 시스템 내의 프로세스 간 통신
1-1) 파일 기반 통신
여러 프로세스가 동일한 파일에 접근하여 데이터를 읽고 쓰는 방식으로 통신한다.
이 방법은 상대적으로 구현이 간단하지만, 동시성 관리가 필요할 때 복잡해질 수 있다.
1-2) 파이프 통신
파이프는 데이터가 일방향으로 흐르는 통신 채널로,
주로 부모 프로세스와 자식 프로세스 간에 데이터를 전달하는 데 사용된다.
파이프는 이름이 있는(named) 파이프와 이름이 없는(unnamed) 파이프로 구분될 수 있다.
2. 스레드 간 통신
프로세스 내부에서 실행되는 스레드들은 같은 메모리 공간을 공유하기 때문에, 통신이 더 용이하다.
스레드들은 전역 변수와 힙 영역을 공유하며, 각 스레드는 자신만의 스택을 가지고 있다.
이를 통해 데이터를 공유하고 동기화 문제를 관리하는 다양한 기술(뮤텍스, 세마포어 등)이 사용된다.
3. 네트워크를 통한 프로세스 간 통신
3-1) 소켓 통신
네트워크를 통해 서로 다른 시스템에 있는 프로세스 간에 데이터를 주고받을 수 있다.
소켓은 네트워크 통신의 끝점을 추상화한 것으로,
TCP/IP 및 UDP 프로토콜을 이용하여 신뢰성 있는 통신과 비신뢰성 있는 통신을 제공한다.
3-2) 원격 프로시저 호출(RPC)
네트워크를 통해 다른 컴퓨터의 프로세스에 있는 함수를 호출하고,
마치 로컬 함수를 호출하듯이 사용할 수 있다.
RPC는 네트워크 통신의 복잡성을 추상화하며,
발자가 분산 환경에서 효율적으로 작업할 수 있도록 돕는다.
결론
프로세스 간 통신은 시스템의 효율성을 극대화하고,
복잡한 작업을 여러 실행 단위로 나누어 처리할 수 있게 해 준다.
각 방식의 선택은 애플리케이션의 요구 사항과 특정 환경에 따라 달라진다.
올바른 IPC 메커니즘을 선택하고 올바르게 구현하는 것은
소프트웨어 성능과 안정성을 크게 향상할 수 있다.
'운영체제' 카테고리의 다른 글
[운영체제] 세마포어(Semaphore) (0) | 2024.06.04 |
---|---|
[운영체제] 공유자원과 임계구역 (0) | 2024.06.03 |
[운영체제] MLFQ (Multi-Level Feedback Queue) 스케줄링 알고리즘 (0) | 2024.05.30 |
[운영체제] Round Robin (RR) 스케줄링 알고리즘 (0) | 2024.05.29 |
[운영체제] SJF (Shortest Job First) 스케줄링 알고리즘 (0) | 2024.05.28 |