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

프로세스 간 통신(IPC, Inter-Process Communication)

by 비트코기 2021. 12. 30.

I. 메모리공유 및 메시지 전달을 이용한 협력, IPC의 개념

- 프로세스들 사이에 서로 데이터를 주고 받는 행위 또는 그에 대한 방법이나 경로

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

- 주요 IPC 방식

방식 운영 체제 및 기타 환경이 제
파일 - 대부분의 운영 체제
신호 - 대부분의 운영 체제,
- 윈도우와 같은 일부 시스템은 C 런타임 라이브러리에서만 신호 제공
소켓 - 대부분의 운영 체제
메시지큐 - 대부분의 운영 체제
파이프 - 모든 POSIX 시스템, 윈도우
지평 파이프 - 모든 POSIX 시스템, 윈도우
세마포어 - 모든 POSIX 시스템, 윈도우
공유 메모리 - 모든 POSIX 시스템, 윈도우
메시지 전달 (비공유) - MPI 패러다임
- 자바 RMI
- CORBA
- MSMQ
- 메일슬롯
메모리 맵 파일 - 모든 POSIX 시스템, 윈도우

- POSIX는 이식 가능 운영 체제 인터페이스 (Portable Operating System Interface)


II. IPC의 통신모델

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

III. IPC의 주요 구현기법

가. 메시지 큐

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

나. 공유메모리

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

다. 세마포어

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

 

 

 

반응형

댓글