/////
Search
📝

5월30일(목)

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

그래프 모델에서, 완전 사이클이 생기게 되면 데드락이 걸리게 된다라고 볼 수 있다!! (사이클 발생 === 데드락 발생)