[OS] 프로세스 간 협력

RepDay1·2023년 2월 27일
0

운영체제

목록 보기
4/8

프로세스 간 협력

  • 독립적 프로세스 : 프로세스는 각자의 주소 공간을 가지고 수행되므로, 원칙적으로는 하나의 프로세스는 다른 프로세스에 영향x
  • 협력 프로세스 : 프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스 수행에 영향을 미칠 수 있음
  • 프로세스 간 협력 메커니즘(IPC : Interprocess Communication)
    • message passing : 커널을 통해 메세지 전달
    • shared memory : 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 메커니즘
    • Communication 커널을 통해서 수행됨
    • 참고) thread : 스레드는 사실상 하나의 프로세스이므로, 프로세스간의 협력으로 보기는 어려우나, 동일한 프로세스를 구성하는 스레드들 간에는 주소 공간을 공유하므로 협력 가능

image

Message Passing

  • Message system : 프로세스 사이에 공유 변수(shared variable)를 일체 사용하지 않고 통신하는 시스템
  • Direct Communication : 통신하려는 프로세스의 이름을 명시적으로 표시
  • Indirect Communication : mailbox 또는 port를 통해 메세지를 간접 전달
  • Blocking send/recevie : sender는 receiver가 메세지를 완전히 받을떄까지, receiver는 메세지가 완전히 available할때까지 기다리는(block되는) 방법,
  • Non-blocking : block되지않고, 송수신 결과랑 상관없이 그냥 쭉 실행됨, 메세지 송수신이 비동기적으로 될 수 있음

image

  • 흔히 말하는 동기는 Sync+Blocking 형태, 비동기는 Async+Non-Blocking 형태
  • Blocking / non blocking : 제어권을 안넘기는지 / 넘기는지
  • Sync / Async : 결과를 돌려줄 떄 결과와 순서가 중요한지/안중요한지

Shared Memory

  • Producer - Consumer Problem : 생산자는 정보를 생산하고 소비자는 정보를 소비하는 모델

    • ex ) : 컴파일러가 어셈블리 코드를 생산하면, 어셈블러는 어셈블리 코드를 소비하고 기계어, 웹 서버가 html파일을 생산하고 브라우저에 보내면 브라우저는 그걸 화면에 출력
  • shared-memory를 사용한 방법

    • 생산자와 소비자가 병렬적으로 실행되게 해줌
    • 버퍼를 통해 가능하게함, 생산자가 버퍼를 채우고 소비자가 버퍼를 비움
    • 즉 버퍼를 shared memory로 만들면됨, 두 프로세스가 공유하는 메모리를 버퍼로 사용

Reference
주니온 교수님 유튜브 채널
반효경 교수님 KOCW 운영체제
운영체제 아주 쉬운 세 가지 이야기(OSTEP 번역서)

0개의 댓글