티스토리 뷰

process는 각자 자신만의 독립적인 주소공간을 가져,

다른 process가 이 주소공간을 참조하는 것을 허용하지 않는다.

그렇기 때문에 다른 process와 데이터를 주고받을 수 없다.

 

이를 해결하기 위해 운영체제는 IPC 기법을 통해 process들 간에 통신을 가능하게 해준다.

 


IPC(Inter-Process Communication)

process간 통신(IPC)에는 기본적으로 공유메모리(shared memory)와 메시지 전달(message passing)의 두 가지 모델이 있다.

 

공유메모리(shared memory)

  • process들이 주소 공간의 일부를 공유한다.
  • 공유한 메모리 영역에 읽기/쓰기를 통해서 통신을 수행한다.
  • process가 공유 메모리 할당을 kernel에 요청하면 kernel은 해당 process에 메모리 공간을 할당해준다.

 

장점

  • 커널의 관여 없이 데이터를 통신할 수 있기 때문에 IPC 속도가 빠르다는 장점이 있다.

 

단점

  • process 간의 통신을 수월하게 만들지만 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있다.

 

메시지 전달(message passing)

  • system call을 사용하여 구현된다.
  • kernel을 통해 send(message)와 receive(message)라는 두 가지 연산을 제공받는다.
    • 예를 들면, process1이 kernel로 message를 보내면 kernel이 process2에게 message를 보내주는 방식을 동작한다.

장점

  • 메모리 공유보다는 속도가 느리지만, 충돌을 회피할 필요가 없기 때문에 적은 양의 데이터를 교환하는데 유용하다. 또 구현하기 쉽다는 장점이 있다.

 

대표적인 예시로는 pipe, socket, message queue 등이 있다.

 


# 요약

원칙적으로 process는 독립적인 주소 공간을 갖기 때문에, 다른 process의 주소 공간을 참조할 수 없다. 하지만 경우에 따라 운영체제는 process 간의 자원 접근을 위한 매커니즘인 프로세스 간 통신(IPC, Inter Process Communication)을 제공한다. 프로세스 간 통신 방법으로는 파이프, 파일, 소켓, 공유메모리 등을 이용한 방법이 있다.