[CS] 데드락 (DeadLock)

oy Hong·2024년 4월 12일

기술

목록 보기
12/23

데드락 (교착상태)


두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.

간단한 비유를 하자면 수저가 있고 두 사람이 각각 숟가락, 젓가락을 나눠 가졌다.
밥을 먹기 위해서는 수저를 가져야 하는데 이 둘은 각자의 도구를 놓을 생각이 없기에 서로 밥을 못먹게 되는 이야기.


데드락 발생 조건

아래 4개의 조건이 동시에 지켜지면 발생하게 된다.

  • 상호배제(Mutual exclusion) : 공유 자원에 대해 배타적인 통제권을 요구한다.
  • 점유대기(Hold and wait) : 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  • 비선점(No preemption) : 어떤 자원의 사용이 끝낼 때까지 그 자원을 뺏을 수 없다.
  • 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

데드락 방지

  • 데드락 발생 조건 4개 중 1개라도 사라지면 해결 가능.
  • 상호 배제의 경우는 반드시 지켜야하는 부분이며, 보통 순환대기를 방지하는데 초점이 맞춰있다.

0개의 댓글