CS/OS

Deadlock Resolution 1 (기본개념 및 분류)

Coding Kitsune 2022. 2. 11. 11:01

데드락의 개념:

 

  • 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이 있다.