상세 컨텐츠

본문 제목

3.6 클라이언트-서버 시스템에서의통신

Computer Science/OS Concepts

by RACC8N 2020. 4. 24. 14:31

본문

1. 소켓(Sockets)

2. 원격 프로시저 호출(Remote Procedure Calls)

3. 파이프(Pipes)

 

Sockets

- 응용 프로그램 간에 통신이 연결되는 종단점(endpoint)

- IP주소와 포트번호에 의해서 식별됨

  > IP 주소는 시스템을 가리킴

  > 포트 번호는 해당 시스템의 프로세스와 연결됨

Remote Procedure Calls (RPC)

- 네트워크에 연결되어 있는 시스템의 프로세스들 간에 Procedure calls를 추상화한 것으로 IPC 기반으로 구현됨

 

Stubs

- 서버의 Procedure에 대한 원격 호출을 대행해주는 Procedure (proxy)

※ XDR : 데이터를 저장하는 컴퓨터 구조의 차이를 해결하기 위한 중립적인 자료 표현 중 하나.

- Clien stub - 원격서버의 포트를 찾고, 매개 변수를 중립적 표현 방식으로 정돈(marshal)

- Server stub -메시지 수신, 정돈된 메시지 해제, 서버에서 요청한 프로시저 호출 후 수행하여 결과 전송

 

Pipes

두 개의 프로세스가 서로 통신이 가능하도록 전달자 역할 수행

 

고려사항

- 통신 방향 : 단방향(unidirectional) 또는 양방향(bidirectional)

- 양방향 통신의 경우 : 반이중(half-duplex) 또는 전이중(full-duplex)

- 통신하는 두 프로세스 간에 특별한 관계 (부모-자식) 필요 여부

- 네트워크 통신 가능 여부

 

일반 파이프(ordinary pipe)

- 생성한 프로세스만 접근 가능

- 부모 프로세스가 파이프를 생성하고, 자식 프로세스를 생성하여 파이프를 사용하여 자식 프로세스와 통신

 

지명 파이프(named pipe)

- 파이프 특성을 가지며, 보통의 파일처럼 존재

- 지명 파이프를 사용하는 프로세스들은 부모-자식 관계가 필요하지 않음

 

일반 Pipes (Windows의 anonymous pipe)

생산자-소비자 형태로 두 프로세스 간의 통신을 허용

- Producer는 한쪽 끝(write-end)으로 쓰기를 함

- Consumer는 다른쪽 끝(read-end)에서 읽기를 함

 

일반 pipe는 단방향 통신만 가능

통신하는 두 프로세스는 부모-자식 관계가 필요함

- 부모가 생성한 pipe가 자식에게 복제되어 공유됨

지명(Named) Pipes

- 일반 pipe보다 강력한 기능 제공

- 지명 pipe는 양방향 통신 가능

- 부모-자식 관계가 필요 없음

- 여러 프로세스들이 지명 pipe를 사용하여 통신 가능

 

Unix에서는 FIFO 특수 파일로 나타남

- half-duplex 양방향 전송을 함

- 동시에 양방향으로 전송하려면 두 개의FIFO파일이 필요

- mkfifo()를사용하여 FIFO 파일 생성

 

Windows는 full-duplex 양방향 전송 가능

- CreateNamedPipe() 사용하여 생성

 

'Computer Science > OS Concepts' 카테고리의 다른 글

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

관련글 더보기

댓글 영역