본문 바로가기
OS(운영체제)

프로세스 통신 (Interprocess Communication, IPC)

by 걸어가는 신사 2021. 12. 9.

1. 프로세스 통신

프로세스들 사이에 서로 데이터를 주고받는 기법

(1) 프로세스 통신의 필요성

  • 프로세스들은 각각은 독립적인 메모리 공간을 가지고 있다.
    • 프로세스가 다른 프로세스의 메모리에 직접 접근한다면 문제가 발생한다.
  • 하지만 프로세스들 간에 병렬적으로 처리할 때 프로세스들 간에 통신이 필요한다.
    • 여러 가지 IPC를 이용해서 프로세스들 간에 통신이 이루어진다.

(2) IPC의 종류

  • 파이프 방식
  • 세마포어
  • 공유 메모리
  • 메시지 패싱
  • 소켓

 

2. 공유메모리 (Shared-Memory)

메모리의 일정 부분을 공유해서 여러 프로세스들이 접근할 수 있게 하는 방법

 

 

  • process A, process B는 각자 고유한 메모리 공간을 가진다.
  • 특정 메모리 공간에 OS가 공유 메모리 공간으로 할당한다.

 

 

 

 

 

 

 

 

 

 

  • 처음 생성할 때만 시스템 호출을 사용하기 때문에 속도가 빠르다.
    • 공유메모리의 접근은 커널이 필요 없다.
  • 속도가 빠르기 때문에 많은 양의 데이터를 전달하는 경우에 많이 사용된다.
  • 공유 메모리 공간에 대한 접근 제어가 필요한다.
    • 동기화(synchronize)를 관리해야 하다.

 

3. 메시지 전달 (message passing)

프로세스가 메시지를 커널을 통해서 다른 프로세스에게 전달한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 동기화(synchronize)를 신경 쓸 필요 없다.
  • 그러나 성능이 shared memory보다 떨어진다.

 

4. 파이프 (PIPE)

통신을 위한 메모리 공간(버퍼)을 생성하여 프로세스 간 데이터의 통신을 하게 한다.
  • PIPE는 읽기/쓰기가 동시에 가능하지 않다. (단방향 통신)
  • 통신선로가 파일로 존재하므로 하나를 읽기 전용을 열고 다른 하나를 쓰기 전용으로 열어주어야 한다.
  • 통신을 위해서는 두 개의 FIFO 파일이 필요하다.

(1) 익명 파이프(Anonymous Pipe)

  • 부모 프로세스와 자식 프로세스 사이에서만 통신이 가능하다.

(2) 지명 파이프(Named Pipe)

  • 부모 프로세스와 무관하게 전혀 다른 모든 프로세스들 사이에서 통신이 가능하다.
반응형

댓글