본문 바로가기
개발(프로그래밍)/gRPC

IPC란? (Inter Process Communication)

by 캔두500 2024. 12. 3.

프로세스들 사이에 서로 데이터를 주고받는 행위, 또는 그에 대한 방법이나 경로

(프로세스: 컴퓨터에서 연속적으로 실행되고 있는 프로그램. 작업(Task).)

 

종류

- Shared Memory(공유 메모리): 공유 메모리 영역을 통해 2개 이상의 프로세스가 데이터 교환. global variable, 공유 변수, 공유 파일로 통신. 빠르고 커널 도움이 거의 필요 없으나 동시성 이슈관리가 필요(세마포어, 뮤텍스 등). 

 

- 세마포어: 공유 자원에 대한 접근 제어. 데이터 일관성, 동시성 유지하는 일종의 카운터. 

 

- 파이프(Pipes):  단방향 통신을 위한 기본적 IPC 메커니즘. 2개의 프로세스 입출력을 직렬 연결하여 하나의 공유 페이지 제공. 

 

- Named Pipes: FIFO. 양방향 통신을 지원. 파일 형태로 서로 다른 프로세스가 데이터를 주고받을 수 있음.

 

-  Message Queue: 비동기 방식의 프로세스간 통신. 메시지를 Queue로 전달(FIFO). 

 

- Signal: 프로세스에 특정 이벤트가 발생되었다는 걸 알리는 메시지. 주로 비동기적으로 알림을 전달하는데에 사용. 

 

- Socket: 네트워크를 통한 프로세스간 통신. TCP/IP, UDP 프로토콜 사용. 파이프의 개념을 네트워크로 확장시킨 것. 

 

- RPC(Remote Procedure Call): 클라이언트-서버 모델을 이용. 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 작업을 실행. IDL(Interface Definition Language)기반으로 다양한 언어로 확장 가능. gRPC가 이에 해당하므로 다음 포스팅에서는 RPC에 대해 더 자세히 다뤄보겠다. 

 

참고

동기(Synchronous): 순차적으로 작업이 진행 됨. 작업이 반환될때까지 다른 작업이 기다려야 함. 프로세스 성능 저하

비동기(Asynchronous): 독립적인 작업 실행. 타 작업의 완료 여부와 상관없이 다른 작업 실행 가능. 주로 I/O 작업이나 네트워크 요청과 같이 오랜 시간이 걸리는 작업에 유용함. callback, async, await과 같은 메커니즘으로 구현 가능. 

 

 

'개발(프로그래밍) > gRPC' 카테고리의 다른 글

gRPC란?  (1) 2024.12.18
RPC(Remote Procedure Call)란?  (0) 2024.12.18