[Process & Thread] 프로세스간 통신(IPC, 공유메모리, 메시지전달)

2023. 5. 11. 16:17·CS/OS
728x90

1. IPC

1) IPC ⭐️

  • Inter Process Communication
  • 프로세스는 독립적인 주소 공간을 가지고 있어서 다른 프로세스와 데이터를 주고 받을 수 없는데 이런 문제를 해결하기 위한 기법
  • IPC를 통해 프로세스간 통신이 가능하게 만들어줌
  • IPC는 크게 공유 메모리 방식과 메시지 전달 방식으로 나눠짐

 

2. 공유 메모리

1) 공유 메모리

  • 프로세스들이 주소 공간의 일부를 공유하고 공유된 메모리 영역에 읽기와 쓰기를 하면서 통신하는 방식
  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해줌
  • 메모리는 스택-힙-데이터-코드영역으로 이루어져있지만 공유 메모리를 할당 받으면 스택-힙-데이터-공유메모리-코드 이렇게 메모리 공간에 공유 메모리 공간이 추가가 됨

2) 공유 메모리 형성 과정

  1. 프로세스가 공유 메모리 할당을 커널에 요청
  2. 커널이 해당 프로세스에 메모리 공간을 할당

 

3) 공유 메모리 특징

  • 공유 메모리 영역이 구축된 이후에는 모든 접근이 일반적인 메모리 접근으로 취급되기 때문에 더 이상 커널의 도움없이도 각 프로세스들이 해당 메모리 영역에 접근할 수 있음
  • 한 번 공유 메모리가 형성되면 다음엔 커널의 도움이 없어도 각 프로세스들이 메모리 영역에 접근할 수 있기 때문에 IPC 속도가 빠름
  • 공유 메모리 방식은 프로세스간의 통신을 수월하게 만들지만, 동시에 같은 메모리 위치에 접근하게 되면 일관성 문제가 발생할 수 있고, 커널은 이 부분에 대허 관여하지 않기 때문에 프로세스끼리 직접 공유 메모리 접근에 대한 동기화 문제를 책임져야함

 

3. 메시지 전달

1) 메시지 전달

  • 시스템 콜을 이용하여 구현
  • 커널을 통해 데이터를 전달(데이터를 전달함에 있어 중간에 커널이 중개 역할)
  • 커널을 통해 send(message)와 receive(message)라는 두 가지 연산을 제공받음
  • 예를 들어 프로세스1이 커널로 메시지를 보내면, 커널이 프로세스2에게 메시지를 보내주는 방식으로 동작

 

2) 메시지 전달 과정

  1. 프로세스 A가 프로세스 B에게 보낼 데이터를 커널에 보낸다.
  2. 커널은 프로세스 A한테 온 메시지를 받고 프로세스 B한테 보내준다.

 

3) 메시지 전달 특징

  • 메시지 전달은 커널을 무조건 거쳐야 한다는 점 때문에 첫 과정을 제외한 나머지는 직접 메모리에 접근이 가능한 공유 메모리와는 달리 속도가 느림
  • 충돌을 회피할 필요가 없기 때문에 적은양의 데이터를 교환하는 데 유용하며, 구현(pipe, socket, message queue 등)하기가 쉬움

 

4. IPC 방식 비교 ⭐️

  공유메모리 메시지전달
장점 속도빠름 안전, 동기화 제공
단점 동기화 문제
(여러 프로세스가 동시에 메모리 접근)
속도 느림
(터널을 통해 제어)

 

 

더보기

참고

 

[OS] 운영체제 질문 - (프로세스,스레드,동기화 문제,교착상태,페이징,가상메모리)

질의응답 형식으로 면접하듯이 정리해봤습니다. 아무리 잘 아는 질문이라고 해도 막상 대답하려고 하면 어려운거 같습니다. 완벽히 아는게 아니라는걸 알려주는거 같기도합니다. 스스로 질문

onejunu.tistory.com

 

GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질

백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문,

github.com

 

GitHub - kjsu0209/Tech-Interview: 기술면접 대비 CS 질문 모음

기술면접 대비 CS 질문 모음. Contribute to kjsu0209/Tech-Interview development by creating an account on GitHub.

github.com

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'CS/OS' 카테고리의 다른 글
  • [Process & Thread] 교착상태(Deadlock)
  • [Process & Thread] Multi Process, Multi Thread 동기화 (Mutex, Semaphore)
  • [Process & Thread] 스레드, 멀티 스레드
  • [Process & Thread] 프로세스, 멀티 프로세스
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    플로이드워셜
    최대공약수
    Algorithm
    최단거리
    자료구조
    큐
    월간코드챌린지
    스택
    최소신장트리
    알고리즘
    구현
    백준
    BFS
    조합
    구간합
    그리디
    정렬
    동적계획법
    힙
    파이썬
    다익스트라
    트리
    LIS
    DP
    재귀
    프로그래머스
    그래프
    이분탐색
    덱
    DFS
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[Process & Thread] 프로세스간 통신(IPC, 공유메모리, 메시지전달)
상단으로

티스토리툴바