Studying/Roadmap

프로세스 간 통신

aoaa 2022. 3. 21. 21:32

1. IPC(Inter Process Communication)

 IPC프로세스 간 통신으로 프로세스들끼리 서로 데이터를 주고 받는 행위 및 방법을 말합니다.

 

 프로세스는 위와 같이 완전히 독립된 실행객체 입니다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는 다는 장점이 있지만 독립되어 있는 만큼 별도의 설비가 없이는 서로 간 통신이 어렵다는 문제가 있습니다.

 

 이를 위해 *커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해 프로세스 간 통신을 할 수 있게 됩니다.

 

*커널(Kernel)

 OS 자체도 SW이기 때문에 메모리에 올라가야 사용할 수 있습니다. 하지만 메모리 공간의 제약으로 OS중 항상 필요한 부분만을 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 됩니다. 이 때 메모리에 상주하는 OS의 부분을 커널이라고 합니다. (메모리에 상주하는 OS의 핵심 부분)

 

2. IPC의 종류

 

 

1) 메시지 전달 (Message Passing)

 커널이 제공하는 API를 이용해 커널 공간을 통해 통신합니다. 메시지 큐를 사용해 송신 프로세스는 큐에 enqueue, 수신 프로세스는 큐에 dequeue하며 상호간 통신합니다. 메시지 큐는 커널 단에서 관리하게 됩니다. user-mode와 kernel-mode의 전환과 데이터 복사로 인한 오버헤드가 존재합니다. 메세지에 번호를 붙임으로써 여러 프로세스가 동시에 데이터를 다룰 수 있습니다.

 

2) 메시지 공유 (Shared Memory)

 프로세스끼리 특정 공통의 메모리 영역을 공유하며 상호간 통신하는 방법입니다.

데이터 자체를 공유하도록 지원하며, 한 프로세스에서 변경한 메로리 공간의 내용을 다른 프로세스에서 접근할 수 있습니다. 공유 메모리는 커널에서 관리됩니다. 

 프로세스가 공유 메모리 할당을 커널에 요청하면 커널에서 user-space에 메모리를 할당합니다. 이 공간은 커널이 관리하며, 어떤 프로세스던지 포인터를 얻어와 이 공간에 접근할 수 있습니다. 공유 메모리에 대해 race condition(둘 이상의 입력 혹은 조작의 타이밍 순서 등이 결과 값에 영향을 줄 수 있는 상태)이 발생하지 않도록 동기화 매커니즘을 사용해야 합니다. (곧바로 메모리에 접근하기 때문에 가장 빠른 IPC방식)

 

 

3) PIPE

 PIPE는 Half-duplex 통신으로 한 프로세스는 write, 다른 프로세스는 read만 가능합니다. 한 프로세스에서 모두 가능하게 하고싶다면 파이프를 2개 생성해야 합니다. PIPE는 통신할 프로세스를 명확히 알 때 사용할 수 있습니다. 부모 프로세스가 동일한 프로세스끼리만 통신할 수 있는 것입니다.

 

4) Socket

 프로세스와 네트워크 사이의 인터페이스입니다. 위의 방법들은 한 hosh내에서 프로세스끼리 통신하는 방법이라면, 소켓은 주로 다른 host에 존재하는 프로세스끼리 사용하는 방식입니다.

 

 

 

 

 

 

 

 

 

 

 

 

출처

https://velog.io/@yanghl98/OS%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-IPC%EB%9E%80

 

[OS/운영체제] IPC란? - 정의, 종류, 방법

IPC(Inter Process Communication)란? 정의 IPC의 종류 >IPC = 프로세스 간 통신 >프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻한다. 위 그림처럼 Process는 완전히 독립된 실행객체

velog.io

https://bobo-dev.tistory.com/24

 

IPC

IPC IPC는 Inter-Process Communication의 약자로, 프로세스간 통신하는 방법을 의미한다. 프로세스간 통신이란, 프로세스간 데이터를 주고받는 행위이다. 다양한 IPC 방법이 존재하는데, 대표적인 IPC는 다

bobo-dev.tistory.com

 

'Studying > Roadmap' 카테고리의 다른 글

POSIX 기초  (0) 2022.04.01
입출력 관리  (0) 2022.03.30
메모리 관리  (0) 2022.03.17
스레드와 동시성  (0) 2022.03.14
프로세스 관리  (0) 2022.03.13