교착 상태(deadlock)란?

<aside>

두 개 이상의 프로세스(또는 스레드)가 서로가 가진 자원을 기다리며 무한히 대기하는 상태로,

시스템이 더 이상 진행되지 않고 멈춰버린 현상

위 정의만으로는 교착 상태가 무엇인지 알기 어렵다.

교착 상태 조건들로 교착 상태 정의하기

</aside>

📌 Key Points

<aside>

  1. 첫째, 교착 상태가 발생했을 때의 상황을 정확히 표현하기
  2. 둘째, 교착 상태가 일어나는 근본적인 이유 이해하기 </aside>

자원 할당 그래프

(교착 상태 발생 조건 파악 가능)

프로세스 D는 교착 상태가 아닌 CPU의 자원 할당을 대기하는 상태이다.

프로세스 D는 교착 상태가 아닌 CPU의 자원 할당을 대기하는 상태이다.

*→ 교착 상태가 일어난 **그래프의 특징은 원의 형태(사이클)*를 띄고 있다.

교착 상태 발생 조건

교착 상태는 어느 한 요인만으로 발생하는 것이 아니라, OS의 환경(비선점) 위에서 개발자의 설계(상호 배제)가 더해지고, 실행 시 상황(점유 대기, 원형 대기)이 맞아떨어질 때 발생한다.

1. 비선점 (Non-Preemption): OS의 기본 정책

: OS가 프로세스에게 할당된 자원을 강제로 뺏어올 수 없는 정책으로, 프로세스가 스스로 자원을 놓아줄 때까지 OS는 간섭하지 않습니다.