티스토리 뷰

IPC (Inter Process Communication)

프로세스는 각자 자신만의 독립적인 주소공간을 갖기 때문에, 다른 프로세스가 이 주소공간을 참조하는 것은 불가능하다. 그러므로 다른 프로세스와 데이터를 주고 받을 수 없다. 하지만, 운영체제는 IPC기법을 통해 프로세스들 간에 통신이 가능하게 해준다.


IPC는 크게 공유 메모리 방식메시지 전달방식으로 나뉘어진다.


공유 메모리 (shared memory)

공유 메모리 방식에서는 프로세스들이 주소 공간의 일부를 공유하는데, 이 공유한 메모리 영역에 read/write를 통해서 통신을 수행한다. 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해준다. 공유 메모리 영역이 구축된 이후에는 모든 접근이 일반적인 메모리 접근으로 취급되기 때문에 더 이상 커널의 도움없이도 각 프로세스들이 해당 메모리 영역에 접근할 수 있다.


공유 메모리 방식은 프로세스간의 통신을 수월하게 만들지만, 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있다. 커널은 이 부분에 대허 관여하지 않기 때문에 프로세스끼리 직접 공유 메모리 접근에 대한 동기화 문제를 책임져아 한다.



메시지 전달 (message passing)

메시지 전달 방법은 통산 system call을 사용하여 구현된다. 커널을 통해 send(message)와 receive(message)라는 두 가지 연산을 제공받는다. 예를 들어 프로세스1이 커널로 메시지를 보내면, 커널이 프로세스2에게 메시지를 보내주는 방식으로 동작한다.


메모리 공유보다는 속도가 느리지만, 충돌을 회피할 필요가 없기 때문에 적은양의 데이터를 교환하는 데 유용하며, 구현(대표적으로 pipe, socket, message queue 등)하기가 쉽다는 장점을 갖는다.



정리

Q. IPC란 무엇인가?

  • IPC는 크게 공유 메모리 모델과 메시지 전달 모델로 나뉘어진다.
  • 공유 메모리 모델은 주소 공간의 일부를 공유하며 공유한 메모리 영역에 read/write를 통해 통신한다. 예시로는 POSIX가 있다.
  • 메시지 전송 모델은 커널을 통해 send/receive 연산으로 데이터를 전송한다. 예시로는 pipe, socket, message queue 등이 있다.

Q. 공유 메모리와 메시지 전달 모델의 장단점은 무엇인가?

  • 공유 메모리 모델은 초기에 공유 메모리 할당을 제외하면 커널의 관여없이 통신할 수 있기 때문에 속도가 빠르다는 장점이 있다. 하지만 여러 프로세스가 동시에 메모리에 접근하는 문제가 발생할 수 있어서 별도의 동기화 과정이 필요하다는 단점이 있다.
  • 메시지 전달 모델은 커널을 통해서 데이터를 주고 받기 때문에 통신속도가 느리다는 단점이 있지만, 커널에서 제어를 해주기 때문에 안전하고 동기화를 제공해준다는 장점이 있다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함