본문 바로가기
학교 수업/운영체제

운영체제 || 5. Inter Process Communication

by Godgil 2021. 3. 29.

 

시스템 안에 있는 프로세스는, 각자 독립적이거나 상호 협력적일 수 있어.

독립적인 프로세스는 당연히, 다른 프로세스에 영향을 줄 수 없지만, 협력적인 프로세스들은 영향을 줄 수 있지, 예를 들자면 이제 공유하는 데이터 같은게 있을테니까.

 

이 프로세스들이 독립적인 것 보다, 상호 협력적인게 장점이 많아.

첫번째, Information sharing : 데이터를 상호교환하기 떄문에 서비스의 품질이 올라가고

두번째, Computation speedup : 연산 속도가 당연히 올라갈 거고

세번째, Modularity : 프로세스에게 각각의 역할을 정해준다면, 프로세스는 각자가 필요한 코드만 들고 있을거고, 결국 유지보수에 장점이 있지.

마지막으로 Convenience : 한 Task를 한 프로세스로 할 떄 보다, 여러 프로세스를 비슷한 task로 할 때 사용자에게 편의성을 제공해 줘

 

멀티프로세서 구조의 대표적인 예시로, 크롬 브라우저가 있어.

크롬을 잘 생각해보면 여러개의 탭이 열릴 수 있단 말이야, 근데 하나의 탭에서 문제가 생겼다고 전체 크롬 서비스가 다 죽진 않지? 

이제 이런게 각각의 프로세스별로 역할이 잘 나누어서 수행이 되어있기 때문에 가능한 일이야

 

OS는 Inter Process Communication을 하기 위해, 여러 모델을 제시했는데, 가장 대표적인게 shared Memory와 Message passing이야.

 

먼저 shared memory부터 볼까?

이름에서 느껴지지만, 공유가능한 메모리 영역을 가지는거야.

프로세스들은 이제 명시적으로 공유 메모리 공간에 접근할 수 있고, 읽고 쓰기가 가능해.

자, 그러면 이제 어떤 문제가 있을까?

같은 메모리 공간에 동시에 접근 해서, 동시에 수정할 경우가 생길 수 있겠지? 이런 현상을 방지하기 위해서 Shared Memory는 Synchromize를 잘 해 줘야해. 이런 충돌이 안일어날 수 있도록 순서를 잘 정해주는거지

 

그 다음은, Message Passing이야.

Message Passing은 OS를 통해서 Communication이 이루어지는 방식이야

OS의 message queue에 한 프로세스가 보내면, 다른 프로세스는 받는 형태지

얘는 마이크로커널환경에서 되게 효율적이야.

하지만, 커널에 의해 작동하기 때문에 오버헤드가 존재 해

 

 

이 둘 말고도, Signal, Pipe, RPC같은 매커니즘도 존재하는데, 나중에 다시 자세하게 다루려고 해.

댓글