Computer Science/Operating System

[OS] IPC (Inter Process Communication)

2023. 5. 28. 04:06
목차
  1. IPC (Inter Process Communication)

IPC (Inter Process Communication)

프로세스는 독립적으로 실행되는 단위이므로 기본적으로 다른 프로세스와의 통신이 어렵다. 이를 해결하기 위해 운영체제의 커널 영역에서 IPC 기능을 제공한다.

IPC 종류

1. PIPE(Anonymous PIPE)

  • 파이프는 두 개의 프로세스를 연결
  • 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 데이터를 읽기만 할 수 있다.
  • 한쪽 방향으로만 통신이 가능하기 때문에 단방향 통신 또는 Half-Duplex(반이중) 통신이라고 부른다.
  • 파이프는 하나의 통신 선로로 읽기 또는 쓰기 중 하나만 가능하므로, 송수신을 동시에 수행해야 하는 경우 두 개의 파이프를 사용해야 한다.
  • 같은 부모 프로세스를 가지는 프로세스들 사이에서만 통신이 가능하다.
  • 읽기/쓰기 중 하나만 하면 되는 단순한 데이터 흐름을 가졌을 때 간단하게 사용할 수 있으나, 읽기와 쓰기를 모두 해야하는 경우에는 복잡해질 수 있다.

2. Named PIPE

  • Named Pipe는 부모 프로세스와 관계없이 다른 프로세스 간에 통신이 가능하다.
  • 파일 시스템에 특정 이름을 부여하여 다른 프로세스가 해당 이름을 통해 파이프에 접근할 수 있다.
  • Named PIPE도 PIPE와 같이 읽기/쓰기가 동시에 가능하지 않다. 하지만 통신선로가 파일로 존재하므로 하나를 읽기 전용으로 열고 다른 하나를 쓰기 전용으로 열어서 전이중 통신을 구현할 수 있다. 결국 PIPE와 같이 두 개의 FIFO 파일이 필요하다.

3. Message Queue

  • 선입선출 자료구조인 Queue를 이용하는 방식
  • 커널에서 관리되는 메모리 공간을 통해 프로세스 간 통신한다.
    • 송신 프로세스는 자신의 주소 공간에서 메시지 큐의 주소 공간으로 메시지를 복사하고, 메시지 큐는 자신의 주소 공간에 복사된 메시지를 수신 프로세스의 주소 공간으로 복사한다.

  • 메시지 큐는 클라이언트와 동기 방식으로 많은 데이터 통신을 수행하면 병목 현상이 발생할 수 있으므로, 서버의 성능 저하를 방지하기 해 메시지 처리를 위임하여 순차적으로 처리하는 방식을 사용한다. 대용량 데이터 처리, 채팅 서비스 등에 사용된다.
  • 다양한 프로세스가 동시에 데이터를 다룰 수 있다는 장점이 있다.

4. Shared Memory (공유 메모리)

  • 공유 메모리는 프로세스 간에 메모리 영역을 공유하여 사용할 수 있도록 하는 것이다.
  • 프로세스가 커널에 공유 메모리 할당을 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당해 준다.
  • 이후 어떤 프로세스든 해당 메모리 영역에 접근할 수 있다.
  • 중개자(메시지 큐의 큐) 없이 바로 메모리에 접근할 수 있기 때문에 모든 IPC 중에서 가장 빠르게 작동한다.

5. Memory Map

  • 공유 메모리와 마찬가지로 메모리를 공유한다.
  • 차이점은 Memory Map의 경우 파일을 메모리에 맵핑하여 메모리 영역에 연결한다는 것이다.
  • 프로세스가 파일을 읽거나 쓰기 위해서는 저장매체에서 메모리로 데이터를 이동해야 하는데, 이때 메모리 맵을 사용하면 파일을 메모리에 직접 맵핑함으로써 이동 과정을 줄이고, 파일을 메모리처럼 다룰 수 있다.
  • 이를 통해 대용량 파일을 읽을 때 파일 전체를 메모리에 맵핑하여 읽기 작업을 진행할 수 있다. 이는 파일을 조각조각 나누어 읽는 방식보다 훨씬 효율적이다.
  • 또한, 여러 프로세스가 동일한 파일을 메모리 맵으로 연결하여 데이터를 공유할 수 있다.

6. Socket

  • 프로세스 간의 네트워크 통신을 위해 사용되는 방식이다.
  • 소켓을 생성하고 이름을 지정하여 사용한다.
  • 서버-클라이언트 모델에서 연결, 통신, 종료 등의 작업을 수행하여 데이터를 교환한다.
저작자표시 (새창열림)

'Computer Science > Operating System' 카테고리의 다른 글

[OS] 데드락 (Deadlock)  (0) 2023.06.03
[OS] CPU 스케줄러  (0) 2023.06.02
[OS] PCB (Process Control Block) & Context Switching  (0) 2023.05.28
[OS] 시스템 콜 (System Call)  (0) 2023.05.27
[OS] 인터럽트(Interrupt)  (0) 2023.05.22
  1. IPC (Inter Process Communication)
'Computer Science/Operating System' 카테고리의 다른 글
  • [OS] 데드락 (Deadlock)
  • [OS] CPU 스케줄러
  • [OS] PCB (Process Control Block) & Context Switching
  • [OS] 시스템 콜 (System Call)
dbssk
dbssk
K.Back-enddbssk 님의 블로그입니다.
dbssk
K.Back-end
dbssk
  • 분류 전체보기 (220)
    • 끄적 (0)
    • TIL (8)
      • Trouble Shooting (1)
    • Programmers (94)
      • Lv.0 (29)
      • Lv.1 (40)
      • Lv.2 (25)
    • 백준 (15)
    • 구름 (0)
    • Computer Science (79)
      • 컴퓨터 구조 (3)
      • Operating System (18)
      • 알고리즘 (9)
      • 자료구조 (11)
      • Database (10)
      • Network (8)
      • Web (12)
      • Design Pattern (8)
    • Spring (2)
    • Languages (13)
      • Java (13)
    • 북 스터디 (9)
      • 스프링 부트 핵심 가이드 (9)
      • 자바 코딩 인터뷰 완벽 가이드 (0)
    • 프론트엔드 (0)

인기 글

최근 글

태그

  • 해시
  • spring
  • LV.1
  • 프로그래머스
  • 개발자취준
  • 백엔드공부
  • 개발자이력서
  • hash
  • 백엔드스쿨
  • 스택
  • java
  • 백준
  • 배열
  • 개발자포트폴리오
  • 개발자취업
  • Lv.0
  • LV.2
  • 자료구조
  • stack
  • 코딩테스트
hELLO · Designed By 정상우.
dbssk
[OS] IPC (Inter Process Communication)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.