본문 바로가기
운영체제

[운영체제] KOCW 6.2 - Ch6: Process Synchronization

by Lizardee 2023. 6. 9.
Monitor
Monitor

▶ Semaphore의 문제점

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

▶ Monitor

  • 공유데이터에 대한 접근을 책임진다 <-- by. monitor 내 함수
  • 공유데이터에 대한 lock/unlock이 필요 없다

Monitor

※ condition variable

: 자원 여부 판단 --> sleep/wakeup 결정해서 queue에 줄 세우고/queue에서 꺼내온다.

- 자원 개수 세는 역할x =/= P(empty), V(full)

  • x.wait(): suspended --> queue에 줄 세운다.
  • x.signal(): wakeup --> 자원 여분이 없어서 queue에 줄 세워져 있는 process를 queue에서 꺼내온다.

 

1) Bounded-Buffer Problem

※ Semaphore vs. Monitor

▶ Semaphore

  • P(empty), V(full): 생산자(빈)/소비자(찬) buffer 필요 --> count 변수
  • P(mutex), V(mutex): mutual exclusion을 보장하기 위한 lock/unlock

▶ Monitor

  • condition variable -- wait/signal: sleep/wakeup 결정
  • monitor에서 mutual exclusion을 보장하기 때문에, lock/unlock은 필요하지 않다.

1) Bounded-Buffer Problem

 

3) Dining Philosophers Problem
  • Problem: deadlock
  • Solution: 양쪽 젓가락을 모두 잡을 수 있을때만 젓가락을 잡을 수 있도록 한다.

3) Dining Philosophers Problem