Deadlock Resolution 1 (기본개념 및 분류)
데드락의 개념:
- Blocked / Asleep state => 프로세스가 특정한 이벤트, 자원을 기다리는 상태
- Deadlock state => 프로세스가 발생 가능성이 없는 이벤트를 기다리는 상태
그렇다면 Deadlock과 starvation의 차이는???
데드락은 asleep 상태에서 일어날 가능성이 zero를 기다리는 것이고, starvation은
ready상태에서, cpu를 기다리는 것 이다.
자원을 분류할 때 일반적으로 HW / SW 로 분류할 수 있으며, 이외 다른 분류법은,
- 선점 가능여부
- 할당 단위에 따른 분류
- 동시 사용가능 여부
- 재사용 가능 여부
4가지가 있으며, 각각의 특징은 아래와 같다.
선점 가능 여부에 따른 분류
=> cpu는 선점 당해도 돌아와서 다시 일을 할 수 있다(Context switching 때문)
이와 마찬가지로 메모리도 다시 돌아와도 사용 가능한 자원이 있다.(disk, drvie =>X)
할당 단위에 따른 분류
=>전쳋를 다 주는 total allocation resources인지(프로세서), 하나의 자원을 여러
조각으로 나눠 여러프로세스들에게 할당해주는지(메모리)
동시 사용 가능 여부
Exclusive allocation => 한 순간에 한 프로세스만 사용 가능(프로세서, 메모리)
shared allocation resource => 여러 프로세스가 동시에 사용 가능한 자원(프로그램)
재사용 가능 여부
SR(사용이 끝나면 다른 프로세스가 사용가능)인지, CR인지 여부.
이 중에서 데드락을 발생시킬 수 있는 자원의 형태는
Non-preemptible resources, Exclusive allocation resources, Serially reusable
resources 이렇게 3가지이며, 발생의 예는 다음과 같다.
이처럼 두가지 프로세스가 서로 다른 자원을 요구하면서 그 요구하고있는 자원을,
할당받고 있는 상태일때, 무한대기가 발생하며 이는 곧 데드락이라 할 수 있다.
이 데드락을 표현하는 방법에는 Graph Model 과 State transition model이 있다.