본문 바로가기
OS

CS OS IPC(Inter Process Communication)

by 차가운개발 2024. 10. 22.

 

IPC는 서로 다른 프로세스들이 데이터를 주고 받으며 상호작용할 수 있게 하는 메커니즘을 의미한다. 운영 체제에서 각 프로세스는 독립적인 메모리 공간을 가지므로, 프로세스 간 데이터를 직접 공유할 수 없기 때문에 IPC를 사용해 데이터를 교환하고 협력 작업을 수행한다.

 

메세지 전달 방식

공유메모리 방식

 

ㅇ 필요성

  • 프로세스 간 데이터 교환
    여러 프로세스가 같은 데이터를 공유하고, 이를 통해 작업을 수행해야 할 때 필요하다.
  • 동기화
    프로세스 간의 작업 순서를 조정하고 자원 접근을 제어하기 위해 IPC가 사용된다.
  • 자원 공유
    파일, 메모리, 장치 같은 시스템 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 한다.

 

ㅇ IPC 기법

  • 익명 PIPE
    파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능한 반 이중 통신(혹은 단방향 통신)이라고 부른다. 
    양쪽 송/수신이 하고 싶다면 파이프를 2개 만들어야 한다.
    매우 간단하게 사용할 수 있는 장점이 있고, 단순한 데이터 흐름을 가질 땐 파이프를 사용하는 것이 효율적이다. 
    전이중 통신을 위해 2개의 파이프를 생성할 때는 구현이 복잡해진다.
  • Named PIPE(FIFO)
    익명 파이프는 통신할 프로세스를 명확히 알 수 있는 경우에 사용한다.(부모 - 자식 프로세스)
    Named PIPE는 전혀 모르는 상태의 프로세스들 사이 통신에 사용한다.
    익명 파이프의 확장된 상태 서로 관련없는 무관한 프로세스도 통신이 가능

  • Message Queue(FIFO)
    다른점은 메세지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간이다.(운영체제에서 메세지를 저장하고 관리)
    사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
    비동기 통신이 가능하여 프로세스가 서로 독립적으로 실행될 수 있으며 메세지가 도착할 때까지 기다릴 필요가 없다.

  • 공유 메모리
    프로세스의 메모리 영역은 독립적이지만 다른 프로세스가 데이터를 사용하도록 해야하는 상황도 필요하다. 통신을 통한 데이터 전달도 가능하지만 공유 메모리는 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용해준다.
    프로세스가 공유 메모리 할당을 커널에 요청하면, 커널이 해당 프로세스에 메모리 공간을 할당해주고 이후 모든 프로세스가 해당 메모리 영역에 접근할 수 있게 된다.
    ** 중개자가 없이 곧바로 메모리에 접근할 수 있어서 IPC중에서 가장 빠르게 작동한다.
    여러 프로세스가 동시에 접근할 수 있기 때문에 동기화 메커니즘을 사용해 데이터 무결성을 유지해야 한다.

  • 메모리 맵 파일
    파일의 내용을 메모리에 매핑하여 파일을 읽고 쓰는 것처럼 메모리에 접근하는 방식이다.

  • 소켓
    네트워크를 통해 데이터를 주고받을 수 있게 해주는 IPC 방식으로 프로세스가 동일한 시스템에 있지 않아도 통신할 수 있다. 주로 클라이언트 - 서버 모델에 사용되며, 인터넷이나 로컬 네트워크를 통해 프로세스 간에 통신한다.

 

'OS' 카테고리의 다른 글

CS OS 세마포어와 뮤텍스  (0) 2024.10.22
CS OS Dead Lock(교착상태)  (0) 2024.10.22
CS OS PCB & Context Switching  (2) 2024.10.22
CS OS 인터럽트  (0) 2024.10.22
[OS] 프로세스 & 스레드  (0) 2024.10.22