여러 개의 '프로세스', 즉 멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것
하나 이상의 일을 병렬로 처리할 수 있으며 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생하더라도 다른 프로세스를 이용해서 처리할 수 있으므로 신뢰성이 높은 강점이 있다.
예)
웹 브라우저 : 멀티 프로세스이자 멀티 스레드
프로세스 내 작업을 여러 개의 스레드, 멀티 스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높다.
한 스레드가 중단되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하다.
그러나, 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있는 단점이 있다.
❓ 멀티 스레드와 멀티 스레딩은 같은 의미인가? 멀티 스레드는 여러개의 스레드를 말하는 것이고, 멀티스레딩을 이를 기반으로 수행하는 것을 말한다.
예)
웹 브라우저 : 웹 브라우저의 렌더러 프로세스
프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘
클라이언트가 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것도 IPC의 예
공유 메모리 : 공유 메모리를 통해 여러 프로세스가 하나의 메모리를 공유할 수 있다.
👉 메모리 자체를 공유하기 때문에 불필요한 데이터복사의 오버헤드가 발생하지 않아 가장 빠르고, 동기화가 필요하다. IPC 중에서는 가장 빠르다.
파일 : 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터
소켓 : 동일한 컴퓨터의 다른 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터
익명 파이프 : 프로세스 간에 FIFO 방식으로 읽히는 임시 공간인 파이프를 기반으로 데이터를 주고받으며, 단방향 방식의 읽기 전용, 쓰기 전용 파이프를 만들어서 작동하는 방식
👉 부모, 자식 프로세스 간에만 사용할 수 있으며 다른 네트워크상에서는 사용이 불가능
명명된 파이프 : 파이프 서버와 하나 이상의 파이프 클라이언트 간의 통신을 위한 명명된 단방향 또는 이중 파이프
👉 서버용 파이프와 클라이언트용 파이프로 구분해서 작동하며 하나의 인스턴스를 열거나 여러 개의 인스턴스를 기반으로 통신한다.
메시지 큐 : 메시지를 큐 데이터 구조 형태로 관리하는 것을 말한다. MQ라고도 부른다.
👉 커널에서 전역적으로 관리되며 다른 IPC 방식에 비해서 사용 방법이 매우 직관적이고 간단하다. 공유 메모리의 대안으로 많이 사용한다.(쓰기 및 읽기 빈도가 높으면 동기화 때문에 구현이 복잡해지기 때문에)
출처 : 면접을 위한 CS전공지식 노트(책 / 강의)