식사하는 철학자 문제(dining philosophers problem):
교착 상태를 설명하기 위한 아주 고전적이고 재미있는 문제 상황이다.
이 유명한 문제는 교착 상태가 어떤 상황에서 왜 발생하는지, 나아가 교착 상태를 어떻게 해결할 수 있는지를 엿볼 수 있는 가상의 문제 시나리오이다.

위에 상황에서 모든 한 두 명의 철학자가 식사를 하는 데에 있어서는 딱히 문제가 발생하지 않을 것이다. 다만, 만약 모든 철학자가 식사를 하게 된다면 1번에서 모든 철학자가 왼쪽 포크를 집어들기에 집어들 오른쪽 포크가 없어 계속 생각만 하게 되므로, 교착 상태가 일어난다.
즉, **교착 상태(deadlock)**란 일어나지도 않을 사건을 기다리며 진행이 멈춰 버리는 현상을 말한다.
교착 상태를 해결하기 위해서는
자원 할당 그래프(resource-allocation graph):
어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능
어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능
첫째 프로세스는 원으로 자원의 종류는 사각형으로 표현한다.

둘째 사용할 수 있는 자원의 개수는 자원 사각현 내에 점으로 표현한다.

셋째, 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시한다.

넷째, 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시한다.

상호 배제(mutual exclusion):
점유와 대기(hold and wait):
비선점(nonpreemptive):
원형 대기(circular wait):
교착 상태를 해결하는 방법에는 크게 예방, 회피, 검출 후 회복 이렇게 세 가지가 있다.
안전 순서열(safe sequence):