프로세스간 통신
Inter-process communication프로세스간 통신(, IPC)은 컴퓨터 과학에서 프로세스가 공유 데이터를 관리하기 위해 제공하는 메커니즘입니다.일반적으로 응용프로그램은 클라이언트와 서버로 분류된 IPC를 사용할 수 있으며, 여기서 클라이언트는 데이터를 요청하고 서버는 클라이언트 요청에 응답합니다.[1]많은 애플리케이션이 분산 컴퓨팅에서 흔히 볼 수 있듯이 클라이언트와 서버 모두입니다.
IPC는 커널이 제공하는 기능의 수를 줄이는 마이크로커널과 나노커널의 설계 프로세스에 매우 중요합니다.그런 다음 IPC를 통해 서버와 통신함으로써 일반적인 단일 커널에 비해 통신이 크게 증가합니다.IPC 인터페이스는 일반적으로 가변 분석 프레임워크 구조를 포괄합니다.이러한 프로세스는 IPC 모델이 의존하는 다중 벡터 프로토콜 간의 호환성을 보장합니다.[2]
IPC 메커니즘은 동기식 또는 비동기식입니다.동기화 프리미티브는 비동기 IPC 메커니즘과 동기화 동작을 갖는 데 사용될 수 있습니다.
어프로치
IPC에 대한 다양한 접근 방식은 성능, 모듈화, 네트워크 대역폭 및 지연 시간과 같은 시스템 환경 등과 같은 다양한 소프트웨어 요구 사항에 맞게 조정되었습니다.[1]
방법 | 짧은 설명 | 제공(운영 체제 또는 기타 환경) |
---|---|---|
파일 | 디스크에 저장된 레코드 또는 여러 프로세스에서 액세스할 수 있는 파일 서버에 의해 요구에 따라 합성된 레코드입니다. | 대부분의 운영 체제 |
통신 파일 | 플랜 9의 9P 프로토콜과 가장 유사한 1960년대 후반 IPC의 독특한 형태 | 다트머스 시분할 시스템 |
신호; 비동기 시스템 트랩 | 한 프로세스에서 다른 프로세스로 전송되는 시스템 메시지로, 일반적으로 데이터를 전송하는 데 사용되지 않고 파트너 프로세스를 원격으로 명령하는 데 사용됩니다. | 대부분의 운영 체제 |
소켓 | 동일한 컴퓨터의 다른 프로세스 또는 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송되는 데이터입니다.스트림 지향(TCP; 소켓을 통해 쓰여진 데이터는 메시지 경계를 보존하기 위해 포맷이 필요함) 또는 드물게 메시지 지향(UDP, SCTP). | 대부분의 운영 체제 |
유닉스 도메인 소켓 | 인터넷 소켓과 유사하지만 모든 통신은 커널 내에서 이루어집니다.도메인 소켓은 파일 시스템을 주소 공간으로 사용합니다.프로세스는 도메인 소켓을 아이노드로 참조하며, 여러 프로세스가 하나의 소켓과 통신할 수 있습니다. | 모든 POSIX 운영 체제 및 Windows 10[3] |
메시지 큐 | 소켓과 유사하지만 일반적으로 메시지 경계를 보존하는 데이터 스트림입니다.일반적으로 운영 체제에 의해 구현되는 이 시스템은 여러 프로세스가 서로 직접 연결되지 않고 메시지 큐에 읽고 쓸 수 있도록 합니다. | 대부분의 운영 체제 |
익명 파이프 | 표준 입력 및 출력을 이용한 단방향 데이터 채널.파이프의 쓰기 끝에 기록된 데이터는 파이프의 읽기 끝에서 읽을 때까지 운영 체제에 의해 버퍼링됩니다.프로세스 간 양방향 통신은 "방향"이 반대인 두 개의 파이프를 사용함으로써 이루어질 수 있습니다. | 모든 POSIX 시스템, Windows |
명명관 | 파일처럼 취급되는 파이프.익명 파이프와 같이 표준 입력과 출력을 사용하는 대신 프로세스는 일반 파일인 것처럼 명명된 파이프에 쓰고 이를 읽습니다. | 모든 POSIX 시스템, Windows, AmigaOS 2.0+ |
공유메모리 | 여러 프로세스에 동일한 메모리 블록에 액세스할 수 있게 되면 프로세스 간에 서로 통신할 수 있는 공유 버퍼가 생성됩니다. | 모든 POSIX 시스템, Windows |
메시지 전달 | 메시지 큐 및/또는 비OS 관리 채널을 사용하여 여러 프로그램이 통신할 수 있도록 합니다.동시성 모델에서 일반적으로 사용됩니다. | LPC, RPC, RMI, MPI 패러다임, Java RMI, CORBA, COM, DDS, MSMQ, MailSlots, QNX 등에서 사용 |
메모리 매핑 파일 | RAM에 매핑된 파일로 스트림에 출력하지 않고 메모리 주소를 직접 변경하여 수정할 수 있습니다.이는 표준 파일과 동일한 이점을 공유합니다. | 모든 POSIX 시스템, Windows |
적용들
원격 프로시저 호출 인터페이스
- Java의 RMI(Remote Method Invocation)
- ONC RPC
- XML-RPC 또는 SOAP
- JSON-RPC
- 메시지 버스(Mbus) (RFC 3259에 명시) (M-Bus와 혼동하지 말 것)
- .NET 원격
- gRPC
플랫폼 통신 스택
IPC 메커니즘을 사용하지만 IPC 자체를 구현하지 않는 메시지 및 정보 시스템은 다음과 같습니다.
운영체제 통신 스택
플랫폼 또는 프로그래밍 언어별 API는 다음과 같습니다.
- 이전에 IAC(Interapplication Communications)로 알려진 애플 컴퓨터의 애플 이벤트들
- ARex 포트
- Enea의 Linux용 LINX(오픈 소스) 및 OSE 산하의 다양한 DSP 및 범용 프로세서
- 마하 커널의 마하 포트
- Microsoft ActiveX, Component Object Model(COM), Microsoft Transaction Server(COM+), Distributed Component Object Model(DCOM), DDE(Dynamic Data Exchange), OLE(Object Linking and Embedding), 익명 파이프, 명명된 파이프, 로컬 프로시저 호출, MailSlots, Message loop, MSRPC, .NET Remote, WCF(Windows Communication Foundation)
- 노벨의 SPX
- POSIX mmap, 메시지 큐, 세마포어 [4]및 공유 메모리
- RISC OS의 메시지
- 솔라리스 문
- 시스템 V의 메시지 큐, 세마포어 및 공유 메모리
- 리눅스 TIPC(Transparent Inter Process Communication)
- 바인더 열기 바인더 열기 바인더
- QNX의 PPS(Persistent Publish/Subscribe) 서비스
분산 객체 모델
IPC를 사용하지만 자체적으로 구현하지 않는 플랫폼 또는 프로그래밍 언어 특정 API는 다음과 같습니다.
- Libt2n for C++ for Linux only, 복잡한 개체 및 예외 처리
- PHP 세션
- 디스트리뷰티드 루비
- CORBA(Common Object Request Broker Architecture)
- Electron의 비동기 IPC, 메인 프로세스와 렌더러 프로세스[5] 간 JSON 객체 공유
참고 항목
- 컴퓨터 네트워크 프로그래밍
- 커뮤니케이션 순차 프로세스(CSP paradigm)
- 데이터유통서비스
- 프로시저 호출(procedure call
참고문헌
- ^ a b "Interprocess Communications". Microsoft.
- ^ Camurati, P (1993). "Inter-process communications for system-level design". International Workshop on Hardware/Software Codesign.
- ^ "Windows/WSL Interop with AF_UNIX". Microsoft. 7 February 2018. Retrieved 25 May 2018.
- ^ "동시 프로그래밍 - 프로세스 간 통신"
- ^ "IpcMain Electron".
- 스티븐스, 리처드.UNIX 네트워크 프로그래밍, 2권, 2판: 인터프로세스 커뮤니케이션.프렌티스 홀, 1999년ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon 하드웨어, 프로세스 간 커뮤니케이션 지원 컴퓨터 아키텍처에 관한 제14회 연례 국제 심포지엄의 절차.피츠버그, 펜실베니아, 미국.페이지: 178 - 188발행년도 : 1987 ISBN 0-8186-0776-9
- Crovela, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. 병렬 프로그램 설계 및 성능 예측에서 통신 대 계산 비율 사용 1992년 12월 1-4일. 페이지 238-245 ISBN 0-8186-3200-3
외부 링크
- 시스템 V IPC를 설명하는 Linux ipc(5) 맨 페이지
- 윈도 IPC
- Qt를 사용하여 IPC 사용 가능
- W. Richard Stevens에 의한 유닉스 네트워크 프로그래밍 (제2권: 프로세스간 통신)
- C의 프로세스간 통신 및 배관
- DIPC, 분산 시스템 V IPC