프로세스는 프로세스 간에 메모리를 공유하지 않는다. 그렇기 때문에 프로세스 간의 통신이 필요한데 이런 통신이 뭐가 있을까?? 또한 각기 다른 디바이스들이 어떻게 통신을 할까?? 이번 글에는 IPC와 RPC차이를 알아보고자 한다.
IPC와 RPC는 async call로 스레드에서 하부작업 요청 시 요청된 하부작업의 실행 또는 종료와 관계없이 호출 스레드 또는 프로세스의 실행 흐름은 계속되는 호출을 말한다.
IPC (Inter Process Communication)
각 프로세스들이 통신하는 모든 형태를 일컽는다. 이에는 여러 형태의 메시지 전달 방식이 포함된다
- IPC의 종류
- Shard Memory
- 프로세스간 공유되는 메모리 영역을 만들어 사용하는 방법
- 커널에 만들어짐
- 프로세스들은 읽기/쓰기를 통해 공유 영역을 수정할 수 있다.
- 주로 부모/자식 프로세스 간에 사용
- Message Passing
- 다른 프로세스에 message를 보내 정보를 교환하는 방법
- 주로 작은 데이터를 교환
- system call이 잦아 느려질 수 있다
- Sockets
- 네트워크 통신의 종점 간의 통신이다.
- IP Address, Port를 이용해 직접 통신
- Pipe
- 양방향 간의 버퍼를 통해 데이터를 읽거나 쓰는 구조
- 연속적인 byte stream을 교환할 때 많이 사용
RPC (Remote Process Communication)
RPC는 IRC의 종류 중 하나이다. 컴퓨터 프로그램이 다른 주소공간에 원격제어를 위해 함수나 프로시저 실행을 허용하는 프로토콜이다. RPC를 조금 더 알려면 프록시에 대해 알아볼 필요가 있다.
- 프록시(Proxy)란?
대리자란 의미로 네트워크에서 최종 사용자와 다른 웹사이트 또는 서버 사이의 가교역할을 하는 물리적 또는 가상 서버이다. 클라이언트와 Web서버의 중간에 위치하고 있어, 대신 통신을 받아 주는 것이 프록시 서버이다.
프록시의 기본 개념처럼 클라이언트는 다른 머신이 존재할 수 있는 원격 서버와 IPC를 처리하는 로컬 메서드를 호출한다. 즉, RPC는 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.
- 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은 반대로 전송받은 바이트를 원래의 형태로 복원하는 과정
'Embedded SW 기초 > 네트워크' 카테고리의 다른 글
TCP, UDP 통신 (0) | 2024.06.22 |
---|---|
네트워크 구조 (0) | 2024.06.12 |
HTTP (0) | 2024.06.04 |