프로세스 간 통신

꿀떡냠·2024년 5월 31일

IPC(IPC : Inter Process Communication)

프로세스 간 통신(IPC)이란?
프로세스 간 데이터를 주고받는 통신 방법을 말한다.

프로세스 간 통신의 종류


1) 공유 메모리나 공유 파일을 이용한 통신

  • 일정한 메모리 영역이나 파일을 공유하고 이를 이용하여 데이터를 주고 받는다.
  • 데이터를 주고 받는 방법을 프로세스끼리 알아서 결정해야 한다.
  • 가장 원시적인 방법

2) 파이프를 이용한 통신

  • 프로세스 간 통신을 위하여 운영체제가 제공하는 통신 기법이다.
  • 하나의 컴퓨터 내의 프로세스 간 통신에 많이 이용되는 수단이다.
  • 보통 부모-자식 프로세스간의 통신에 사용된다.(fork())

3) 소켓을 이용한 통신

  • 컴퓨터와 컴퓨터가 네트워크로 연결된 경우 사용된다.
  • 같은 컴퓨터 내의 프로세스끼리 소켓으로 통신하게 할 수 있지만, 파이프와 비교했을 때 초기화할 내용도 많고 시스템 자원도 많이 사용하기 때문에 같은 컴퓨터내의 통신으로 소켓을 사용하는 것은 비효율적이다.

프로세스간 통신시 고려해야할 사항

  • 상대 프로세스를 어떻게 찾을지?
  • 데이터의 크기는 얼마로 할지?
  • 데이터 도착 여부를 어떻게 확인할지?

프로세스 간 통신의 분류

1) 통신 방향에 따른 분류 - 양방향 통신, 단양방향 통신, 단방향 통신
2) 통신 구현 방식에 따른 분류 - 동기화 통신, 비동기화 통신

통신 방향에 따른 분류

  • 양방향 통신
    • 데이터를 양쪽 방향으로 동시에 전송할 수 있는 구조
    • 예시 : 소켓을 이용한 통신
  • 반양방향 통신
    • 데이터를 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능한 구조
    • 특정 시점에 한쪽 방향으로만 전송할 수 있는 구조
    • 예시 : 무전기
  • 단방향 통신
    • 한쪽 방향으로만 데이터를 전송할 수 있는 구조
    • 예시 : 공유 메모리 및 공유 파일을 이용한 통신, 파이프를 이용한 통신

프로세스 간 통신의 종류

  • 대기가 있는 통신
    • 동기화 통신 : 파이프 이용 통신, 소켓 이용 통신
    • 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태
  • 대기가 없는 통신
    - 비동기화 통신 : 공유 메모리나 공유 파일 이용 통신
    - 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터 도착 여부를 직접 확인

    바쁜 대기(busy waiting)

    • 데이터를 받는 쪽에서 데이터 도착 여부를 반복적으로 점검하는 것을 말한다.
profile
백엔드 개발자로 살아남기

0개의 댓글