728x90
멀티 프로세스 환경
- 한 대의 컴퓨터에 여러 개의 프로세스(서비스)를 띄워 사용하는 방식
- 각 프로세스는 독립적인 메모리를 할당 받기 떄문에, 메모리 공유를 위해서는 IPC를 사용해야 함
IPC(Inter Process Communication)
- 프로세스 혹은 스레드가 데이터를 교환하는 기법
공유 메모리(Shared Memory)
- 여러 프로그램이 동시에 접근할 수 있는 메모리
- 성능은 좋지만, 동기화 문제 발생
메시지 교환(Messaging Passing)
- 커널(운영체제)가 프로세스간 서로 자원에 접근이 불가능하기 때문에 대리 전달해주는 것
- 안전하고 동기화 문제가 없는 대신, 성능이 떨어짐
RPC(Remote Procedure Call)
- 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스 간 통신
소켓(Socket)
- 네트워크에서 프로세스가 데이터 통신을 위해 사용하는 창구
- 프로토콜, IP 주소, Port 번호로 정의
Communication link
- Direct Communication
: 프로세스가 커널에 메시지를 직접 주고, 그걸 커널이 다른 프로세스에세 직접 전달하는 방식
- Indirect Communication
: 커널이 직접 메시지를 두는 것이 아니라 하나의 프로세스가 Message Queue에 메시지를 주고, 다른 프로세스가 해당 메시지를 읽어오는 방식
Synchronous(동기)/Asynchronous(비동기)
: 동시에 두개 이상의 이벤트가 발생하는 경우
- Synchronous(동기) : 호출된 함수의 수행 결과 및 종료를 호출한 함수가 신경 쓰는 경우
- Asynchronous(비동기) : 호출된 함수의 수행 결과 및 종료를 호출한 함수가 신경 쓰고 처리하는 경우
Block/Non-Block
: 행위 자체가 제한된/대기하는 상태 혹은 그 반대
- Block : 호출된 함수가 자신의 일을 마칠 때까지 제어권을 계속 가지고 호출한 함수에게 돌려주지 않는 경우
- Return : 호출된 함수가 자신이 할 일을 마지치 않았더라도 바로 제어권을 건네주는 경우
- Non-Blcok : 호출된 함수가 자신이 할 일을 마지치 않았더라도 호출한 함수가 다른 일을 진행하면서 대기할 수 있도록 해주는 경우
참고 사이트
동기와 비동기, 그리고 블럭과 넌블럭
무릇 모든 개발자들, 아니 비단 개발자가 아니라 할지라도 컴퓨터 관련 산업계 종사자들이라면 오다 가다 한 번씩은 꼭 들어보고, 또 익혔음직한 내용이겠습니다. 이름하야, 동기(Synchronous)와 비
musma.github.io
[기본] 소켓(SOCKET)통신 이란?
소켓통신 소켓(SOCKET)이란? 소켓(Socket)은 프로세스가 드넓은 네트워크 세계로 데이터를 내보내거나 혹은 그 세계로부터 데이터를 받기 위한 실제적인 창구 역할을 한다. 그러므로 프로세스가 데
helloworld-88.tistory.com
728x90
반응형