반응형
[ 프로세스간 통신 ]
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은 반대로 전송 받은 바이트를 원래의 형태로 복원하는 과정
- Marshaling은 데이터를 바이트로 쪼개서
반응형
'Computer Science > [ OS ]' 카테고리의 다른 글
[ OS ] 05. 동기와 비동기(Sync, Async) (0) | 2021.05.27 |
---|---|
[ OS ] 04. CPU Scheduler (0) | 2021.05.27 |
[ OS ] 03. 스케쥴러 (Scheduler) (0) | 2021.05.26 |
[ OS ] 02. 멀티스레드 (0) | 2021.05.26 |
[ OS ] 00. 프로세스와 스레드의 차이 (0) | 2021.05.25 |