Remote Procedure Calls (RPC)
RPC
RPC는 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수/프로시저를 실행할 수 있게 하는 기술이다.
RPC를 사용해 프로그래머는 실행 프로그램 속 함수가 로컬에 있는 원격에 있든 동일하게 이용할 수 있다.
*클라이언트가 원격 호스트의 프로시저를 호출하는 것을 마치 자기의 프로시저 호출을 하는 것처럼 해준다.
클라이언트 서버 환경에서 통신
IPC와 관련한 글을 올렸었다. shared memory와 message passing 기법을 활용하여 process들이 통신하는 방법이다.
이러한 기법을 client-server 시스템의 통신에도 사용할 수 있다.
2022.08.05 - [운영체제] - Interprocess Communication이 필요한 이유
(IPC) Interprocess Communication이 필요한 이유
Interprocess Communication IPC란? 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다. Communi..
noobcodeing.tistory.com
RPC는 client-server 컴퓨팅에 유용할 뿐만 아니라 android에서는 동일 시스템에서 실행되는 process 간 IPC의 형태로 원격 procedure를 사용한다.
RPC에 대해 설명하기 위해 stub 개념과 marshalling에 대해 짚고 가겠다.
Stub
server와 client는 다른 주소 공간을 사용한다. 그렇기 때문에 함수 호출에 사용되는 매개변수를 변환하는 작업이 필요하게 되고, 이 변환을 담당하는 것이 stub이다.
Marshalling
stub은 client와 server 각각에 존재한다. client stub은 함수 호출에 사용될 parameter를 변환한다. 이를 marshalling(정돈)한다고 하며, server에서 넘어온 결과를 변환한다.
RPC 시스템은 client 쪽에 stub을 제공하여 통신을 하는 데 필요한 자세한 사항들을 숨겨 준다. 보통 원격 프로시저마다 다른 stub이 존재한다. client가 원격 프로시저를 호출하면 RPC는 그에 대응하는 stub을 호출하고 원격 프로시저가 필요로 하는 매개변수를 건네준다.
stub은 message passing 기법을 사용하여 server에게 message를 전송한다. 이에 대응되는 stub이 server에도 존재하여 server 측 stub이 message를 수신한 후 적절한 server의 프로시저를 호출한다. 필요한 경우 반환 값들도 동일한 방식으로 되돌려 준다.
Windows의 경우 MIDL(Microsoft Interface Definition Language)로 작성된 명세로부터 컴파일된다.
(IDL이란 interface에 대한 정의 언어로, 각 시스템을 연결하는 고리가 되어준다. client와 server는 서로 다른 언어를 사용할 수도 있고 서로 다른 언어 간 프로시저가 서로의 요청을 처리해주기 위해서는 interface를 통하여 명세된 규칙을 따라야 각 시스템이 이해할 수 있다.)
또한 매개변수 정돈(parameter marshalling)이 필요할 수 있다. client와 server 기기의 data 표현 방식의 차이가 있을 수 있다. 어떤 기계는 최상위 바이트를 먼저 저장하고, 어떤 기계는 최하위 바이트를 먼저 저장할 수 있는데, 이러한 컴퓨터 구조의 차이를 해결하기 위해 대부분 RPC 시스템은 기종 중립적인 데이터 표현 방식을 정의한다. 그 중 하나가 XDR(external data representation)이다.
RPC의 경우 네트워크 오류에 의한 실패가 있을 수 있다. message가 중복되어 여러 번 호출이 실행된다거나 하는 오류가 발생할 수 있다.
다음은 android에서의 rpc로 넘어가도록 한다.
2022.08.13 - [Android] - Android RPC, Binder IPC
Android RPC, Binder IPC
RPC RPC에 대해서는 이전 글을 통해 확인할 수 있다. IPC가 무엇이고 왜 필요한지 알아보았고, Android에서는 어떻게 IPC가 이루어지는 지 알기 위해 우선 RPC에 대해 간략하게 알아보고 왔다. 2022.08.12 -
noobcodeing.tistory.com
References
원격 프로시저 호출 - 해시넷
원격 프로시저 호출 또는 RPC(Remote Procedure Call)는 별도의 원격제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신 기술이다. 리모트 프로시저 콜
wiki.hash.kr
'운영체제' 카테고리의 다른 글
File System(1) (0) | 2022.08.27 |
---|---|
(IPC) Interprocess Communication이 필요한 이유 (0) | 2022.08.05 |
CPU Scheduling이 필요한 경우와 고려해야할 것들 (0) | 2022.07.29 |
Process Scheduling (0) | 2022.07.29 |