미래와 연결될 첫걸음

Interprocess Communication(IPC) #3.4 본문

Infra/OS

Interprocess Communication(IPC) #3.4

Traveler:) 2019. 6. 29. 02:39

Process간의 소통(통신)을 살펴보기 이전에, 우선 왜 process간에 소통이 필요하게 되었는지에 대해 생각해보겠습니다.

 

OS에서 Processes가 동시에 실행될 때, processes들은 independent processcooperating processes로 나눌 수 있습니다.

즉, 다른 process의 영향을 전혀 받지 않는 process가 필요할 수도 있을 것이고, 다른 process와 영향을 주고 받으면서 data를 공유하는 process가 필요할 수도 있을 것입니다.

 - Indenpent process : 다른 processes에게 영향을 줄 수 없고, 영향을 받지도 않는 process입니다. 그래서 data를 공유할 수 없습니다.

 - Cooperatiog process : 다른 processes에게 영향을 줄 수 있고, 영향을 받는 process입니다. 그래서 data를 공유할 수 있습니다.

 

그렇다면, 언제 Cooperating process이 되는 상황이냐?

 

  1. Information sharing : 여러 user들이 같은 정보(information)에 관심이 있을 때, 이 정보에 대해 동시에 접근 할 수 있게 해줘야 합니다.

  2. Computation speedup : 계산을 빠르게 하려면, 혼자서 하는 것보다 여러 명이 나누어서 병렬적으로 계산하는 것이 빠를 것입니다. 

                                            multi와 같은 개념이죠. 이 때에도 일을 나누어주어야 하니 어떠한 정보에 접근할 수 있게 해줘야 합니다.

  3. Modularity : 모듈성인데요. 만일, system이 하나의 큰 덩어리로 되어 있다면, 어느 한부분이 고장났을 때,

                           그 한부분 때문에 다른 부분을 사용하지 못하게 되겠죠? 그래서, 이 system을 여러 개의 processes와            

                           thread로 나누어 놓습니다. 그러면, 한부분이 고장나더라도 그 부분만 고치면 되겠죠?

                           이 모듈성 때에도 data 공유가 필요할 것입니다.

  4. Convenience : user가 동시에 여러 일을 할 수가 있습니다. 음악을 들으면서 편집을 하는 것처럼요.

                              이럴 때에도 Cooperating process가 필요합니다.

 

즉, Cooperating process가 필요한 상황들이 발생하게 되는데,

Cooperating process는 Interprocess Communication(IPC)를 통해 data와 information을 주고 받게 되는 것이죠.

이 IPC에는 일반적으로 크게 두 가지 메커니즘이 있습니다. 

 

  1. shared memory : data를 공유하는 공간이 따로 있어서 그 공간을 통해 communication을 합니다.

     message passing보다 더 빠릅니다. 왜냐하면, message passing은 보통 system call을 통해 실행하는데 이 때, 시간이 더 소비되기 때문이죠. shared memory는 공유할 공간을 만드는 system call만 필요합니다. 또, 공유할 공간이 만들어지고 난 이후는 커널(kernel)의 도움이 필요하지 않습니다.

 

  2. message passing : message를 보냄으로 communication을 합니다.

     message passing은 더 적은 양의 data를 교환할 때 유용합니다(conflict가 없기 때문이죠). 또, distributed system에서 shared memory보다 더 쉽게 실행 할 수 있습니다.

    * conflict : 어떤 한 resource에 대해 여러 접근이 발생하는 것.

Communications models

다음에 Shared Memory와 Message Passing에 대해 더 자세히 다뤄보겠습니다.