운영체제 & 컴퓨터구조

[OS] #13. RPCs ( Remote Procedure Calls )

코딩하는상후니 2022. 10. 22. 18:23

 

 


 

 
이전 프로세스간의 통신 부분 ( 링크 ) 에서 직렬화와 마샬링을 살펴봤고
마샬링을 사용해서 해당 프로세스에서 네트워크 통신으로
원격으로 데이터를 상대방의 프로세스에게 정보를 보내 함수를 원격으로 실행하는
RPC 에 대해서 자세히 알아보려고 한다.
 
 
 
 
 
 

* Function ( 함수 )  /  Procedure ( 과정 )

 
 
RPC 를 살펴보기 전에 Function 과 Procedure 의 개념을 살펴보자.
 
Function  :  어떤 매개변수를 통해 어떤 결과 값을 반환하는 기능.
Procedure  :  어떤 작업이 동작되는 과정.
 
 
두 개념의 근본적인 차이는 '결과 값' 이다.
 
함수의 경우, 우리가 일반적으로 사용하는 프로세스에서 사용하는 함수인 반면
Procedure 의 경우, 어떤 일련의 과정이란 의미인데
 
RPC 는 원격으로 해당 과정을 수행하는 Procedure 을 호출하는 것이다.
 
 
 
 
 
 
 
 
 

* IDL ( Interface Description Language )

 

 
 
언어에 국한되지 않고 언어 중립적인 방법으로 인터페이스를 표현하면서
서로 다른 언어, 소프트 웨어 사이의 통신을 가능하게 한다.
 
.NET Framework 의 중간 언어 CIL ( Common Intermediate Language ) 처럼
다양한 언어들을 지원하기 위해 존재하는 중간 단계 과정에 있는 인터페이스이다.
 
해당 중간 인터페이스로 RPC 매커니즘을 구현해 언어의 제약을 받지 않고 통신할 수 있게 한다.
 
 

 

 
 
 
 
 
 

* RPC 동작 과정

 

 

 

대략적인 과정을 설명하자면,
 
프로세스가 RPC 를 수행한다고 가정할 때,
 
1. 이전에 IDL 파일로 Procedure 을 정의해놓는다.
 
2. Stub 이 해당 파일을 읽어들여서 수행할 데이터를 마샬링한다.
 
3. 해당 데이터가 네트워크 통신된다.
이 때, 일반적으로 TCP / IP 통신을 사용한다.
 
4. 해당 패킷이 원격에 도달하면 원격에 있는 Stub ( Skeleton 이라고도 한다. ) 에서
언마샬링을 진행한다.
 
5. 언마샬링된 데이터로 해당 Procedure 를 진행하며 수행되고 결과값을 리턴한다.

 

 

 

 

 

 

 


 

 

참고 자료