본문 바로가기
느리게 변하는 지식/정보통신

프로세스 간의 통신

by oncerun 2021. 3. 20.
반응형

프로세스 간의 통신은 원칙적으로 2개의 상호 보완적인 통신 프로세스가 통신하는 기법에는 두 가지가 존재합니다.

 

첫 번째는 공유 기억장치 (shared memory) 기법과 메시지 시스템(message system) 기법입니다.

 

이 두 가지 방법은 상호 배타적이 아니라 단일 운영체제 내에서 동시에 사용됩니다.

 

1. 공유 기억장치

 - 공유 기억장치는 통신하는 프로세스 간에 어떤 변수를 공유하도록 하여 프로세스가 이런 공유 변수를 이용하여 정보를 교환하도록 하는 것입니다.  이 방법은 고속의 통신을 할 수 있으며, 통신 기능을 제공하는 책임은 응용  프로그래머에게 달려 있고 운영체제는 단지 공유 기억 장소만을 제공합니다.

 

2. 메시지 시스템

 - 메시지 교환 방식을 이용함으로써 프로세스가 공유 변수에 의존하지 않고도 서로 통신할 수 있게 하는 것입니다. 프로세스 간의 통신 기능은 기본적으로 send와 receive연산자의 형태로 제공되고, 보다 소량의 데이터를 교환하는 데 유효한 방식이며 통신을 제공하는 책임은 운영체제 자체에 있습니다.

 

만약 두 개의 프로세스가 통신을 원한다면 서로 메시지를 주고받기 위한 통신 링크가 이루어져야 합니다. 이러한 통신 링크를 설정하는 방법은 수많은 상황을 고려합니다.  링크가 2개 이상의 프로세스와 연결될 수 있는지, 혹은 링크의 버퍼 공간이 얼마나 필요한지, 메시지의 크기가 어느 정도 되는지,  단방향인지 또는 양방향인지 고려해야 합니다.

 

 그리고 링크의 논리적 구현과 송/수신 연산을 위한 다양한 방법이 있습니다.

  

직접 통신 방식의 성질은 통신을 원하는 모든 프로세스의 pair 사이에 링크가 자동 설정되며 상대방의 신원을 알아야 합니다. 또한 하나의 링크는 두 프로세스 사이만 연관됩니다. 링크는 양방향을 가지고 있습니다. 

더 불어 간접 통신은 mailbox 혹은 ports으로부터 메시지를 보내거나 받을 수 있습니다.  우편함은 프로세스에 의해 메시지가 넣어지고 빠지는 객체로 취급할 수 있으며, 두 프로세스가 공유 우편함을 가질 때만 통신할 수 있습니다.

 

결국 다양한 방법은 링크를 사용합니다. 

링크는 자체 안에 임시로 저장되는 메시지의 수를 결정하는 용량을 갖습니다. 이런 특성은 링크에 붙여지는 메시지의 큐로써 생각될 수 있습니다. 

 - 'O' 용량 : 큐는 최대길이가 0이다. 그러므로 링크는 그 안에 어떠한 메시지를 가질 수 없습니다. 이 경우 송신자는 수신자가 메시지를 수신할 때까지 기다려야 합니다. 이 두 프로세스는 메시지 전송이 일어날 수 있도록 동기화되어야 하며 이러한 동기화를 랑데부 (rendevous)라고 합니다. 비 버퍼링 메시지 시스템이라고도 하며, 다른 경우는 자동 버퍼링을 제공합니다.

 - 제한된 용량 : 큐는 유한 길이 n을 갖게 하며 메시지는 많아야 n개를 가질 수 있습니다. 메시지가 큐에 송신될 때  큐 용량을 보고 들어가거나 들어가지 않습니다. 그래서 송신자는 대기하지 않고 작업을 진행할 수 있습니다. 만약 큐의 용량이 다 차면 송신자는 큐의 공간이 생길 때까지 대기해야 합니다.

 

 

메시지 시스템은 분산 환경에서 유용한데, 이 환경에서 프로세스는 서로 다른 시스템에 위치할 수 있습니다. 이런 경우에 통신과 처리의 오류가 발생할 확률은 단일 시스템 보나 큽니다. 이렇게 발생했을 때 발생할 예외조건들을 알아봅니다.

 

 프로세스 종료 : 통신하는 프로세스들은 메시지가 처리되기 전에 종료될 수 있습니다. 이 경우는 수신되지 않은 메시지를 기다리거나 송신지 되지 않은 메시지를 기다리는 프로세스가 생길 수 있습니다. 이런 경우는 시스템은 대기하고 있는 프로세스를 종료시키거나 종료 사실을 알려야 합니다. 

 

메시지 상실 : 하드웨어나 통신 라인 고장으로 인하여 통신 네트워크 내에서 상실될 수 있습니다. 

 1) 운영체제가 이런 사건을 탐지하고 메시지를 재전송한다.

 2) 송신 프로세스가 이런 사건을 탐지하고, 원한다면 메시지를 재전송한다.

 이렇게 상실된 메시지는 어떻게 탐지할 수 있을까?

보편적인 탐지방법은 시간제한을 사용하는 것이다. 메시지가 통신되었을 때 수신을 알리는 응답 메시지가 항상 역으로 송신된다. 운영체제나 프로세스는 응답 메시지가 도착하는 대기시간 간격을 명시한다. 응답이 도착하기 전에 시간이 경과하면 메시지가 상실된 것으로 간주하고 다시 보낸다.

 

메시지 혼합 : 메시지는 그 목적지에 배달되는 도중에 뒤섞일 수도 있다. 따라서 메시지의 원본이 손상될 수 있는데 보통 이러한 에러는 checksum을 이용하여 오류를 탐지한다.

 

반응형

'느리게 변하는 지식 > 정보통신' 카테고리의 다른 글

패킷 교환 : 데이터그램 방식  (0) 2021.03.12
네트워크 장치  (0) 2021.03.10
OSI 모델 응용 계층  (0) 2021.03.07
전송 동기  (0) 2021.03.07

댓글