Computer Science/[ OS ]

[ OS ] 01. 프로세스간 통신 - IPC, RPC

kim.svadoz 2021. 5. 25. 20:58
반응형

[ 프로세스간 통신 ]

IPC

Inter Process Communication

각 프로세스들이 통신하는 모든 형태를 일컫는다. 이에는 다양한 형태의 메세지 전달 방식이 포함된다.

종류

  • Shared Memory
    • 프로세스간 공유되는 메모리 영역을 만들어 사용하는 방법
    • 프로세스들은 읽기/쓰기를 통해 공유영역을 수정할 수 있다.
    • 주로 부모/자식 프로세스 간에 사용한다.
  • Message Passing
    • 다른 프로세스에 message 를 보내 정보를 교환하는 방법
    • 주로 작은 데이터를 교환하며 구현이 쉽다.
    • system call이 잦아 자칫 느려질 수 있다.
  • Sockets
    • Network Communication의 Endpoint 간의 통신이다.
    • IP Address, Port를 이용해 직접 통신한다.
  • Pipe
    • Message나 Shared Memory는 서로 다른 process간 memory에서 구조체 또는 데이터를 주고받았지만
    • Pipi는 양방향 간의 버퍼를 통해서 데이터를 읽거나 쓰는 구조이다.
    • 연속적인 byte stream 을 교환할 때 많이 사용된다.

RPC

Remote Procedure Call

IPC방식 중 한 가지이다.

메서드 호출 내부 간의 내부 통신을 숨겨주며, 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신 기술이다.

클라이언트는 다른 머신에 존재할 수 있는 원격 서버와 IPC를 처리하는 로컬 메소드를 호출한다.

다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.

객체 지향의 원칙을 사용하는 소프트웨어의 경우 원격 프로시저 호출을 원격호출(remote invocation) 또는 원격 메소드 호출(remote method invocation)이라고 일컫는다.

안드로이드 서비스 호출 패턴은 RPC를 구현하고 있다.

종류

  • RMI (Remote Method Invocation)
    • RPC를 객체지향으로 구현
    • 서버와 클라이언트 모두 helper가 필요하다. (서버 측은 Skeleton, 클라이언트 측은 Stub)
  • Stub
    • 원격지에 위치해 있는 프로그램을 대리하는 작은 루틴이다.
    • RPC를 사용하는 프로그램이 컴파일되면 요청된 절차를 제공하는 프로그램의 대역을 한다.
    • 클라이언트에서 요청하는 데이터를 Marshaling하고 작업이 완료된 데이터를 다시 UnMarshaling하는 역할
  • Skeleton
    • Stub과 비슷한 역할로 서버의 보조 객체이다.
    • 클라이언트의 Stub에서 데이터가 Marshaling되어 전송되면 Seleton에서 UnMarshaling하여 원래의 형태로 복원한다.
  • Marshaling / Unmarshaling
    • Marshaling은 데이터를 바이트로 쪼개서 TCP/IP같은 통신 채널을 통해 전송될 수 있는 형태롤 바꿔주는 과정
    • UnMarshaling은 반대로 전송 받은 바이트를 원래의 형태로 복원하는 과정
반응형