Search
moon
sun
📝

6월3일(월)

ch8 : Deadlock 부터 시작합니다

Deadlock 상태

프로세스가 발생 가능성이 없는 이벤트를 기다리는 경우

자원의 분류

일반적 분류

하드웨어와 소프트웨어 성능에 따라 데드락이 발생할 수도, 안 할 수도 있다

다른 분류

•
선점 가능 여부에 따른 분류
◦
선점 가능 자원
◦
선점 불가능 자원
•
할당 단위에 따른 분류
◦
Total Allocation Resources
◦
Partitioned Allocation Resoucres
•
동시 사용 가능 여부에 따른 분류
◦
Exclusive Allocation Resources
◦
Shared Allocation Resources
•
재사용 가능 여부에 따른 분류
◦
Serially Reusable Resources
◦
Consumable Resources

Deadlock이 발생 가능한 자원의 종류

•
Non-Preemptible 자원(Resources)
•
Exclusive Allocation 자원
•
Serially Reusable 자원
•
CR을 대상으로 하는 데드락 모델
chapter objectives : 목표

System Model

자원을 사용하는 단계는 세 단계
요청 단계 사용 단계 : 프로세스가 임계구역에 들어가는 단계 방출 단계

Deadlock in Multithreaded Application

데드락이 발생한 상황

Deadlock Characterization

데드락이 생기는 상황 : 4가지

자원 성격의 경우

•
Mutual Exclusion
•
Hold & Wait(Partial Allocation)

시스템 성격의 경우

•
No Preemption
•
Circular Wait

Resource Allocation Graph

1.
Request edge
•
그래프에서 엣지 표현이 P → R 인 경우
2.
Assignment edge
•
그래프에서 엣지 표현이 R → P 인 경우

데드락을 다루기 위한 방법들

3가지 모두 비현실적이긴 합니다(이상적인 경우들)
•
Prevention
◦
4개의 데드락 발생 필요조건 중 하나를 제거한다
▪
4가지 조건이란? 1. Exclusive use of Resources 2. Non-preemptible Resources 3. Hold & Wait (Paritial allocation) 4. Circular Wait
▪
데드락도 발생이 쉬운게 아닌게, 윗 4가지 중 하나라도 충족 안 하면 발생X

그럼 어떤 방식?

▪
필요 자원들을 한번에 모두 할당(Total Allocation)
▪
Circular Wait 조건 제거
→ 이 방식들은 현실적으로는 불가능하다
•
Avoidance : ch8_part2 부터 이어서 진행
◦
시스템의 상태를 계속 감시
◦
데드락 상태가 될 가능성이 있느 자원할당 요청 보류
◦
시스템을 항상 safe state로 유지

그럼 어떤 방식?

◦
프로세스 수가 고정
◦
자원의 종류와 수가 고정
◦
프로세스가 요구하는 자원 및 최대 수를 미리 알고 있다
◦
프로세스가 자원을 사용한 후 반드시 반납
→ 비현실적이다..
Avoidance 알고리즘을 작성한 사람
다익스트라 : Banker's Algorithm
Habormann's Algorithm : 다익스트라 알고리즘 확장판
•
여러 종류 자원 고려
•
다익스트라 알고리즘은 1개의 단일유닛
•
하버만 알고리즘은 n개의 유닛
•
Detection & Recovery (← 가장 현실적)
ch8_part3 끝