데드락(Deadlock)이란?

JeeHyeok Lee·2022년 11월 18일
0

데드락이란?

데드락이란 시스템 자원의 요구에 대한 처리가 뒤엉킨 상태로 무한 대기상태에 빠지는 것을 말한다.

데드락의 발생조건

  • 상호 배제 (Mutual Exclusion) - 한 가지 자원을 한 번에 1개의 프로세스만 사용할 수 있는 것을 말한다. 사용중인 자원을 사용하기 위해서는 해당 자원에 대한 사용이 종료된 이후에 사용이 가능하다.
  • 점유 대기 (Hold and Wait) - 자원을 점유한 상태에서 다른 프로세스가 사용중인 자원에 대한 요청을 위해 대기하고 있는 상태를 말한다.
  • 비선점 (No Preemption) - 사용중인 자원을 강제로 탈취할 수 없다.
  • 순환 대기 (Circular Wait) - 대기 프로세스가 순환 형태로 존재한다.

데드락의 해결방법

데드락의 해결 방법으로는 예방, 회피, 탐지, 회복이 있다.

데드락 예방

데드락의 발생 조건이 발생하지 않도록 예방한다.

  • 상호 배제 예방 : 독점적으로 사용할 수 있는 자원을 없앤다. 모든 자원을 공유가 가능하도록 하면 상호 배제 조건이 발생하지 않는다.
    비선점 예방 : 자원에 대한 선점을 허용한다. 해당 프로세스를 이용할 수 없는 경우에는 대기한다.
    점유와 대기 예방 : 프로세스가 자원을 점유한 상태에서 다른 자원에 대한 요청을 대기할 수 없다. 한 번에 모든 자원을 점유하거나 어떠한 자원도 점유하지 못한다.
    원형 대기 예방 : 점유와 대기를 하는 프로세스들이 싸이클을 이루지 못하도록 막는다.

데드락 회피

데드락이 발생하지 않도록 상태를 예상하여 데드락이 발생되지 않을 상황이면 자원을 할당해준다. 데드락 예상을 위한 알고리즘으로는 은행원 알고리즘이 있다. 하지만 자원을 요청할 때마다 회피 알고리즘을 실행한다는 것은 오버헤드를 발생시키기 때문에 효율적이지 못하다.

데드락 탐지

데드락 상태가 발생할 수 있지만 자원 할당 그래프나 탐지 알고리즘을 통해 데드락을 유발하는 프로세스를 탐지한다.

데드락 회복

데드락 상태를 회복하기 위해 프로세스를 종료한다. 프로세스를 종료하는 방법은 두가지이다.

  • 데드락 상태에 빠진 모든 프로세스를 종료한다.
  • 데드락 상태가 회복될 때까지 순차적으로 프로세스를 종료한다.

0개의 댓글