본문 바로가기
IT기술노트/컴퓨터구조 및 운영체제

IPC, Inter-Process Communication

by 비트코기 2023. 10. 12.

IPC, Inter-Process Communication


I. 협력적인 프로세스 간 통신 , IPC의 개요

- 협력적인 프로세스 간 통신을 위한 메모리 공유 및 메시지 전달 방식을 활용한 통신 메커니즘

- IPC 용도: 정보공유, 계속 가속화, 모듈성, 편의성 확보


II. IPC의 통신모델

구분 Message Passing Model Shared Memory Model
개념 - 프로세스 간 메시지 교환 - 공유 메모리 이용 정보 교환
개념도
통신기능제공 - 운영체제 - 응용 프로그래머
충돌 - 발생 불가능 - 발생 가능
구현 난이도 - 낮음 - 높음
속도/용량 - 저속/소량 - 고속/대량
커널 간섭 - 메시지 전달 시 마다 시스템 호출로 오버헤드 발생
- 커널 의존도 높음
- 공유메모리 구축 시만 시스템 호출
- 커널 의존도 낮음
주요기법 - PIPE, FIFO, 메시지큐, 소켓, 세마포어 - Shared Memory

- 유닉스 초기 IPC 구현 3가지 기법으로 Message Queue, Shared Memory, Samaphore 사용


III. IPC 구현 주요기법

가. Message Queue

구분 설명
정의 - OS의 제어를 통해 커널 내 메시지 큐를 이용하여 프로세스간 메시지를 전달하는 단방향 통신 기법
특징 높으 커널 의존성 - 메시지 전달 시마다 운영체제 System call 필요
메시지 단위 전송 - 프로세스 간 이산적 데이터를 메시지 형태로 전송
직접/간접 통신 - 송수신 프로세스를 직접 명시하는 직접 통신 방식과 메일박스를 이용해 간접적으로 통신하는 방식이 존재
개념도
주요요소 메시지 - 메시지 유형(정수값, id) + 바이트 집합 (데이터)
시스템 호출 함수 - msgget() : 메시지 큐 및 식별자 생성
- msgsnd(), msgrcv() : 메시지 전송, 수신
- msgctl() : 메시지 큐 제어
동작방식 1. Sender 메시지 전송 : 메시지 큐 마지막에 연결
2. Receiver 메시지 수신 : 사전 정의된 수신 정책 기준으로 메시지큐에서 수신

나. Shared Memory

구분 설명
정의 - 메모리의 일부 공간을 다수의 프로세스에서 공유하는 양방향 통신 기법
특징 커널 통한 공유 메모리 할당 - 프로레스가 공유 메모리 할당/제거를 커널에 요청하여 프로세스에 메모리 공간 할당 및 제거
빠른 속도 - 포인터를 이용한 메모리 공유로 복사 등 오버헤드 미 발생
동기화 문제 - 세마포어 등 프로세스 간 동기화 기법의 적용 필요
개념도
주요요소 공유메모리 - 공유메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치
- 다른 프로세스가 이 세그먼트를 자신의 주소 공간에 추가
시스템호출 함수 - shmget() : 공유메모리 및 식별자 생성
- shmat() : 공유메모리와프로세스 데이터 영역 연결
- shmdt() : 연결 해제
- shmctl() : 공유메모리 제거
동작방식 1. 공유메모리 생성 : 커널에 공유메모리 생성 요청
2. 메모리 공유 : 통신 프로세스 간 포인터 공유
3. 메모리 해제 : 커널에 공유메모리 해제 요청

다. Samaphore

구분 설명
정의 - 실행단위(프로세스 또는 쓰레드) 간의 동기화 기능을 제공하는 기법
특징 상호배제 - 임계영역에 대한 접근 순서 제어
커널모드 동기화 서로 다른 프로세스간 동기화 가능
개념도
 
주요요소 세마포어 종류 - Binary : 0/1flag를 통해 단일 자원 제어
- Counting : 0 이상 정수값 변수로 다수 자원 제어
시스템호출 함수 - semget() : 세마포어 및 식별자 생성
- semop() : 세마포어 연산
- semctl() : 세마포어 제어
동작방식 1. P함수 : 임계영역 진입 전 잠금 수행
2. V함수 : 작업 종료 후 잠금 해제

 

반응형

댓글