이전 프로세스간의 통신 부분 ( 링크 ) 에서 직렬화와 마샬링을 살펴봤고
마샬링을 사용해서 해당 프로세스에서 네트워크 통신으로
원격으로 데이터를 상대방의 프로세스에게 정보를 보내 함수를 원격으로 실행하는
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 를 진행하며 수행되고 결과값을 리턴한다.
참고 자료
'운영체제 & 컴퓨터구조' 카테고리의 다른 글
[ARCH]#CPU ( Central Processing Unit ) (0) | 2023.02.23 |
---|---|
[ARCH]#트랜지스터 (0) | 2023.01.26 |
[OS] #12. 가상 메모리 ( Virtual Memory ) (0) | 2022.09.16 |
[OS] #11. 세마 포어 ( Semaphore ) (0) | 2022.09.15 |
[OS] #10. mutex lock & 스핀락 ( Spinlock ) & CAS ( Compare-And-Swap ) (0) | 2022.09.14 |