* Shared Memory
- IPC가 메모리를 공유하여 읽고 쓰는 과정으로 이뤄진다.
- IPC 기법중에서 가장 빠른 속도를 가진다.
- 공유되는 메모리에 대한 접근 제어 및 동기화 기법이 필요하다.
> 같은 메모리에 동시에 프로세스가 접근하여 작업하면, 원하지 않는 결과가 도출 될 수 있다.
> 접근 제어 및 동기화를 위해서 세마포어를 사용한다.
- malloc으로 동적할당을 하듯이 움직인다.
※ malloc : malloc을 선언할 때 Id값을 받고, 이 공간에 대한 사용이 시작될 때 메모리가 할당된다.
요청한 공간에 대해 사용이 없다면 메모리 할당은 이뤄지지 않는다.
- int shmget(key_t key, int size, int flag)
> 공유하는 메모리 공간을 요청하는 것으로 메모리에 할당되는 id 값이 반환된다.
- void shmat(int shmid, void *addr, int flag)
> 공유하는 메모리 공간을 할당 받는다. 이 명령어가 실행되야 실질적으로 메모리공간에 할당이 된다.
- void shmdt(void *addr)
> 공유된 메모리를 해제하는 명령어
- int shmctl(int shmid, int cmd, struct shmid_ds *buf)
> 세마포어를 사용하여 메모리에 접속하는 프로세스를 제어하는 역할을 한다.
* Message Queue
- Linked list를 이용한 IPC 기법
- 상대방의 PC에 만들어진 message queue에 메세지를 작성하여 연결 시키면,
상대방이 message queue를 확인하여 읽어 들인다. (메일과 같은 방식)
- 같은 컴퓨터 내부에서의 message queue는 마치 FIFO와 같이 이뤄진다.
- 다른 컴퓨터와 통신하는 것이라면, network 시간이 길게 잡혀 매우 느린 속도를 보이게 된다.