프로세스들 사이에 서로 데이터를 주고받는 행위, 또는 그에 대한 방법이나 경로
(프로세스: 컴퓨터에서 연속적으로 실행되고 있는 프로그램. 작업(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 |