CS/OS

[OS]프로세스 간 통신(Interprocess Communication)

장그래 2021. 4. 30. 14:04
반응형

프로세스는 독립적(independet)이거나 협력적(cooperating)일 수도 있다.
프로세스가 협력적인 이유는 아래와 같다.

  • 정보 공유(Information sharing)
  • 계산 가속화(Computation speedup)
  • 모듈성(Modularity)
  • 편의성(Convenience)
    Cooperating processes는 데이터나 정보를 교환하기 위해 IPC 기법이 필요하다.
    IPC 기법 (크게 두 가지 있다(
  • Shared memory
  • Message passing

Shared memory (공유 메모리)

  • 통신을 하고자하는 두 프로세스가 일정한 메모리 영역을 공유함으로서 데이터를 주고 받는 기법
  • ex) A가 공유 메모리에 데이터를 쓰고, B가 공유 메모리에 있는 데이터를 읽는다면 데이터 공유가 가능함
  • 별도의 송신, 수신 함수가 필요 없다. (자신의 메모리라고 인지하고 있기 때문이다)
  • 운영체제가 아닌 사용자 프로세스 통제하에 이뤄지는 통신 기법이라서, 송신 시기와 수신 시기가 순차적이라는 보장이 없다.
  • 그래서 두 프로세스의 동작을 동기화 하는 작업이 꼭 필요하다.

Message passing

  • 프로세스들이 메모리를 공유하지 않고 데이터를 주고 받을 수 있다.
  • 송신(send) : 메세지 큐에 데이터를 넣음
  • 수신(receive) : 메세지 큐에 담겨 있는 데이터를 꺼내감
  • 메모리를 공유하는 것이 아닌, 공유하는 공간이 커널 안의 메세지 큐 형태임
반응형