본문 바로가기

CS STUDY/운영체제

IPC(Inter Process Communication)

IPC(Inter Process Communication)

멀티 스레드 환경에서는 서로 공유하는 공간이 있어 데이터를 주고 받을 수 있지만
프로세스는 독립된 구조인데 어떻게 자원을 공유할 수 있을까?
개념

 

프로세스들끼리 서로 데이터를 주고받는 행위 

 

종류

 

1. PIPE(익명 PIPE, Anonymous PIPE)

  • 두 개의 프로세스가 파이프로 연결되면, 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 읽기만 가능(반이중 통신)
  • read()와 write()이 block mode로 작동되기에 read가 끝나기 전에는 write 불가
  • 스트림 기반(데이터 흐름)
  • 만약 읽기/쓰기를 모두 하기 원하면(전이중 통신) 두 개의 파이프 필요

2. Named PIPE(FIFO)

  • 익명 PIPE의 경우 통신을 할 프로세스가 명확한 반면 Named PIPE는 불명확
  • 부모 프로세스와 무관하게 모든 프로세스들 사이에서 통신 가능
  • mkfifo를 통해 이루어짐 
  • 읽기/쓰기 동시 불가

3. Message Queue

  • 어디에서나 물건을 꺼낼 수 있는 컨테이너 벨트와 유사 
  • PIPE가 데이터 흐름이라면 Message Queue는 메모리 공간 
  • 데이터가 많이 쌓이면..? 추가적인 메모리 자원 필요, 오버헤드 발생 가능
  • 양방향 통신이 가능 
  • 큐에 쓸 데이터에 번호를 붙임으로써 다수의 프로세스가 동시에 데이터를 다룰 수 있음
  •  msgtype에 따라 다른 구조체를 가져올 수 있음

4. Shared Memory(공유 메모리)

  • 데이터 자체를 공유 => Thread와 비슷
  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널이 공유 메모리 공간 할당 => 이후엔 커널 관여x 모든 프로세스 접근 가능
  • 모든 IPC들 중에서 가장 빠르게 작동 
  • 단점은..? 커널에 종속, 동기화 문제..?

5. Memory Map

  • 메모리 공유
  • 열린 파일을 메모리에 맵핑 

6. Socket

  • 같은 도메인 내에서 연결 가능 
  • 서버에서는 bind, listen, accept를 해주어 소켓 연결을 위한 준비
  • 클라이언트에서는 connect를 통해서 서버에 요청 후 데이터 send
  • 연결이 끝난 후 반드시 close
  • 양방향 통신이 가능
  • **소켓(Socket)? 네트워크 상에서 통신하기 위한 종단점
  • 데이터를 주고 받을 때마다 소켓 연결, 해제..? 아니면 초기에 한번만 필요?

 

Q. 공유 메모리 방식이 가장 빠르게 작동한다고 하는데 단점은?

A. 프로세스 A가 공유 메모리에 데이터를 전달해도 B가 알  수 없음 => 동시에 같은 메모리 참조 가능

 

 

 

참고

https://velog.io/@nnnyeong/OS-IPC-Inter-Process-Communication

 

[OS] IPC, Inter Process Communication

IPC 란? IPC는 프로세스들 사이에 서로 데이터를 주고 받는 방식, 즉 프로세스 간의 통신을 의미한다. 각 프로세스는 독립적인 실행 객체이기 때문에 프로세스 간 통신을 하려면 커널이 제공하는 I

velog.io

https://jwprogramming.tistory.com/54

 

IPC의 종류와 특징

IPC(Inter Process Communication) - 프로세스 간 통신에 대하여 종류와 특징들에 대하여 살펴보겠습니다. [리눅스 커널 구조] - 위 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어 있다는

jwprogramming.tistory.com

https://heeonii.tistory.com/13

 

[운영체제] IPC 프로세스간 통신

IPC란? Inter Process Communication 의 약자로 프로세스간 통신을 말합니다. 위 그림처럼 프로세스는 완전히 독립된 실행객체로써 다른 프로세스의 영향을 받지 않습니다. 독립되어 있는 만큼 별도의 설

heeonii.tistory.com

 

'CS STUDY > 운영체제' 카테고리의 다른 글

CPU Scheduling  (0) 2024.02.04
PCB & Context Switching  (0) 2024.01.22
인터럽트(Interrupt)  (1) 2024.01.15
프로세스 & 스레드  (0) 2024.01.15
운영체제란(2)  (0) 2023.12.28