운영체제

[운영체제] 프로세스 간 통신(IPC, Inter-Process Communication)

ssh9308 2024. 5. 31. 09:00
반응형

프로세스 간 통신(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 메커니즘을 선택하고 올바르게 구현하는 것은

 

소프트웨어 성능과 안정성을 크게 향상할 수 있다.

반응형