IPC(Inter-Process Communication)와 RPC(Remote Procedure Call)

IPC와 RPC 차이

IPC(Inter-Process Communication)와 RPC(Remote Procedure Call)는 둘 다 다른 프로세스 간 통신을 위한 기술이다.




그러나 이 두 개념은 큰 차이가 있다.




IPC는 동일한 컴퓨터 내에서 실행 중인 프로세스 간에 통신을 수행한다.




예를 들어, 파이프, 메시지 큐, 공유 메모리 및 세마포어 등을 이용하여
동일한 시스템에서 실행 중인 프로세스 간에 데이터를 전송하고 동기화하는 데 사용된다.




반면에 RPC는 네트워크를 통해 서로 다른 컴퓨터나 시스템에서 실행 중인 프로세스 간에 통신을 수행한다.




RPC는 프로그래머가 마치 로컬 함수를 호출하는 것처럼 원격 시스템에서 실행 중인 함수를 호출할 수 있게 해준다.




RPC를 사용하면 원격 시스템에서 실행 중인 코드를 로컬 코드와 거의 동일하게 호출할 수 있다.




요약하면,
IPC는 동일한 컴퓨터 내에서 실행 중인 프로세스 간에 통신을 수행하는 데 사용되고,
RPC는 서로 다른 컴퓨터나 시스템에서 실행 중인 프로세스 간에 통신을 수행하는 데 사용된다.

IPC 종류

  • Named Pipe
    • 다수의 프로세스 간 통신에 사용된다.
  • Message Queue
    • 프로세스 간의 통신 및 메시지 전달에 사용된다.
  • Shared Memory
    • 여러 프로세스에서 데이터를 공유하고 동시에 수정할 수 있다.
  • Semaphore
    • 공유 자원에 대한 동기화를 위해 사용된다.
  • Windows RPC
    • Windows 운영체제에서 지원하는 RPC이며, 프로세스 간 통신을 위해 사용된다.
  • Socket
    • 네트워크 프로그래밍에서 자주 사용되며, 다른 프로세스나 컴퓨터와 통신할 수 있다.

RPC 종류

Window 환경에서 C언어로 구현할 수 있는 RPC 종류는 다음과 같다.

  • Windows RPC
    • Windows 운영체제에서 지원하는 RPC Microsoft에서 개발했다.
    • COM(Component Object Model)와 같이 사용되어 객체지향 프로그래밍에서 자주 활용된다.
  • ONC RPC
    • Sun Microsystems에서 개발한 RPC
    • UNIX, Linux, Windows와 같은 다양한 운영체제에서 사용할 수 있다.
    • 네트워크 파일 시스템(NFS)에서 활용된다.
  • XML-RPC
    • XML을 이용하여 구현한 RPC.
    • HTTP를 통해 호출되며, 다양한 언어와 플랫폼에서 사용될 수 있다.
  • JSON-RPC
    • JSON을 이용하여 구현한 RPC
    • HTTP나 TCP를 통해 호출되며, 다양한 언어와 플랫폼에서 사용될 수 있다.
  • gRPC
    • Google에서 개발한 RPC다.
    • Protocol Buffers를 사용하여 구현하며, 대용량 및 분산 시스템에서의 통신에 사용된다.
    • Window 환경에서도 사용이 가능하다.

Comments

댓글을 불러오고 있습니다.