본문 바로가기

컴퓨터과학/운영체제(Operating System)

IPC가 뭐야?

Purpose on IPC is to cooperate between processes

 안녕 친구들! 오늘은 IPC가 무엇이고 왜 하는 지 설명해줄거야. IPC는 Interprocess Communication을 의미해. 다시 말해, process 간 통신(이하 IPC)을 말하지. processA가 있고 processB가 있다면 서로 데이터를 어떻게 주고 받을까? 궁금하지 않아? 함께 공부해보자.

 그 전에 운영체제에서 프로세스가 뭔지 다들 알지? 좋았어! 그래도 한 번 간단하게 정리하고 넘어가자! 프로세스는 (컴퓨터공학에서) 일의 단위를 의미해. 자세한 건, 이전 글을 참고하자.

 IPC의 목적은 Cooperating(협력)하기 위함이야. Cooperating을 할 수 있도록 하는 환경을 제공하는 이유가 몇 가지 있는데 같이 살펴보자.

  1. Information sharing(정보 공유) : 몇몇의 사용자들이 같은 정보를 이용한다고 해보자. 우리는 그들이 그런 정보들에 concurrent한 접근을 할 수 있도록 환경을 제공해야해. 
  2.  Computation speedup : Task를 빨리 수행하기 위해서 여러 subtask들로 나누게 되면 우리는 좀 더 수월하게 task를 마칠 수 있어.
  3. Modularity : 우리는 시스템을 모듈화하여 건설하길 원할 때도 있어. 예를 들면, 여러 개의 개별적인 프로세스나 스레드로 나누는 것 처럼 말이지.
  4. Convenience : 어떤 사용자는 동시에 많은 task들을 한 번에 처리하도록 원할 수 있어. 예를 들어, 음악을 들으면서 문서를 편집한다거나 하는 경우가 있어.

IPC를 하는 방법은 기본적으로 두 가지 모델이 있어. 

Message passing model vs Shared memory model

(a) Message passing : Cooperating하는 process들 간에 메세지를 교환하는 수단으로서 발생하는 통신을 말해. 이 모델은 작은 양의 데이터를 교환하는 데 매우 유용해. 또한 shared memory model에 비해 구현하기도 쉬워. 하지만 shared memory model에 비해 느려. 왜냐하면 system call을 이용하여 구현하고 커널의 개입이 필요하거든. 한 마디로, time-consuming하지.

(b) Shared memory : Cooperating process에 의해서 공유되어지는 메모리 영역을 의미해. 여기에서 프로세스들은 데이터를 읽고 쓰면서 정보를 교환하지. Message passing에 비해 빨라. 왜냐하면 처음 shared-momory region을 차지할 때에만 System call이 한 번 필요하거든. 일단 메모리 영역을 차지하고 나면, 이후는 일반적인 메모리 접근과 같아. 

표가 좀 더 읽기 편하니까 정리한다는 느낌으로 보자.

  Message passing model Shared memory model
속도 느림 빠름
시스템 콜 여러 번 한 번
데이터 양 적음 많음

 어느 정도 이해가 되는 것 같아? 혹시 모르는 것 있으면 댓글이나 메일로 알려줘! 여기까지 이해가 된다면 다음으로 넘어가 보자. 잘했어!

 이제 다음 글에서 Message passing model 에 대해 좀 더 자세하게 알아볼거야. 오늘도 수고했어!

참고한 웹사이트 목록입니다. 감사합니다.

[1] https://jhnyang.tistory.com/24

[2] https://www.w3schools.in/operating-system-tutorial/interprocess-communication-ipc/