시냅스

TIL : OS 프로세스 간 통신 본문

운영체제

TIL : OS 프로세스 간 통신

ted k 2021. 11. 14. 15:01

프로세스 간 통신 (Interprocess Communication)

  • 독립적 : 프로세스 간 데이터 통신 X
  • 협력적
    • 프로세스 간 영향을 주거나 받음
    • 프로세스 간 통신 기법 IPC

공유 메모리 시스템에서의 프로세스 간 통신 (IPC in Shared-Memoty Systems)

  • 공유 메모리 영역을 통해 통신한다.
  • 공유 메모리 공간을 사용하기 위해선 자신의 주소 공간에 포함시켜야 한다.
  • 일반적으로 운영체제는 한 프로세스가 다른 프로세스의 메모리에 접근하는 것을 금지해야하지만 이 제약 조건을 제거한다.

Producer - Consumer Problem

  • 생사자는 정보를 제공하고 소비자는 소비하는 모델
    • Compler(생산) -> assembly code -> Assembler(소비)
    • Browser(소비) <-> Web server(생산)

Shared Memoty 를 이용한 Solution

  • 생산자와 소비자를 동시에 실행한다
  • 생산자가 buffer 에 채우고 소비자가 소비한다.
  • 생샌자와 소비자가 틍정영역에 메모리를 공유해야 한다.

위의 문제점

  • 특정영역의 메모리만 쓰려면 application 프로그래머가 직접 관리해야 한다

메세지 전달 시스템에서의 프로세스 간 통신 (IPC in Message-Passing Systems)

  • 동일한 주소 공간을 공유하지 않고도 OS가 메세지를 주고 받는 프로세스 들에게 수단을 제공해 줌
  • Send (API)
  • Reveice (API)
  • 통신 연결이 설정되어 있어야 한다.
    • 직접 또는 간접 통신 (direct or indirect)
      • direct: 하나의 링크, 프로세스 쌍들의 연결이 자동으로 구축된다, 받는 사람과 주는 사람이 명시적이다.
      • indirect
        • mailbox 또는 port로 송신된다.
        • P, Q가 같은 받스를 쓸 때에만 링크가 생긴다.
        • 통신하고 있는 각 프로세스 사이에는 다수의 서로 다른 연결이 존재할 수 있고 각 연결은 하나의 메일박스에 대응된다.
    • 동기식 또는 비동기식 통신 ( synchronous or asynchronous)
      • Synchronization
        • 봉쇄형(blocking) 보내기 : 송신하는 프로세스는 메세지가 수신 프로세스 또는 메일박스에 의해 수신될 때까지 봉쇄된다.
        • 봉쇄형(blocking) 받기 : 메세지가 이용 가능할 때까지 수신 프로세스가 봉쇄된다.
        • 필자 각주: 영화를 다 다운로드 받아야 확인 가능
      • Asynchronous
        • 비봉쇄형(nonblocking) 보내기 : 송신하는 프로세스가 메세지를 보내고 작업을 재시작한다.
        • 비봉쇄형(nonblocking) 받기 : 송신하는 프로세스가 유요한 메세지 또는 널을 받는다.
        • 필자 각주: 약간 유튜브 처럼 동영상 로딩하면서 시청하는 거
    • 자동 또는 명시적 버퍼링 : 프로세스들에 의해 교환되는 메세지는 임시 큐에 들어가있다. 이런 큐는 3가지 방식이 있다.
      • 무용량 : 큐의 최대 길이가 0으로, 링크 안에 대기 메세지를 가질 수 없다. 송신자는 수신자가 메세지를 수신할 때 까지 기다려야 한다.
      • 유한 용량
        • 큐는 유한한 길이 n을 가진다. 즉, 최대 n 개의 메세지를 안에 들여 놓는다. 큐가 가득차지 않았다면 메세지는 큐에 놓이며 송신자는 대기 하지 않고 계속 실행한다. 링크가 만원이면 송신자는 봉쇄된다.
      • 무한 용량
        • 큐는 잠재적으로 무한한 길이를 가진다. 따라서 메세지들이 얼마든지 큐 안에서 대기할 수 있다. 송신자는 절대 봉쇄되지 않는다.

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

멀티 쓰레딩 Thread and Concurrency  (0) 2022.04.12
TIL : OS Thread  (0) 2021.11.19
TIL : OS IPC 시스템의 사례  (0) 2021.11.16
TIL : OS processes  (0) 2021.11.12
TIL : OS Structure  (0) 2021.11.12
Comments