728x90

1 교착 상태의 정의

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

교착 상태는 아사 현상과 비슷해 보이지만, 아사 현상은 운영체제가 잘못된 정책을 사용하여 특정 프로세스의 작업이 지연되는 문제이고, 교착 상태는 여러 프로세스가 작업을 진행하다 보니 자연적으로 일어나는 문제이다.

 

2 교착 상태의 발생

교착 상태는 시스템 자원, 공유 변수(또는 파일), 응용 프로그램 등을 사용할 때 발생할 수 있다.

 

시스템 자원

다른 프로세스와 공유할 수 없는 자원을 사용할 때 교착 상태가 발생한다. 프린터, CD 레코더, 스캐너 등을 동시에 사용할 수 없는 시스템 자원을 할당받은 후 양보하지 않는 경우가 예시이다.

 

공유 변수

한 변수를 할당받은 상태에서 다른 변수를 기다리면 교착 상태가 발생한다.

 

응용 프로그램

데이터베이스 같은 응용 프로그램에서도 발생할 수 있다. 데이터베이스는 일관성을 유지하기 위해 잠금을 사용하는데, 이때 교착 상태가 발생할 수 있다.

 

3 자원 할당 그래프

자원 할당 그래프는 프로세스가 어떤 자원을 사용중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것이다.

프로세스는 원으로, 자원은 사각형으로 표현하고 여러 프로세스가 하나의 자원을 동시에 사용할 수 있는 경우 프로세스 수를 사각형 안에 작은 동그라미로 표현한다.

 

식사하는 철학자 문제

원형의 식탁에서 4명의 철학자가 식사할 때, 왼쪽에 있는 포크를 잡은 후에 오른쪽에 있는 포크를 잡아야지만 식사가 가능하다고 해보자. 각자 왼쪽의 포크를 잡고다서 오른쪽 포크를 잡으려 하지만, 다른 철학자가 집었기 때문에 식사를 할 수 없다는 교착 상태의 예시로 유명한 문제이다.

728x90

+ Recent posts