LINUX/ABOUT LINUX

[Linux] IPC (Inter-Process Communication) 기본 개념

옐옐루 2022. 10. 28. 16:01

 

 

 

IPC란?

 

모듈 간 통신 방식을 구현하기 위해 사용되는

대표적인 프로그래밍 인터페이스 집합이다.  

복수의 프로세스를 수행 및 프로세스 간 통신 구현 가능 

 

 

출처 : 본인 PPT 파일

 

1. Pipe (익명 PIpe)

 

 - 두개의 프로세스를 연결하며 하나는 데이터를 쓰기만 할 수 있고 하나는 데이터를 읽기만 할 수 있다(반이중 통신)

 - 한쪽 방향으로만 통신이 가능하다. 따라서 송수신을 서로 하기 위해선 파이프를 2개 생성해야 한다 하지만 이렇게 파이

   프를 두개로 구성할 경우엔 구현이 복잡해진다는 단점이 있다.

 - 익명 pipe는 통신할 프로세스가 누구인지 명확하게 알때 사용 하는 것

 

2. Pipe(Named Pipe) 

 

 - 부모 프로세스와 무관하게 전혀 다른 모든 프로세스들 사이에서 통신 가능하다는 점이 익명 Pipe와의 차이다 

 - fifo 파일을 생성해야 하며 , 성공시 Named Pipe가 생성이 된다 

 - Named Pipe 또한 읽기 쓰기가 동시에 불가능하며 전이중 통신을 위해선 2개의 FIFO가 필요하다

 

3. Message Queue

 

 - 큐는 선입선출의 자료구조를 가지는 통신설비로 커널에서 관리한다. 입출력 방식으로 보자면 위의 Named Pipe와 비슷

   하다.

 - 하지만 Named Pipe는 데이터의 흐름을 관리한다면 큐는 메모리 공간을 관리한다. 즉 파이프가 아니라 어디에서나 물건

   을 꺼내 쓸 수 있는 컨테이너 벨트와 같은 개념이다. 

 - 메시지 큐에 쓸 데이터에 번호를 붙임으로써 여러개의 프로세스를 통해 동시에 데이터를 쉽게 다룰 수 있다. 

 

4. Shared Memory(공유 메모리) 

 

 * 데이터 공유 방식에는 크게 두가지가 있다. 

   첫번째는 통신을 이용해서 데이터를 주고 받는 것이고, 두번째는 데이터를 아예 공유하는것 즉 함께 사용하는 방식이 있     다.

 - Pipe/Named  Pipe/ Message queue가 통신을 이용한 설비이며 Shared Memory는 공유 메모리를 통헤 데이터를 자체 공유 하는 것이다. 

 -  다수의 프로세스가 동시에 작동하는 리눅스의 특성상 각각의 프로세스 메모리는 당연히 보호 받아야 한다. 하지만 메모 

    리 영역에 있는 데이터에 다른 프로세스가 접근하는게 쉽기도 해야한다. 

 -  프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해다 ㅇ프로세스에 메모리 공간을 할당해준다. 이후 어떤 프로

    세스건 해당 메모리 영역에 접근이 가능해진다

 -  중개자가 없기 때문에 IPC 중 가장 빠르게 작동한다 

 

5. Semaphore 

 

 - 다른 IPC 설비들이 대부분 프로세스간 메시지 전송을 목적으로 하는데 반해, semaphore는 프로세스간 데이터를 동기화 

   하고 보호하는것이 목적이다. 

 - 한번에 하나의 프로세스만 접근 가능하도록 만들어 주어야 한다. 

 

6. socket 

 

 - 프로세스가 데이터를 내보내거나 혹은 데이터를 받기 위한 창구 역할을 하는 것. 즉 프로세스가 데이터를 보내거나 받기 

   위해서는 반드시 소켓을 열어 소켓에 데이터를 써보내거나 데이터를 읽어들여야 한다. 

 - 즉 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스의 역할을 한다. 따라서 실시간 채팅과 같은 곳에 많이 사용

   되는 방식이다.

 * 프로토콜, ip주소, 포트넘버가 중요하다. 

 

 

각각의 IPC의 개념과 특징에 대해 알아보았고, 

각 IPC를 리눅스에서 프로그래밍한 연습 예제를 보기 위해선 다음 포스팅을 참고 할 것 

[Linux] IPC 예제 ① Shared Memory & Message Queue (tistory.com)

 

[Linux] IPC 예제 ① Shared Memory & Message Queue

본 포스팅에서는 Shared Memory와 Message Queue 와 관련된 기본 예제를 프로그래밍 한다. IPC 통신과 각각의 방법의 개념에 대해 공부하고 싶다면 아래 포스팅을 참조하자 [Linux] IPC (Inter-Process Communicat..

tjqud531531.tistory.com

 

[Linux] IPC 예제 ② Semaphore (tistory.com)

 

[Linux] IPC 예제 ② Semaphore

본 포스팅에서는 Semaphore 와 관련된 기본 예제를 프로그래밍 한다. IPC 통신과 각각의 방법의 개념에 대해 공부하고 싶다면 아래 포스팅을 참조하자 [Linux] IPC (Inter-Process Communication) 기본 개념 (tist

tjqud531531.tistory.com

 

반응형