1. IPC 기초
1.1. IPC
- 정의 : Inter Proccess Communication. 컴퓨터 내부의 프로세스들이 서로 데이터를 주고 받을 수 있도록 만든 기술
- 종류 : 파이프, 메시지 큐, 네임드 파이프, 공유 메모리, 메모리 맵, 시그널, 세마포어, 유닉스 도메인 소켓
1.2. V IPC
- 메시지 큐 : 파이프와 유사하지만 스트림 기반으로 동작하는 파이프와 달리 메시지(또는 패킷) 단위로 동작한다.
- 공유 메모리 : 한 프로세스의 일부분을 다른 프로세스와 공유하는 것을 의미한다. 즉 메모리의 일부 공간을 두 독립적인 프로세스에 공유하고 해당 메모리를 통해 데이터를 주고 받을 수 있다.
- 세마포어 : 프로세스 사이의 동기(syncronization0를 맞추는 기능을 제공한다.
1.3. 키의 생성
- 키로 IPC_PRIVATE 지정 : 식별자를 알아야 통신을 할 수 있으므로 IPC_PRIVATE를 키로 지정해 생성된 식별자를 서버와 클라이언트 모두 알 수 있게 해야 한다.
- ftok 함수로 키 생성 : ftok 함수는 경로명과 숫자값을 받아서 키를 생성한다. 따라서 서버와 클라이언트가 같은 경로명과 숫자값을 지정하면 공통 식별자를 생성할 수 있다.
1.4. IPC 공통 구조체
struct ipc_perm {
key_t __key;
uid_t uid;
gid_t gid;
uid_t cuid;
gid_t cgid;
unsigned short mode;
unsigned short __seq;
};
- __key : 키값
- uid : 구조체의 소유자 ID
- gid : 구조체의 소유 그룹 ID
- cuid : 구조체를 생성한 사용자 ID
- cgid : 구조체를 생성한 그룹 ID