프로세스가 실행되기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 서로 필요한 자원을 기다리기만 한다면, 어느 프로세스도 더 이상 진행할 수 없는 교착 상태가 발생합니다.
식사하는 철학자 문제는 교착 상태가 어떤 상황에서 발생하는지, 나아가 교착 상태를 어떻게 해결할 수 있는지를 엿볼 수 있는 가상의 시나리오입니다.

동그란 원탁에 5명의 철학자가 앉아 있습니다. 이 철학자들 앞에는 맛있는 식사가 있습니다. 철학자들 사이 사이에는 식사에 필요한 포크가 있습니다. 그리고 철학자들 앞에 있는 식사는 두 개의 포크로 먹을 수 있습니다.
철학자들은 아래와 같은 순서로 식사를 합니다.
언뜻 보면 위 순서에는 아무런 문제가 없어 보입니다. 실제로 1 ~ 2명의 철학자가 식사할 때는 아무런 문제가 없습니다. 하지만, 모든 철학자가 동시에 포크를 집어 식사를 한다면 어떨까요? 모든 철학자가 동시에 포크를 집어 식사를 시도하면, 아무도 식사를 할 수 없고 모두가 다른 철학자가 포크를 내려놓기를 기다리는 상황이 발생할 수 있습니다.
식사하는 철학자 문제에서 철학자는 프로세스, 포크는 자원, 생각하는 행위는 자원을 기다리는 것에 빗댈 수 있습니다. 그리고 포크는 한번에 하나의 프로세스만 접근할 수 있는 임계 구역에 빗댈 수 있습니다. 이렇게 일어나지 않을 사건을 기다리며, 진행이 멈춰버리는 현상을 교착 상태(Deadlock)라고 합니다.

교착 상태는 왜 발생할까요? 교착 상태가 발생하는 조건에는 4가지가 있습니다. 바로 상호 배제, 점유와 대기, 비선점, 원형 대기입니다. 하나라도 만족하지 않으면 교착 상태가 발생하지 않지만, 모두 만족될 때 교착 상태가 발생할 수 있습니다.
교착 상태는 마치 차로 꽉 찬 도로처럼 꼼짝도 못하는 상황입니다. 운영체제는 교착 상태를 해결하기 위해 예방, 회피, 탐지 및 회복을 사용합니다.