본문 바로가기
컴퓨터공학기초 개념/운영체제

20. 프로세스 - IPC 기법(메세지 큐)

by devraphy 2021. 4. 23.

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만이 읽을 수 있다.
  • 파이프와 메세지 큐 모두 커널 영역에서 작동한다는 것을 잊지말자. 

 

댓글