IPC(Inter-Process Communication)란?
프로세스 간의 통신을 위한 메커니즘을 의미합니다. 프로세스는 원래 독립적으로 존재하는데, 상황에 따라서 프로세스끼리 협력해야하는 경우가 있습니다. 이렇게 프로세스 간의 통신을 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공하고, 이를 통해 프로세스끼리 자원과 데이터 공유할 수 있습니다.
프로세스 개념에 대한 자세한 내용은 다음 글을 참고해주세요.
[운영체제] 프로세스란?
프로세스(Process)란? 프로세스는 실행중인 프로그램을 뜻합니다. 여기서 프로그램은 명령어들의 모음을 포함하는 디스크에 저장된 파일을 의미합니다. 프로그램이 실행되면, 프로그램의 명령어
metleeha.tistory.com
IPC가 필요한 이유
- 정보 공유: 여러 사용자가 동일한 정보를 필요로 할 수 있다.
- 계산 가속화: 특정 작업을 빠르게 실행하기 위해 해당 작업을 부분 작업을 나눠서 병렬로 실행할 수 있다.
- 모듈성: 특정 시스템 기능을 별도의 프로세스(스레드)로 구분해 모듈식 형태로 시스템을 구성할 수 있다.
- 편의성: 여러 사용자들이 동시에 많은 작업을 수행할 수 있다.
IPC의 종류
IPC의 기법은 크게 메시지 전달(Message Passing System)과 공유 메모리(Shared Memory) 두가지로 나뉜다.
✓ 메시지 전달 (Message passing)
- 특징 : IPC를 위해 커널을 통해 메시지를 전달하는 방식으로 자원이나 데이터를 주고받는다.
- 장점 : 별도로 다른 것을 구축할 필요 없이 커널을 이용하기 때문에 구현이 비교적 쉽다.
- 단점 : 커널을 이용하기 때문에, 시스템 콜(System call)이 필요하며 이로 인해 오버헤드가 발생한다.
- 종류 : 파이프, 시그널, 메시지 큐, 소켓 등
✓ 공유 메모리 (Shared memory)
- 특징 : IPC를 위해 공유 메모리 영역을 구축하고, 공유 영역을 통해 자원이나 데이터를 주고받는다.
- 장점 : 커널 의존성이 낮기 때문에 속도가 빠르다. 유저 레벨에서 IPC가 가능하기 때문에, 통신이 자유롭다.
- 단점 : 자원과 데이터를 공유하기 때문에 동기화 이슈가 발생한다.
IPC 종류
✓ 파이프 (Pipe)
- 특징 : 하나의 프로세스가 파이프를 통해 다른 프로세스로 메시지를 직접 전달하는 방식
- Half-duplex 방식이기 때문에, 데이터는 한쪽 방향으로만 이동한다. 양방향 통신을 하기 위해서는 두 개의 파이프가 필요하다.
- 파이프에 용량 제한이 있기 때문에 이용에 제약이 있다.
✓ 시그널 (Signal)
- 특징 : 프로세스 ID를 통해 특정 프로세스에게 메시지를 전달하는 방식
- 유닉스에서 30년 이상 사용된 전통적인 기법으로 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생했는지 알려준다.
- 시그널 ID에 따라 어떤 이벤트인지 알 수 있다.
✓ 메시지 큐 (Message Queue)
- 특징 : 고정 크기의 메시지를 연결 리스트를 통해 통신하는 방식
- 입출력 방식은 PIPE와 동일하지만 커널에서 관리하며 메모리를 사용한 PIPE
- 메시지 단위의 통신이며, 메시지 큐 ID를 통해 통신을 한다.
✓ 공유 메모리 (Shared Memory)
- 특징 : 공유 메모리가 직접 데이터 자체를 공유하도록 지원하는 방식
- 공유 메모리는 중개자 없이 바로 메모리에 접근할 수 있기 때문에 가장 빠르게 동작
✓ 소켓 (Socket)
- 특징 : 네트워크 상에서 프로세스 간에 통신하는 방식
- Local 뿐만 아니라, Remote 통신이 가능하다.
'📒 Tech Note > CS 기본기 뚝딱' 카테고리의 다른 글
[운영체제] 프로세스란? (0) | 2022.08.25 |
---|---|
[운영체제] 동기와 비동기, 블로킹과 논블로킹 (0) | 2022.08.25 |