ch6_part3 : 64p부터 시작
Semaphore
Consumer : 1 → 0 → 1 (소비)
Producer : 0 → 1 → 0 (공급,생산)
Reader-Writer Problem
Reader
데이터를 읽기만 가능(여러 개의 Proc 가능)
Writer
데이터 갱신만 가능(한 개의 Proc 가능)
Read하는 동안 Write할 수 없고, 반대도 마찬가지
Semaphore
•
Ready-Queue 존재로 인해 → Busy Waiting 해결
•
Wake-up 순서는, 비결정적
◦
Starvation 문제
Eventcount / Sequencer
Starvation 문제 해결
번호표 개념
Sequencer
•
정수형 변수
•
초기화 : 0
•
감소X
•
ticket() 연산으로만 접근 가능
ticket(S)
•
연산이 호출된 횟수를 반환
•
선점 발생 X
Eventcount
•
정수형 변수
•
특정 사건의 발생 횟수 기록
•
read(E), advance(E), await(E,v) 연산으로만 접근 가능
read(E)
현재의 Eventcount 값 반환
advance(E)
E를 1 증가
기다리는 프로세스를 wake-up
await(E,v)
E < v 일때, E에 연결된 queue에 프로세스 전달 및 CPU 스케쥴러 호출
Producer-Consumer 문제를 통해, Eventcount & Sequencer 방식을 살펴보자
Producer는 버퍼에 자리가 있을때 생성 가능 | Consumer는 버퍼에 프로세스가 있어야 가능
장점
•
No Busy Waiting
•
Not Starvation
•
Semaphore보다 더 low-level control이 가능
◦
이게 뭔 말이지?
Monitor
•
공유 데이터와 CriticalSection의 집합
•
Conditional Variables
◦
wait(), signal() 연산자
Monitor 구조
•
Entry Queue
•
Mutual Exclusion
•
Information Hiding
•
Condition Queue
•
Signaler Queue
N-Buffer일때의 P-C prob
ch8(7장은 그냥 혼자 참고하는 자료용)
DeadLock
deadlock 상태?
•
프로세스가 “발생 가능성이 없는” 이벤트를 기다리는 경우
•
시스템 내에 deadlock에 빠진 프로세스가 있는 경우
Blocked / Asleep 상태
Deadlock VS Starvation
자원의 분류
선점 가능 여부에 따른 분류
할당 단위에 따른 분류
동시 사용 가능 여부에 따른 분류
재사용 가능 여부에 따른 분류
Deadlock과 자원의 종류
Deadlock Example(p17)
4번부터 데드락에 걸리게 된다 : 발생 가능성이 없는 이벤트를 기다린다!
이걸 아래에서 좀 더 자세히 표현해보자
Deadlock 표현
Graph Model
그래프 모델에서, 완전 사이클이 생기게 되면 데드락이 걸리게 된다라고 볼 수 있다!!
(사이클 발생 === 데드락 발생)






