다양한 IPC 기법
* IPC : Inter Process Communication
1. file 사용
2. Message Queue
3. Shared Memory
4. Pipe
5. Signal
6. Semaphore
7. Socket
파이프 (pipe)
* 기본 파이프는 단방향 통신
* fork()로 자식 프로세스 만들었을 때, 부모와 자식간의 통신
메시지 큐(message queue)
* 큐니까 기본은 FIFO(First In First Out) 정책으로 데이터 전송한다
참고 : ftok()
* ftok() : 키 생성을 위한 함수
- path 경로명의 inode 값과 숫자값(id)를 기반으로 키 생성
- 경로 삭제 후 재생성시 inode 값이 달라지므로, 이전과는 다른 키값이 리턴
파이프와 메시지 큐
* message queue는 부모/자식이 아니라, 어느 프로세스간에라도 데이터 송수신이 가능
* 먼저 넣은 데이터가 먼저 읽혀진다
* pipe VS message queue
- 부모/자식 프로세스간 only or not
- 단방향만 가능 or 양방향 가능
IPC 기법과 커널 모드
* pipe, message queue는 모두 kernel 공간의 메모리를 사용합니다
공유 메모리 (shared memory)
* 노골적으로 kernel space에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식
* message queue 처럼 FIFO 방식이 아니라, 해당 메모리 주소를 마치 변수처럼 접근하는 방식
* 공유메모리 key를 가지고, 여러 프로세스가 접근 가능
1. 공유 메모 생성
2. 공유 메모리 연결
3. 공유 메모리 해제
4. 공유 메모리에서 읽기
5. 공유 메모리에 쓰기
※ 정리
* 주요 IPC 기법
- pipe
- message queue
- shared memory
* 모두 커널 공간을 활용해서 프로세스간 데이터 공유
출처 : 제로베이스
'공부 Note > 시스템 프로그래밍' 카테고리의 다른 글
Chapter 07 쉘 스크립트 (0) | 2022.02.07 |
---|---|
Chapter 06 시그널 (0) | 2022.02.07 |
Chapter 04 시스템 프로그래밍 (4) (0) | 2022.02.07 |
Chapter 04 시스템 프로그래밍 (3) (0) | 2022.02.07 |
Chapter 04 시스템 프로그래밍 (2) (0) | 2022.02.07 |