4.4 프로세스 간의 통신
프로세스 간의 통신 (IPC, Interprocess Communication)
> 병행 프로세스 사이의 통신을 위한 방법
- 공유기억장치 shared memory 기법
- 메시지 시스템 message system 기법
> 두 방법은 상호 배타적이 아님
- 단일 운영체제 내에서 동시에 사용 가능
4.4.2 메시지 시스템 기법
- 메시지 교환 방식을 이용함으로써 프로세스가 공유변수에 의존하지 않고도 서로 통신할 수 있게 하는 것
- 프로세스 간의 통신기능은 send(message)와 receive(message) 연산자의 형태로 제공
- 보다 소량의 데이터를 교환하는 데 유효한 방식
- 통신기능 제공의 책임은 운영체제에 있음
> 통신 링크
- 프로세스들 사이에 메시지를 주고받기 위한 연결통로
> 논리적 구현에 대한 이슈
- 어떻게 링크를 설정?
- 한 링크가 2개 이상의 프로세스와 연결 가능?
- 두 프로세스 사이에 얼마나 많은 링크 존재?
- 링크의 용량은? 메시지의 크기는 ? 링크는 단방향인가 양방향인가?
> 링크의 논리적 구현과 송신/수신send/receive 연산을 위한 여러가지 방법이 있다.
1. 직접 또는 간접 통신
2. 프로세스나 우편함으로 전송
3. 대칭 또는 비대칭 통신
4. 자동적 버퍼링 또는 명시적 explicit 버퍼링
5. 복사에 의한 전송 또는 참조에 의한 전송
6. 고정 크기 또는 가변 크기의 메시지
(1) 직접 통신 direct communication
메시지 전달 연산에 수신자나 송신자 이름을 명시
send 와 receive의 기본 연산자 primitive가 다음과 같이 정의
send(P, message) : 프로세스 P로 메시지를 보낸다
receive(Q, message) : 프로세스 Q에서 메시지를 받는다.
- 통신 링크는 자동 설정됨
- 하나의 링크는 두 프로세스 사이만 연관되며 각 통신 프로세스 쌍 사이에는 정확히 링크가 존대
- 링크는 양방향임
(2) 간접 통신
- 우편함 mailbod 또는 port 을 통해 메세지를 주고 받음
- 두 프로세스는 공유 우편함을 가질 때만 통신할 수 있음
- send(A, message) : 우편함 A로 메시지를 보냄
- receive(A, message) : 우편함 A에서 메시지를 받음
소유권
- 프로세스 소속 : 소유자는 수신만, 사용자는 송신만 함
- 운영체제 소소 : 우편함은 스스로 존재
(3) 링크의 용량
링크는 자체 안에 임시로 저장되는 메시지의 수를 결정하는 용량을 갖는다.
이런 특성은 링크에 붙여지는 메시지의 큐로써 생각될 수 있다.
1) '0' 용량 : 큐는 최대길이가 0이다. 송신자와 수신자는 메시지 전송을 위해 동기화되어야 한다. 이런 동기화를 랑데부(rendevous)라고 한다.
2) 제한된 용량 : 큐는 유한 길이 n을 갖는다. 새로운 메시지가 송신될 때 큐가 차있지 않다면 이는 큐에 들어가게 되며, 송신자는 대기하지 않고 수행을 계속 할 수 있다. 링크는 유한 용량을 가지므로 링크가 꽉 차면 송신자는 큐에 공간이 생길 때까지 기다려야 한다.
3) 무제한 용량 : 큐는 무한한 길이를 가지고 있다. 송신자는 대기할 필요가 없음.
(4) 예외조건
1) 프로세스가 종료 : 송신 프로세스 또는 수신 프로세스는 메시지가 처리되기 전에 끝날 수가 있다.
- 송신 프로세스 Q가 종료된 경우 : P ( 수신프로세스) 종료 , Q가 종료한 사실을 P에 알림
- 수신 프로세스 Q가 종료된 경우 : --> 버퍼가 없는 경우 : P를 종료 , Q가 종료한 사실을 P에 알림
2) 메시지를 상실한 경우 : * 탐지방법 : 시간제한
- 운영체제가 탐지 후 메시지 재전송
- 송신 프로세스가 탐지 후 메시지 재전송
- 운영체제가 탐지 후 송신 프로세스에게 통지
3) 메시지가 혼합된 경우 * 탐지방법 : checksum
- 오류 탐지 후 재전송
'방송통신대학 > 운영체제' 카테고리의 다른 글
교착상태 방지 (0) | 2020.07.01 |
---|---|
교착상태 deadlock, 자원할당 (2) | 2020.06.30 |
프로세스의 상호협력 (0) | 2020.06.22 |
기말 ] 벨 라파듈라 ,비바 모델의 공통점과 차이점 (0) | 2020.06.06 |
4강 4강 병행프로세스 1 (0) | 2020.04.28 |