(1) IPC의 정의
: IPC는 InterProcess Communication의 준말로 '프로세스간 통신'을 말한다.


(2) IPC의 배경과 원리

○ IPC의 배경
: OS의 커널은 일반적으로 임의의 프로세스가 다른 프로세스의 메모리 주소 공간에 접근할 수 없도록 되어있다.
 'OS의 보호 모드'
 에서는 프로세스마다 메모리가 독립적으로 할당되며, 프로세스끼리 메모리 접근을 할 수 없다.
  하지만 경우에 따라서는
프로세스간 데이터를 공유해야 하는 경우가 생긴다.

프로세스의 주소공간을 보호 하는 동시에, 프로세스 간 서로 데이터를 주고 받는 기법이 필요해지는데,
이러한 이유로 생기게 된 것이 IPC 기법이다.

○ 원리

: 커널은 프로세스 통신을 위해 다양한 IPC 매커니즘을 제공한다.
  프로세스는 IPC를 통하여 다른 프로세스에게 데이터를 송신하거나, 다른 프로세스로부터 데이터를 수신할 수 있다.

- IPC가 필요한 예
: LCD에 출력할 문자 메시지를 전달하거나, 센서로부터 읽은 값을 다른 프로세스한테 전달하거나, 디스플레이에 그릴 비트맵
  데이터를 전달하는 등등.

   
-
IPC 매커니즘의 종류 (POSIX : Portable Operating System Interface for UNIX)


(3) IPC의 장점

○ 다중 프로세스 환경에서 필요한 프로세스 동기화 문제 해결.
: 동시에 어떤 하나의 파일에 여러 사용자가 동시에 쓰기를 시도할 경우, 데이터는 뒤섞이게 되고 원치 않는 결과가 나올 수 있다.
  '크럽'된다 라고 표현하는데, 이러한 프로세스의 동기화 문제를 해결하는데 IPC가 유용하게 사용.

○ 프로세스 사이의 데이터 교환에 있어서, 소규모에서 대규모까지 효율적 처리가 가능.
: 'FIFO'(First in First out)를 이용해 프로세스간 통신을 할 수 있지만, 그 용량에 한계가 있다. 비교적 작은 데이터일 경우에는
  손쉬운 '메시지 큐'를 사용할 수 있고, 수 메가에 이르는 큰 데이터의 경우에는 '공유메모리'를 사용하여 효율적인 처리가 가능.

○ IPC 함수들의 일관적인 인터페이스 와 손쉬운 사용방법.
: 각 함수마다 강력한 기능을 가지고 있고, 아주 유사하게 동작하기 때문에, 하나만 익히게 되면 다른 것 또한 활용하는데
  어려움이
 적다.

○ 프로그램상의 코드 간략화
: IPC 함수를 이용함으로써 함수의 개수도 적어지고, 소스코드 또한 간결하게 만들 수 있다.

 

by 민트앤라떼 2012. 3. 28. 16:54