본문 바로가기

C.E/OS

Process - InterProcess Communication(IPC)_1

InterProcess Communication(IPC), Process간의 통신

 

IPC는 Process간 통신과 동작의 동기화를 위한 메커니즘이다. 간단히 말하면 Process간 통신 방법이다.

 

IPC는 두개의 간단한 명령으로 가능한데 이 두가지가 send(message)receive(message)이다.

 

이때 message는 그 크기를 두가지로 설정할 수 있는데 이 두개의 차이는 아래와 같다.

 

Fixed Size : O.S의 처리는 간단하지만 사용자 프로그래밍은 복잡해진다.

 

Variable Size : 사용자 프로그래밍은 간단하지만 O.S의 처리는 복잡해진다.

 

만일 Process P와 Q가 통신을 하고 싶다고 가정하자. 이때 P와 Q는 서로간의 Communication Link(통신을 위한 논리적 또는 물리적 매체)

 

을 설립해서  위의 두가지 명령으로 message를 주고 받는다. 이러한 통신을 구현하는 방식은 여러가지가 있다. 여기서는

 

가장 대표적인 Direct Communication과 Indirect Communication에 대해서 알아보자.

 

Direct Communication

 

Send(P, Message) : P에게 Message를 보낸다.

Receive(Q, Message) : Q로부터 Message를 받는다.

 

Direct Communication은 문자 그대로 Process간의 통신 직접적으로 연결되는 방식이다.

 

Direct Communication 방식에서 연결은 자동적으로 이루어 진다. 또한 이러한 연결은 한쌍으로 존재하기 때문에

 

다른 Process간의 통신을 위해서는 새로운 연결이 생성되어야만 한다. 그리고 두 Process간의 연결은

 

하나만이 존재한다. 마지막으로 연결은 일방일수 있지만 보통은 양방향 통신이 가능하다.

 

Indirect Communication

 

Send(A, Message) : Mailbox A에게 Message를 보낸다.

Receive(A, Message) : Mailbox A로부터 Message를 받는다.

 

Indirect Communication의 경우는 Process간 통신이 직접적이 아닌 Mailbox를 통해 통신하는 간접적인 방식이다.

 

이 경우 두 Process간의 통신이 아니라 여러 Process간의 통신이 가능하게 된다. 다만 그럴경우 누가 Message를

 

받아야 하는지가 문제가 된다. 이 역시 여러가지 방법이 있을 수 있다. 몇 가지를 얘기 하자면

 

Receive 명령은 한번에 한 Process만 가능하게 하거나 System이 임의로 선택 할수고 있고 Sender가 표시하게 할수도 있다.

 

Indirect Communication의 경우 Mailbox를 누가 관리하냐에 따라 상황이 다르다.

 

만일 Mailbox를 특정 Process가 관리한다면 다른 Process들은 Mailbox를 이용만 할 뿐이다. 하지만 이럴 경우

 

특정 Process가 종료된다면 Mailbox까지 사라지기 때문에 통신이 불가능 하게 된다.

 

그렇다면 Mailbox를 O.S가 관리한다면 어떻게 될까?

 

그럴 경우 Process가 Mailbox를 생성 및 제거가 가능해야 하며 해당 Mailbox를 통해서 Message의 송수신이 가능해야 한다.

 

 

'C.E > OS' 카테고리의 다른 글

Thread - Thread란?  (0) 2013.12.09
Process - InterProcess Communication(IPC)_2  (0) 2013.12.09
Process - Operation on Process  (0) 2013.12.09
Process - Schedulers  (0) 2013.12.09
Process - Process Scheduling  (0) 2013.12.09