01 교착 상태의 개요

1. 교착 상태의 정의

2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태를 교착 상태(deadlock) 라고 한다.

교착 상태는 아사 현상과 비슷해 보이지만 차이점이 있다. 아사 현상은 운영체제가 잘못된 정책을 사용하여 특정 프로세스의 작업이 지연되는 문제이고, 교착 상태는 여러 프로세스가 작업을 진행하다 보니 자연적으로 일어나는 문제이다. 따라서 운영체제는 감시를 하다가 교착 상태가 발생하면 강압적으로 해결해야 한다. (직접적인 개입이 필요하다.)

2. 교착 상태의 발생

02 교착 상태 필요조건

1. 교착 상태 필요조건

교착 상태는 아래 네 가지 조건을 모두 충족해야 발생하고, 이 중 단 하나라도 충족하지 않으면 교착상태가 발생하지 않는다.

상호 배제와 비선점 조건은 임계구역과 관련이 있다. 임계구역을 보호하기 위해 잠금 장치를 사용하면 상호 배제와 비선점 조건이 보장되기 때문에 교착 상태가 발생할 수 있다.

03 교착 상태 해결 방안

1. 교착 상태 해결 방안

해결 방법 특징 비고
교착 상태 예방 교착 상태를 유발하는 네 가지 조건을 무력화한다. 실효성이 적어 잘 사용되지 않는다.
교착 상태 회피 교착 상태가 발생하지 않는 수준으로 자원을 할당한다. 자원을 얼만큼 할당해야 교착 상태가 발생하지 않는지 지표가 없다.
교착 상태 검출 자원 할당 그래프를 모니터링하여 교착 상태를 발견한다. 교착 상태가 검출되면 회복 단계로 이어진다.
교착 상태 회복 교착 상태를 검출한 후 해결한다. 가장 현실적인 방법이다.

2. 교착 상태 예방

교착 상태를 유발하는 네 가지 조건 중 하나라도 발생하지 않도록 막아 교착 상태를 처리하는 방법이다.