Posts Operation System 2 process 4
Post
Cancel

Operation System 2 process 4

Operation System 2(프로세스 4)


💿 IPC(Inter Process Communication)

프로세스는 독립적으로 실행된다. 즉 독립되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다.

이런 독립적인 구조를 가진 프로세스 간의 통신을 해결해 주는 것이 IPC 통신이다.

프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다.

종류

  • 익명 PIPE
    • 2개의 프로세스를 연결하는데 하나의 프로세스는 쓰기만 하고 다른 하나는 읽기만 할 수 있다.
    • 한쪽 방향으로만 통신이 가능한 반이중 통신(양쪽으로 할려면 2개를 만들자)
    • 간단하다는 장점이 있고 단순한 데이터 흐름을 가질 땐 파이프를 사용하는 것이 효율적
    • 단점으로는 전이중 통신을 위해 2개를 만들면 구현이 복잡해 진다.
  • Named PIPE
    • 익명 파이프는 통신할 프로세스를 명확히 알 수 있는 경우에 사용한다.(부모-자식처럼)
    • 전혀 모르는 상태의 프로세스 사이의 통신에 사용
    • 부모 자식 간이 아니라 전혀 무관한 프로세스도 통신 가능
    • 역시 양방향 통신은 구현이 복잡하다는 문제를 가짐
  • Message Queue
    • 입출력 방식은 Named 파이프와 동일
    • 다른점은 메시지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간
    • 사용할 데이터를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
      • 이는 MSA에서 자주 사용(RabbitMQ, Kafka)
  • 공유 메모리
    • 데이터 자체를 공유하도록 지원하는 설비
    • 스레드처럼 메모리를 공유하도록 지원(커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해주고 이후 모든 프로세스는 해당 메모리 영역에 접근 가능)
    • IPC 중에 가장 빠르게 작동
  • 메모리 맵
    • 공유 메모리 처럼 메모리를 공유
    • 열린 파일을 메모리에 맵핑시켜서 공유(즉 공유 매개체(파일, 메모리)가 필요)
    • 주로 대용량 데이터를 공유해야 할 때 사용
  • 소켓
    • 네트워크 소켓 통신을 통해 데이터를 공유
    • 클라이언트와 서버가 소켓을 통해서 통신하는 구조, 원격에서 프로세스간 데이터를 공유할때 사용

이러한 IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용한다. (공유된 자원에 한번에 하나의 프로세스만 접근시킬 때)

This post is licensed under CC BY 4.0 by the author.