프로세스들 간 의사소통을 IPC라고 한다.
서로 다른 프로세스가 데이터를 주고 받을 수 있다는 것을 의미하며
동시에 접근 가능한 메모리 즉, 프로세스들이 공유하는 메모리가 필요하다.
프로세스간 통신에는 약 6가지 가지 방법이 있다
- 공유 메모리(Shared Memory)
- 파이프(Pipe)
- 소켓(Socket)
- 메시지 큐(Message Queue)
- 메모리 맵(Memory Map)
- RPC(Remote Produce Call)
공유 메모리 (Shared Memory)
- 시스템 상의 공유 메모리를 통해 통신
- 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당
-> 공유 메모리가 각 프로세스에게 첨부하는 방식으로 작동 ( 각 프로세스가 메모리 영역에 첨부) - 프로세스 간 Read, Write를 모두 필요로 할 때 사용
- 대량의 정보를 다수의 프로세스에게 배포 가능
- 중개자 없이 곧바로 메모리에 접근할 수 있어 파이프보다 작동이 빠름
파이프 (Pipe)
- 통신을 위한 메모리 공간(버퍼)을 생성하여 프로세스가 데이터를 주고 받게끔 함
- 파이프 종류
- 익명파이프
- 네임드 파이프
소켓 (Socket)
- 프로세스 간 데이터 교환을 위한 데이터 통신 엔드 포인트
- 네트워크 소켓 통신을 통해 데이터를 공유
- 클라이언트와 서버가 소켓을 통해서 통신하는 구조로 원격에서 프로세스 간 데이터를 공유할 때 사용
- 전이중 통신 가능
- 서버-클라이언트 환경을 구축하는데 용이
- 서버: bind, listen, accept
- 클라이언트: connect
메시지 큐
- 입출력 방식은 Named 파이프와 동일
- 메시지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간이다. 즉 메모리를 사용한 PIPE
- 다수의 프로세스간 메시지를 전달할 수 있다.
- 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
- 메시지의 접근을 위해서는 키가 필요하다.
메모리 맵
- 공유 메모리처럼 메모리 공유
- 열린 파일을 메모리에 맵핑시켜서 공유
- 파일로 대용량 데이터를 공유해야할 때 사용
- 메모리 맵 파일은 파일의 크기를 바꿀 수는 없으며 메모리 맵 파일을 사용하기 이전 또는 이후에만 파일 크기 변경 가능
RPC
- 분산 네트워크 망에서 많이 사용
- 별도의 원격제어 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술
- 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드 이용
- 해당 방법은 분리된 PC에 저장된 데이터를 내 PC에 존재하는 것처럼 데이터를 가져와 사용
IPC 종류 | 파이프 | Named 파이프 | 메시지 큐 | 공유 메모리 | 메모리 맵 | 소켓 |
사용시기 | 부모-자식 단방향 |
다른프로세스 단방향 |
다른프로세스 단방향 |
다른프로세스 양방향 |
다른프로세스 양방향 |
다른시스템 양방향 |
공유 매개체 | 파일 | 파일 | 메모리 | 메모리 | 파일+메모리 | 소켓 |
통신단위 | stream | stream | 구조체 | 구조체 | 페이지 | stream |
통신가능범위 | 동일 시스템 | 동일시스템 | 동일시스템 | 동일시스템 | 동일시스템 | 동일+외부시스템 |
참고블로그
[OS] 프로세스 간 통신 방법(Inter Process Communication, IPC)
개념 프로세스들 간의 의사소통하는 것을 IPC라고 한다. 프로세스가 통신 가능하다는 것은 서로 다른 프로세스가 데이터를 주고 받을 수 있다는 것이며, 동시에 접근 가능한 메모리 즉, 프로세스
dar0m.tistory.com
IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어와 뮤텍스를 사용
세마포어
공유된 자원에 여러개의 프로세스가 동시에 접근하면 안되며, 한번에 하나의 프로세스만 접근 가능하도록 할 때 사용
현재 공유자원에 접근할 수 있는 스레드, 프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법
뮤텍스
'임계 영역' 이라고도 한다. 서로 다른 두 프로세스, 혹은 스레드 등의 처리 단위가 같이 접근해서는 안되는 공유 영역을 뜻한다.
한 스레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제 기법
한번에 이해되는 참고블로그
https://worthpreading.tistory.com/90
뮤텍스(Mutex)와 세마포어(Semaphore)의 차이
이 글은 Medium에 개시된 글입니다. Medium에서 보시면 좀 더 유쾌한 환경에서 글을 보실 수 있습니다. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 Toilet problem 동시성 프로그래밍의 가장 큰 숙제는 ‘공
worthpreading.tistory.com
Q.
IPC에 대해서 아는대로 설명해보세요
A.
IPC는 Inter-process Communication의 약자로 프로세스 간 통신하여 상호 커뮤니케이션을 하기 위한 기법입니다.
대표적으로 공유메모리, 파이프, 소켓을 이용한 기법들이 있습니다.
Q.
세마포어와 뮤텍스는 무엇인가요?
A.
공유된 자원에 여러 개의 프로세스가 동시에 접근했을 때 생기는 문제들을 방지하기 위한 기법들입니다.
데이터를 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 둡니다.
뮤텍스와 세마포어는 공유된 자원의 임계영역에 하나의 프로세스 혹은 스레드가 접근하는 것을 막아줍니다.
둘의 차이점은 동기화 대상의 개수에 있습니다.
뮤텍스는 동기화 대상이 하나이고 세마포어는 동기화 대상이 하나 이상입니다.
'IT정보 > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스와 스레드 특징, 차이 (0) | 2022.10.13 |
---|---|
[운영체제] page fault 성능저하율 (0) | 2022.09.08 |