1. 프로세스간 통신의 개념
프로세스는 시스템 내에서 독립적으로 실행되기도 하고 데이터를 주고받으며 협업하기도 한다. 프로세스가 다른 프로세스와 데이터를 주고받는 프로세스 간 통신(IPC)에는 같은 컴퓨터 내에 있는 프로세스뿐만 아니라 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와의 통신도 포함된다.
IPC
- 프로세스들 간의 의사소통을 하는 것을 말한다
- 커널에서 IPC를 위한 도구를 제공하며, 시스템 콜의 형태로 프로세스에게 제공된다.
2. 프로세스 간 통신의 분류
PC 종류 | PIPE | Named PIPE | Mesage Queue | Shared Memory | Memory Map | Socket |
사용 시기 |
부모 자식 간 단 방향 통신 시 |
다른 프로세스와 단 방향 통신 시 |
다른 프로세스와 단 방향 통신 시 |
다른 프로세스와 양 방향 통신 시 |
다른 프로세스와 양 방향 통신 시 |
다른 시스템간 양 방향 통신 시 |
공유 매개체 |
파일 | 파일 | 메모리 | 메모리 | 파일+메모리 | 소켓 |
통신 단위 |
Stream | Stream | 구조체 | 구조체 | 페이지 | Stream |
통신 방향 |
단 방향 | 양 방향 | 단 방향 | 양 방향 | 양 방향 | 양 방향 |
통신 가능 범위 |
동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 시스템 | 동일 + 외부 시스템 |
1. 공유 메모리(Shared Memory)
1) 정의
- 시스템 상의 공유 메모리를 통해서 통신
2) 구조
- 일정한 크기의 메모리를 프로세스간에서 공유하는 구조이다
- 공유 메모리는 커널에서 관리됨
3) 사용시기
- 프로세스간 Read, Write 모두 필요할 때
4) 주의사항
- 프로세스간의 상용할려면 메모리 크기 동일 해야함.
2. PIPE
1) 정의
- 익명의 PIPE를 통해서 동일한 PPID를 가진 프로세스들 간에 단방향 통신을 지원
2) 구조
- FIFO 구조
- 생성된 PIPE에 대하여 Write 또는 Read만 가능
3) 사용시기
- 부모 자식 프로세스간 통신 할때 사용
4) 주의사항
- 쌍방 통신을 위해서는 Write용 PIPE하나 Read PIPE하나 씩 만들어야 한다.
- read()와 write()가 기본적으로 block 모드로 작동하기 때문으로 프로세스가 read대기중이라 read가 끝나기 전에는 write를 할수가 없게 된다.
3. Message Queue
1) 정의
- 메모리를 사용한 PIPE이다.
- 구조체 기반으로 통신을 한다.
2) 구조
- FIFO 구조
- msgtype에 따라 다른 구조체를 가져올수 있다.
3) 사용시기
- 프로세스간 다양한 통신을 할 때 사용 할수 있다.
4) 주의사항
- 커널에서 제공하는 Message queue 이기 때문에 EnQueue 하는데 제한이 존재 한다.
4. Socket
1) 정의
- 네트워크 소켓통신을 시용한 데이터 공유
2) 구조
- 네트워크 소켓을 이용하여 Client - Server 구조로 데이터 통신
3) 사용시기
- 원격에서 프로세스간 데이터를 공유 할 때 사용
4) 주의사항
- 네크워크 프로그래밍이 가능해야 한다.
- 데이터 세그먼트 처리를 잘해야한다.
출처) 널널한 개발자 TV https://youtu.be/eELCTRdSj7o
'🍋 CS' 카테고리의 다른 글
1장. 네트워크 기초 (0) | 2023.08.27 |
---|---|
운영체제 - 메모리(Memory) (0) | 2023.04.18 |
운영체제 - 공유자원 & 임계구역 (0) | 2023.04.11 |
운영체제 - CPU 스케줄링 (0) | 2023.04.07 |
운영체제 - 프로세스 관리 (0) | 2023.03.31 |