PR CENTER

뉴스룸     |     료실

mobile background

PR CENTER

IPC

관리자
2025-02-17
조회수 195

□ IPC란

     - 운영체제에서 실행되고 있는 프로세스 간에 정보를 주고받는 메커니즘을 말함.

     - 원칙적으로 프로세스는 각각 독립적으로 운영되는 구조이기 때문에 별도의 설비 없이는 서로 통신이 어려움. 

        이를 해결하기 위해 커널 영역에서 IPC라는 기술을 지원.


□ IPC가 필요한 이유

     1. 정보 공유

         다양한 프로세스가 협력하여 작업을 수행할 때, 데이터를 교환해야 하는 경우가 많음.

         도커에서 제공하는 Portainer라는 서비스가 있습니다. 기본적으로 도커를 운영할 땐 CLI환경에서 명령어를 통해 컨트롤하게 되는데

         Portainer를 사용하게 되면 웹 서비스 연동을 통해 별도의 UI를 통해서 통일하게 컨트롤이 가능하기 때문에 훨씬 쉽고 직관적으로 

        관리가 가능함. Portainer도 소켓통신을 기반으로 한 웹 어플리케이션이기 때문에 예시로 채용

     2. 모듈성

         시스템 기능을 프로세스 또는 스레드 단위로 나눌수 있고 이를 통해 확장성과 유지보수에 유리

     3. 병렬처리

         특정 작업을 여러 프로세스에 나누어 병렬로 처리가 가능하기 때문에 부하분산의 효과


□ 메모리 공유방식

     - 프로세스가 시스템콜을 통해 커널에 공유 메모리를 요청해서 공유 메모리가 생성되면 모든 프로세스가 접근가능

     - 공유메모리를 생성할 때만 시스템 콜이 발생하고 그 이후에 발생한 접근은 커널이 직접 개입하는 것은 아니기 때문에 

        특정 에이전트 프로그램을 연동할 필요 없이 직접 바로 접근하는 방식으로 동작

     - 모든 모델중 속도가 가장 빠르다는 장점이 있지만 여러 프로세스들이 하나의 공유메모리에 동시에 작업을 수행하는 

        과정에서 데이터 일관성이 깨지는 동기화 문제가 발생할 수 있다.


□ 메세지 전달방식

1. 다이렉트 방식

  • 보내는 쪽과 받는 쪽 서로에 대한 식별정보를 알고 있어야 하고 이는 곧 1대1 통신을 의미
  • 소켓통신이 여기에 해당

2. 간접적 방식

  • 메시지 큐, 메일박스, 버퍼 등과 같은 중간 매개체를 두고 데이터를 교환하는 방식
  • 다이렉트 방식과 다르게 서로에 대한 식별정보가 없는 불특정 프로세스와의 통신도 가능
  • 동작원리는 보내는 쪽에서 버퍼에 데이터를 저장해놓고 바로 다음 작업을 수행할 수 있고 받는 쪽에서는 원하는 시점에 버퍼에서 데이터를 뽑아가는 방식


□ 메세지 큐 방식

msgsnd(), msgrcv() 이 2개의 함수를 통해 데이터를 주고받게 되는데 이 함수는 시스템콜 명령이고 시스템콜은 커널에서 관리하는 것이기 때문에 그만큼 커널에 대한 의존도가 높다는 것을 의미

결과적으로 메세지 큐를 통해 데이터를 주고받을 때마다 커널이 개입하기 때문에 성능이 떨어진다는 단점이 있지만 동기화 문제는 발생하지 않음


□ 파이프 방식

1. 익명 파이프

  • 별도의 파이프를 추가해서 양방향 통신 구현도 가능하지만 이러한 방식은 비효율적이므로 잘 사용되지 않음
  • fork()를 통해 구성한 부모 - 자식 프로세스 사이에서만 생성가능
  • 같은 PPID를 가지는 통신 대상이 명확한 프로세스 간에서만 통신

2. 네임드 파이프

  • 양방향 통신도 설정을 통해 사용가능
  • 같은 시스템에서 실행되는 서로 관련 없는 프로세스 간에도 통신이 가능
  • 파일 시스템에 존재하는 형태이기 때문에 명시적으로 삭제하지 않는 한 영구적으로 지속


□ 뮤텍스 방식

  • 공유된 공간에 하나의 프로세스만 접근을 허용하고 나머지는 모두 차단하는 방식 (동기화 대상이 하나)
  • Key 값을 기반으로 한 상호배제 기법으로 동작하며 Key에 해당하는 특정 객체(Object)가 있으며, 이 객체를 소유한 프로세스만이 접근가능


□ 세마포어 방식

  • 뮤텍스 방식과 다르게 여러 프로세스가 동시에 접근가능한 최대 허용치가 존재
  • 다만 접근을 허용하거나 차단하는 기준이 공간자체가 아닌 그 안에 존재하는 데이터를 기준으로 동작
  • 만약 원하는 데이터를 다른 프로세스가 사용중이라면 대기했다가 release되는 시점에서 사용하는 원리

*차이점

  • 뮤텍스는 하나의 프로세스가 공유공간을 독점하는 방식이고 이에 따라 공유데이터를 소유할 수 있는 권한이 있다.
  • 세마포어는 공유공간에 여러 프로세스가 접근가능 하지만 그 안에 존재하는 각 데이터의 상태에 따라 실시간으로 허용과 차단을 업데이트하며 소유할 수 있는 권한이 없다.


□ 소켓통신 방식

  • 기본적으로 네트워크 단에서 동작하기 때문에 TCP와 UDP를 지원
  • 로컬 환경에 존재하는 프로세스뿐만 아니라 물리적으로 떨어져있는 경우, 원격으로 통신이 가능
  • 소켓은 각 통신 대상지점의 엔드포인트와 같은 개념이며 소켓당 별도의 IP 주소와 포트번호를 가짐


                                                                                                                                                                                                 ⭐ 발표자 : 김동현님

0 0

페이지 바로가기

@2024 K2SYSTEMS. All rights reserved.

HOME       |       ABOUT US       |       SOLUTION       |       PR CENTER       |       CONTACT       |       인재채용       |       kakao i cloud 고객센터  

@2024 K2SYSTEMS. All rights reserved.