My Boundary As Much As I Experienced

IPC(Inter Process Communication) 본문

Computer Basics

IPC(Inter Process Communication)

Bumang 2023. 8. 29. 08:46

IPC(Inter Process Communication)

프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다.

 

프로세스는 독립적으로 실행된다. 즉, 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다. (스레드는 프로세스 안에서 자원을 공유하므로 영향을 받는다) 이런 독립적 구조를 가진 프로세스 간의 통신을 해야 하는 상황이 있을 것이다. 이를 가능하도록 해주는 것이 바로 IPC 통신이다.

 

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

 

 

커널이란?

커널 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할을 한다.

 

 

 

IPC 종류

  1. 익명 PIPE
    • 파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다.
    • 한쪽 방향으로만 통신이 가능한 반이중 통신에서 주로 쓰인다. (따라서 양쪽으로 모두 송/수신을 하고 싶으면 2개의 파이프를 만들어야 한다.) 
    • 익명 파이프는 통신할 프로세스를 명확히 알 수 있는 경우에 사용한다. (부모-자식 프로세스 간 통신처럼)
  2. Named PIPE
    • Named 파이프는 전혀 모르는 상태의 프로세스들 사이 통신에 사용한다.
    •  부모 프로세스와 무관한 다른 프로세스도 통신이 가능한 것 (통신을 위해 이름있는 파일을 사용)
  3. Message Queue
    • 입출력 방식은 Named 파이프와 동일함
    • 다른점은 메시지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간이다.
  4. 공유 메모리
    • 파이프, 메시지 큐가 통신을 이용한 설비라면, 공유 메모리는 데이터 자체를 공유하도록 지원하는 설비다.
    • 프로세스의 메모리 영역은 독립적으로 가지며 다른 프로세스가 접근하지 못하도록 반드시 보호되야한다. 하지만 다른 프로세스가 데이터를 사용하도록 해야하는 상황도 필요할 것이다.
    • 파이프를 이용해 통신을 통해 데이터 전달도 가능하지만, 스레드처럼 메모리를 공유하도록 해준다면 더욱 편할 것이다.
  5. 메모리 앱
    • 공유 메모리처럼 메모리를 공유해준다. 메모리 맵은 열린 파일을 메모리에 맵핑시켜서 공유하는 방식이다. (즉 공유 매개체가 파일+메모리)
    • 주로 파일로 대용량 데이터를 공유해야 할 때 사용한다.
  6. 소켓
    • 네트워크 소켓 통신을 통해 데이터를 공유한다.
    • 클라이언트와 서버가 소켓을 통해서 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용한다.
    • 서버(bind, listen, accept), 클라이언트(connect)

 

'Computer Basics' 카테고리의 다른 글

데드락(Deadlock)  (0) 2023.09.05
CPU Scheduling  (0) 2023.09.05
PCB 와 Context Switching  (0) 2023.08.29
시스템 콜(System Call)  (0) 2023.08.22
인터럽트(Interrupt)란?  (0) 2023.08.22