6-3 Process Synchronization

Copes·2022년 11월 4일
0

OS

목록 보기
12/15

Bounded-Buffer Problem(Producer-Consumer Problem)

Producer

  • 생산자는 버퍼의 빈 공간이 자원이 된다.

Consumer

  • 소비자는 버퍼의 데이터가 들어있는 공간이 자원이 된다.

Readers-Writers Problem

  • 한 Process가 DB에 Write 중일 때 다른 Process가 접근하면 안됨
  • read는 동시에 여럿이 해도 됨
  • solution
    • writer가 DB에 접근 허가를 아직 얻지 못한 상태에서는 모든 대기 중인 Reader들을 다 DB에 접근하게 해준다.
    • Writer는 대기 중인 Reader가 하나도 없을 때 DB 접근이 허용된다.
    • 일단 Writer가 DB에 접근 중이면 Reader들은 접근이 금지된다.
    • Writer가 DB에서 빠져나가야만 Reader의 접근이 허용된다.

Dining-Philosophers Problem

  • Deadlock이 발생할 수 있다. (모두 왼쪽 젓가락을 집으면 오른쪽 젓가락을 집을 수 없다.) - 아래 2번의 교착 상태

  • 해결 방안
    1. table에서의 philosophers의 수에 제약을 건다.
    2. philosophers가 2개의 포크 모두 사용 가능한 경우에만 포크를 집게한다.
    3. 비대칭적인 해결책 사용
      • 홀수 philosophers는 왼쪽 → 오른쪽
      • 짝수 philosophers는 오른쪽 → 왼쪽

Monitor

  • Semaphore의 문제점
    • 코딩하기 힘들다.
    • 정확성(correctness) 입증이 어렵다
    • 자발적 협력(voluntary cooperation)이 필요하다
    • 한번의 실수가 모든 시스템에 치명적 영향

Monitor

  • 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct
    • 프로시저(어떤 업무를 수행하기 위한 절차)를 통해서만 shared memory(공유 데이터)에 접근할 수 있다.
  • 모니터 내에서는 한 번에 하나의 프로세스만이 활동 가능
  • 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요 없음
  • 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 condition variable 사용

  • 프로세스 내부에서 버퍼를 가지므로, 외부 프로세스로 인한 문제 없음

참고 : https://gwpaeng.tistory.com/125#recentEntries

0개의 댓글