IPC

이연희·2022년 4월 27일
0

OS

목록 보기
2/10

IPC (Inter-Process Communication)

프로세스 간 통신의 개념

  • 프로세스가 다른 프로세스와 데이터를 주고받는 프로세스 간 통신에는 같은 컴퓨터 내에 있는 프로세스뿐만 아니라 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신도 포함된다.

  • (a) 프로세스 내부 데이터 통신: 하나의 프로세스 내에 2개 이상의 쓰레드가 존재하는 경우의 통신이다. 프로세스 내부의 쓰레드는 전역 변수나 파일을 사용하여 통신한다.

  • (b) 프로세스 간 데이터 통신: 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우로, 공용 파일 또는 운영체제가 제공하는 파이프를 사용하여 통신한다.

  • (c) 네트워크를 이용한 데이터 통신: 여러 컴퓨터가 네트워크로 연결되어 있을 때도 통신이 가능한데, 이 경우 프로세스는 소켓을 이용하여 데이터를 주고받는다.

프로세스 간 통신의 분류

통신 방향

  1. 양방향 통신: 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조, 프로세스 간 통신에서 소켓 통신이 양방향 통신에 해당한다.
  2. 반양방향 통신: 데이터를 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능하다. 특정 시점에 한쪽 방향으로만 전송할 수 있는 구조이다. 무전기가 대표적인 반양방향 통신의 예이다.
  3. 단방향 통신: 모스 신호처럼 한쪽 방향으로만 전송할 수 있는 구조, 프로세스 간 통신에서는 전역변수와 파이프가 단방향 통신에 해당한다.

통신 구현 방식

  • 전역변수를 사용하는 통신 방식의 문제점은 언제 데이터를 보낼지 데이터를 받는 쪽에서는 모른다는 것이다. 상태 변화를 살펴보기 위해 반복문을 무한 실행하며 기다리는 것을 바쁜 대기(busy wating)이라고 한다. 바쁜 대기 문제를 해결하기 위해서는 데이터가 도착했음을 알려주는 동기화(synchronization)를 사용한다.
  1. 대기가 있는 통신(동기화 통신): 동기화를 지원하는 통신 방식이다. 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태에 머물러 있다. 파이프, 소켓을 예로 들 수 있다.

  2. 대기가 없는 통신(비동기화 통신): 동기화를 지원하지 않는 통신 방식이다. 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터가 도착했는지 여부를 직접 확인한다. 전역 변수, 파일을 예로 들 수 있다.

통신 종류

  • 프로세스 간에 데이터를 주고받는 것은 읽기와 쓰기연산으로 단순화 할 수 있다.

  • 부모-자식 관계로 연결되어 있는 프로세스끼리는 전역 변수, 파일, 이름 없는 파이프 등을 이용하여 통신한다.

    • 이름 없는 파이프: 서로 관련 있는 프로세스 간 통신에 사용한다.
  • 서로 독립적인 프로세스끼리는 이름 있는 파이프를 이용하여 통신한다.

    • 이름 있는 파이프: FIFO라 불리는 특수 파일을 이용하며 서로 관련 없는 프로세스 간 통신에 사용한다.
  • 또한 서로 다른 시스템에 있는 프로세스끼리는 소켓을 이용하여 통신한다.

profile
공부기록

0개의 댓글