RPC
RPC란
- 프로세스간 통신 기술인 IPC (inter-process communication)의 한 종류.
- Remote Procedure Call의 약자로, 다른 주소 공간(원격)에 있는 프로시저, 함수를 실행 가능하는 기술.
- 로컬 프로시저처럼 원격 프로시저를 수행할 수 있음.
- Client-server 구조에 기반을 둠.
동작 방식

- 클라이언트가 parameter stack에 넣으면서 client의 stub procedure를 호출.
- Client stub은 parameter를 메시지로 묶음. 이 과정을 marshalling이라고 함.
- Client의 OS는 transport layer를 통해 server machine에 메시지를 전송.
- Server의 OS는 받은 메시지를 server stub에 넘겨 줌.
- Server stub은 parameter들을 unpack함. 이 과정을 unmarshalling이라고 함.
- 마지막으로 server stub이 server의 프로시저를 실행함. 실행 결과는 역순으로 client에 전달됨.
장점
- 추상화를 제공함으로 인해 네트워크를 통한 통신이 사용자에게 보이지 않음.
- 분산 환경에서 애플리케이션 사용에 적합.
- 고유 프로세스 개발에만 집중 가능.
단점
- 로컬 프로시저와 달리 네트워크 환경에 따라 실패할 수 있음. 이에 따라 반환 시간 및 결과가 보장되지 않음.
- 원격에서 프로시저가 실제로 실행되었는지 모르는 채로 오류를 처리해야 하는 어려움 존재.
- 보안이 취약.
References
- https://en.wikipedia.org/wiki/Remote_procedure_call
- https://velog.io/@jakeseo_me/RPC%EB%9E%80
- https://www.geeksforgeeks.org/remote-procedure-call-rpc-in-operating-system/