반응형
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 함수 | - 작업 종료 후 잠금 해제 |
반응형
'IT기술노트 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
뉴로모픽 칩(Neuromorphic Chip) (0) | 2022.07.04 |
---|---|
DAS, NAS, SAN (0) | 2022.06.29 |
파이프라인 해저드 유형 및 해결방안 (0) | 2022.06.05 |
HA (High Availability), 고가용성 (0) | 2022.01.27 |
우선순위 역전(Priority Inversion) (0) | 2021.10.20 |
데스크탑 가상화(VDI, Virtual Desktop Infrastructure) (0) | 2021.03.12 |
쿠버네티스(Kubernates) (0) | 2021.03.12 |
도커(Docker) (0) | 2021.03.12 |
댓글