1. 소켓(Sockets)
2. 원격 프로시저 호출(Remote Procedure Calls)
3. 파이프(Pipes)
- 응용 프로그램 간에 통신이 연결되는 종단점(endpoint)
- IP주소와 포트번호에 의해서 식별됨
> IP 주소는 시스템을 가리킴
> 포트 번호는 해당 시스템의 프로세스와 연결됨
- 네트워크에 연결되어 있는 시스템의 프로세스들 간에 Procedure calls를 추상화한 것으로 IPC 기반으로 구현됨
Stubs
- 서버의 Procedure에 대한 원격 호출을 대행해주는 Procedure (proxy)
※ XDR : 데이터를 저장하는 컴퓨터 구조의 차이를 해결하기 위한 중립적인 자료 표현 중 하나.
- Clien stub - 원격서버의 포트를 찾고, 매개 변수를 중립적 표현 방식으로 정돈(marshal)
- Server stub -메시지 수신, 정돈된 메시지 해제, 서버에서 요청한 프로시저 호출 후 수행하여 결과 전송
두 개의 프로세스가 서로 통신이 가능하도록 전달자 역할 수행
고려사항
- 통신 방향 : 단방향(unidirectional) 또는 양방향(bidirectional)
- 양방향 통신의 경우 : 반이중(half-duplex) 또는 전이중(full-duplex)
- 통신하는 두 프로세스 간에 특별한 관계 (부모-자식) 필요 여부
- 네트워크 통신 가능 여부
일반 파이프(ordinary pipe)
- 생성한 프로세스만 접근 가능
- 부모 프로세스가 파이프를 생성하고, 자식 프로세스를 생성하여 파이프를 사용하여 자식 프로세스와 통신
지명 파이프(named pipe)
- 파이프 특성을 가지며, 보통의 파일처럼 존재
- 지명 파이프를 사용하는 프로세스들은 부모-자식 관계가 필요하지 않음
생산자-소비자 형태로 두 프로세스 간의 통신을 허용
- Producer는 한쪽 끝(write-end)으로 쓰기를 함
- Consumer는 다른쪽 끝(read-end)에서 읽기를 함
일반 pipe는 단방향 통신만 가능
통신하는 두 프로세스는 부모-자식 관계가 필요함
- 부모가 생성한 pipe가 자식에게 복제되어 공유됨
- 일반 pipe보다 강력한 기능 제공
- 지명 pipe는 양방향 통신 가능
- 부모-자식 관계가 필요 없음
- 여러 프로세스들이 지명 pipe를 사용하여 통신 가능
Unix에서는 FIFO 특수 파일로 나타남
- half-duplex 양방향 전송을 함
- 동시에 양방향으로 전송하려면 두 개의FIFO파일이 필요
- mkfifo()를사용하여 FIFO 파일 생성
Windows는 full-duplex 양방향 전송 가능
- CreateNamedPipe() 사용하여 생성
4.2 멀티코어 프로그래밍 (0) | 2020.04.30 |
---|---|
4.1 쓰레드 개요 (0) | 2020.04.24 |
3.5 IPC 시스템사례 (0) | 2020.04.24 |
3.4 프로세스간 통신 (Interprocess Communication) (0) | 2020.04.24 |
3.3 프로세스 연산 (0) | 2020.04.17 |
댓글 영역