뚜sh뚜sh

Process Synchronization3 본문

운영체제

Process Synchronization3

뚜sh뚜sh 2023. 6. 20. 17:26

Classical Problems of Synchronization

- Bounded-Buffer Problem(Producer-Consumer Problem)

- Readers and Writers Problem

- Dining-Philosophers Problem

 

 

 

Bounded-Buffer Problem(Producer-Consumer Problem)

 

 

 

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

- 앞의 solution의 문제점

  • Deadlock 가능성이 있다
  • 모든 철학자가 동시에 배가 고파져 왼쪽 젓가락을 집어버린 경우

- 해결 방안

  • 4명의 철학자만이 테이블에 동시에 앉을 수 있도록 한다
  • 젓가락을 두 개 모두 집을 수 있을 때에만 젓가락을 집을 수 있게 한다
  • 비대칭 : 짝수(홀수) 철학자는 왼쪽(오른쪽) 젓가락부터 집도록

 

 

 

Monitor

- Semaphore의 문제점

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

- 예

- 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct

- 모니터 내에서는 한번에 하나의 프로세스만이 활동 가능

- 프로그래머가 동기화 제약 조건을 명시적으로 코딩할 필요없음

- 프로세스가 모니터 안에서 기다릴 수 있도록 하기 위해 condition variable 사용

 

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

Deadlock2  (0) 2023.07.10
Deadlock1  (0) 2023.06.22
Process Synchronization2  (0) 2023.06.19
Process Synchronization1  (0) 2023.06.14
CPU Scheduling2  (0) 2023.06.14
Comments