1. 메세지 큐(Message Queue)
- 큐(Queue) 자료구조를 이용한 IPC 기법
- 기본적으로 FIFO 방식으로 데이터를 전송한다.
a) 그림으로 보는 메세지 큐 기법
- 간단하게, A라는 프로세스에서 데이터를 insert하면 B라는 프로세스에서 받아오는 방식으로 통신한다.
b) 메세지 큐 예제 코드
- 간단한 예시 코드를 통해 메세지 큐의 개념을 살펴보자.
- 프로세스 A에서 데이터를 삽입
msqid = msgget(key, msgflg) // key는 1234, msgflg는 옵션
msgsnd(msqid, &sbuf, buf_length, IPC_NOWAIT) // msgsnd = message send
- 프로세스 B에서 프로세스A가 삽입한 데이터를 반환받는다.
msqid = msgget(key, msgflg) // key는 동일하에 1234로 해야만 해당 큐의 msgid를 얻을 수 있다.
msgrcv(msqid, &rbuf, MSGSZ, 1, 0) // msgrcv = message receive
c) 파이프와 메세지 큐 기법의 차이
- message queue는 부모/자식 관계없이 어떤 프로세스라도 데이터 송수신이 가능하다.
- FIFO 정책으로 먼저 삽입된 데이터가 먼저 읽힌다.
- message queue는 양방향 통신이 가능하다.
- 프로세스 A, B 간의 양방향 통신을 위해서는 메세지 큐가 2개 필요하다.
- 메세지 큐가 하나라면, 프로세스 A가 보낸 데이터는 프로세스 B만이 읽을 수 있다.
- 파이프와 메세지 큐 모두 커널 영역에서 작동한다는 것을 잊지말자.
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
22. 프로세스 - IPC 기법(signal, socket) (0) | 2021.04.27 |
---|---|
21. 프로세스 - IPC기법(공유메모리) (0) | 2021.04.26 |
19. 프로세스 - IPC 기법(파일, 파이프) (0) | 2021.04.22 |
18. 프로세스 - IPC의 개념 (0) | 2021.04.21 |
17. 프로세스 구조 - 컨텍스트 스위칭(context switching) (0) | 2021.04.20 |
댓글