전공 지식/OS

# 08. IPC

Calice 2022. 10. 3. 19:32

 

0. IPC란?

 

 

- 프로세스는 독립적으로 실행된다. (독립적이라는 것은 다른 프로세스에게 영향을 받지 않는다는 말. )

- 이런 독립적인 구조를 가진 프로세스들이 서로 통신을 해야하는 상황이 있을 것이고,

                                                                                                                 그것을 가능하도록 해주는 것이 IPC 통신이다. 

- 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스 간 통신을 할 수 있다. 

 

 

 

1. IPC 종류

 

IPC 설비 종류도 여러가지가 있다. 필요에 따라 설비를 선택해서 사용하면 된다.

 

1. 익명 PIPE
2. Named PIPE(FIFO)
3. Message Queue
4. 공유 메모리
5. 메모리 맵
6. 소켓

 

 

* (익명) PIPE

 

익명의 PIPE를 통해서 동일한 PPID를 가진 프로세스들 간에 단방향 통신을 지원. 

FIFO 구조

부모 자식 프로세스 간에 주로 쓰임.

생성된 파이프에 대해서는 WRITE 또는 READ 만 가능. 

따라서 양방향 통신을 위해서는 READ용 하나, WRITE용 하나 총 두개 만들어야 한다. 

 

 

* Named PIPE

 

이름을 가진 PIPE를 통해 프로세스들 간에 단방향 통신

서로 다른 프로세스들이 PIPE의 이름만 알면 통신이 가능하다. 

FIFO 구조

연관이 전혀 없는 프로세스간에 통신을 할 때 주로 쓰임. 

생성된 파이프에 대해서는 WRITE 또는 READ 만 가능.

 

 

* Message Queue

 

메모리를 사용한 PIPE

구조체 기반으로 통신을 한다. 

FIFO 구조

프로세스간 다양한 통신을 할 때 쓰임.

 

 

*Shared Memory

 

임계 시스템상의 공유 메모리를 통해 통신한다. 

일정한 크기의 메모리를 프로세스간에 공유하는 구조. 

프로세스간 READ, WRITE를 모두 필요로 할 때 쓰임.

프로세스간에 메모리 크기가 동일해야 한다.

 

 

* Memory Map

 

파일을 프로세스의 메모리에 일정 부분 맵핑 시켜 사용한다. 

파일로 대용량 데이터를 공유할 때 사용한다. 

 

 

* Socket

 

네트워크 소켓통신을 사용한 데이터 공유

원격에서 프로세스 간 데이터를 공유할 때 사용.

 

 

 

IPC 종류  PIPE Named PIPE  Mesage Queue  Shared Memory  Memory Map  Socket 
사용
시기
 부모 자식 간
단 방향 통신 시
다른 프로세스와 
단 방향 통신 시 
다른 프로세스와
 단 방향 통신 시  
다른 프로세스와
양 방향 통신 시 
다른 프로세스와 
양 방향 통신 시 
 다른 시스템간 
양 방향 통신 시
 공유
매개체
파일  파일  메모리  메모리  파일+메모리  소켓 
통신
단위
 Stream Stream 구조체 구조체  페이지 Stream 
 통신
 방향
 단 방향 당 방향  단 방향  양 방향  양 방향  양 방향 
통신 
가능 
범위
 동일 시스템 동일 시스템 동일 시스템  동일 시스템  동일 시스템  동일 + 외부 
시스템 

 


출처

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/IPC(Inter%20Process%20Communication).md