새소식

Computer Science/Operating System

프로세스 간 통신(IPC)

  • -
반응형
SMALL

프로세스 간 통신(IPC, Inter-Process Communication)

 

개념

IPC는 프로세스들 간에 의사소통하는 것을 말한다. 프로세스가 통신 가능하다는 것은 서로 다른 프로세스가 데이터를 주고받을 수 있다는 것이며, 동시에 접근 가능한 메모리 즉, 프로세스들이 공유하는 메모리가 필요하다는 뜻이다.

따라서 컴퓨터 내부에서 보다 효율적으로 정보를 주고받기 위한 통신의 일종이라고 생각하면 되고, 인터넷 통신을 IPC의 확장으로 이해할 수 있다. (프로세스 간 통신이 서버-클라이언트 간 통신과 유시 하기 때문이다.)

종류

1. 공유 메모리(Shared Memory)

  • 공유 메모리가 데이터 자체를 공유하도록 지원하는 설비, 프로세스 간 메모리 영역을 공유해서 사용할 수 있도록 허용한다.
  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스 메모리에 할당한다. 이후 어떠 프로세스 건 해당 메모리 영역에 접근할 수 있다.
    • 공유 메모리가 각 프로세스에게 첨부(attach)하는 방식으로 작동된다.
  • 프로세스 간 Read, Write를 모두 필요로 할 때 사용된다.
  • 대량의 정보를 다수 프로세스에게 배포 가능하다.
  • 중개자 없이 곧바로 메모리에 접근할 수 있기 때문에 모든 IPC에서 가장 빠르게 작동할 수 있다.

2. 파이프(PIPE)

  • 단방향 통신, 부모 프로세스에서 자식 프로세스에게 일방적으로 통신하는 기법이다.
  • fork()를 통해 자식 프로세스를 만들고 나서 부모의 데이터를 자식에게 보낸다.

파이프는 두 가지로 나뉜다.

  • 익명 파이프(Anonymous PIPE) : 일반적으로 파이프라고 하면 익명 파이프를 가리킨다.
  • 부모와 자식 프로세스 혹은 같은 부모를 가진 자식 프로세스와 같이 서로 관련 있는 프로세스 간 통신에 사용된다.
  • 네임드 파이프(Named PIPE) : 특수 파일을 이용하며, 서로 관련 없는 프로세스 간 통신에 사용된다.

3. 소켓(Socket)

  • 같은 도메인 내에서 연결될 수 있고 프로세스들 사이의 통신을 가능하게 한다.
  • 범용적인 IPC로 양방향 통신이 가능하며 패킷 단위로 주고받음으로 직관적으로 이해하기 쉬운 코드를 만들 수 있다.

4. 메시지 큐(Message Queue)

  • 입출력 방식으로는 익명 PIPE와 동일하지만, 커널에서 관리하며 메모리를 사용한 PIPE이다. 구조체 기반으로 통신을 한다.
  • FIFO 구조이며, msgtype에 따라 다른 구조체를 가져올 수 있다.
  • 프로세스 간 다양한 통신을 할 때 사용할 수 있다.

5. 메모리 맵(Memory Map)

  • 공유 메모리처럼 메모리를 공유해준다.
  • 열린 파일을 메모리에 매핑시켜서 공유하는 방식이다. (공유 매개체가 파일+메모리)
  • 주로 파일로 대용량 데이터를 공유할 때 사용한다.
  • 메모리 맵 파일은 크기를 바꿀 수 없으며 사용하기 이전, 이후에만 크기를 바꿀 수 있다.

정리

IPC 종류 PIPE Named PIPE Message Queue Shared Memory Memory Map Socket
사용시기 부모 자식 간 단방향 통신 시 다른 프로세스와 단방향 통신 시 다른 프로세스와 단방향 통신 시 다른 프로세스와 양방향 통신 시 다른 프로세스와 양방향 통신 시 다른 시스템간 양방향 통신 시
공유 매개체 파일 파일 메모리 메모리 파일+메모리 소켓
통신 단위 Stream Stream 구조체 구조체 페이지 Stream
통신 방향 단방향 단방향 단방향 양방향 양방향 양방향
통신 가능 범위 동일 시스템 동일 시스템 동일 시스템 동일 시스템 동일 시스템 동일 + 외부시스템

 


참고사이트
  1. https://dar0m.tistory.com/233
  2. https://jwprogramming.tistory.com/54
  3. https://gyoogle.dev/blog/computer-science/operating-system/IPC.html
  4. https://bluemoon-1st.tistory.com/22
반응형
LIST
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.