참고_IPC 기법 1

2021. 2. 23. 17:04Computer(인강)/운영체제

728x90
반응형

안녕하세요 banavi입니다^ㅅ^

오늘은 각각의 IPC기법을 조금 깊이있게 살펴보려고 합니다.

바로 시작해볼게요 고고!

 

 

1. file 사용(실시간성이 떨어지고, 저장매체를 다녀오기 때문에 시간이 많이 걸립니다)

2. Message Queue

3. Shared Memory

4. Pipe

5. Signal

6. Semaphore

7. Socket

 

지난 시간에 2번부터 7번까지는 결과적으로 프로세스가 커널 공간을 공유한다는 내부적인 특징이 있기때문에

그 기술을 기반으로 해서 다양한 기법들이 나왔다고 했었죠.

 

 

먼저 pipe(파이프)입니다

 

- 기본 파이프는 단방향 통신

- fork()로 자식 프로세스 만들었을 때, 부모와 자식간의 통신

 

메시지 큐(message queue)

- 큐니까, 기본은 FIFO 정책으로 데이터 전송

 

파이프와 메시지 큐

- message queue는 키값만 명확히 알고 있으면 fork()를 할 필요 없다. 부모/자식이 아니라, 어느 프로세스간에라도 데이터 송수신이 가능!

- 먼저 넣은 데이터가 먼저 읽혀진다(FIFO)

 

pipe VS message queue

- pipe는 부모/자식 프로세스간이어야 하지만 message queue는 그렇지 않고,

- pipe는 단방향만 가능하지만 message queue는 양방향 가능하다

- pipe와 message queue 둘 다 커널공간의 메모리를 사용한다.

 

 

* 메모리 공간도 커널과 사용자공간이 분리된다.

 

 

 

공유 메모리(shared memory)

- 노골적으로 kernel space에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식

- message queue처럼 FIFO 방식이 아니라, 해당 메모리 주소를 마치 변수처럼 접근하는 방식

- 공유 메모리 key를 가지고, 여러 프로세스가 접근 가능

 

 

 

 

정리

1. 주요 IPC 기법

 

- pipe : 단방향통신, 부모와 자식으로 이루어진 관계(fork로 생성된 관계에서만 통신이 된다)

- message queue : 키값을 가지고 양방향으로 프로세스간 통신이 된다.

- shared memory : 커널공간에 메모리 공간을 만든다. 공간에 대한 주소값을 어느 프로세스든 간에 (키값을 가지고)얻어내면 마치 변수처럼 쓸 수 있다

 

2. 모두 커널 공간을 활용해서 프로세스간 데이터를 공유한다

728x90
반응형