CS/운영체제
[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention
Damagucci-juice
2022. 8. 8. 10:01
데드락을 예방하거나 회피하는 방법은 크게 3가지가 있다
- 예방
- 회피
- 탐지 및 복구
이번 시간엔 예방에 대해 배워보자.
4가지 조건이 성립할 때 데드락이 발생한다.
이중 하나를 삭제하면 데드락은 발생하지 않는다.
- 자원의 배타적 사용
- 비선점 자원
- 자원을 하나 Hold 하고 다른 자원 요청
- Circular wait
예방은 4가지의 데드락 성립요건중에 하나를 제거하는 방법이다.
그 결과 deadlock 은 절대 발생하지 않는다.
1. 모든 자원을 공유 허용
- Exclusive use of resources 조건 제거
- 현실적으로 불가능
- CPU, memory, disk drive 등 공유하기 어려운 부분이 많다. 컴퓨터의 정의 부터 바꿔야할 거같다.
2. 모든 자원에 대해 선점 허용
- Non-preemptible resources 조건 제거
- 현실적으로 불가능
- 유사한 방법
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우. 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
- 이후 처음(또는 check-point) 부터 다시 시작
- 심각한 자원 낭비 발생 -> 비현실적
- 프로세스가 할당 받을 수 없는 자원을 요청한 경우. 기존에 가지고 있던 자원을 모두 반납하고 작업 취소
3. 필요 자원 한번에 모두 할당(Total allocation)
- Hold and wait 조건 제거
- 자원 낭비 발생
- 필요하지 않은 순간에도 가지고 있음
- 무한 대기 현상 발생가능
4. Circular wait 조건 제거
- Totally allocation 을 일반화 한 방법
- 자원들에게 순서를 부여
- 프로세스는 순서의 증가 방향으로만 자원 요청 가능
- 자원 낭비 발생
P1 - 1,2,3,4 의 자원이 필요하다.
P2 - 1,3 의 자원이 필요하다.
P1 이 1번 자원을 사용하고 있을 때, P2 가 1번 자원을 사용하지 못하는 경우가 발생할 수 있다.
결론
- Deadlock prevention 은 4개의 deadlock 발생 필요조건 중 하나를 제거
- Deadlock 이 절대 발생하지 않음
- 심각한 자원 낭비 발생
- Low device utilization
- Reduced system throughput
- 비현실적