5명의 철학자가 원탁에 앉아 식사를 한다. 철학자들 사이에는 포크가 하나씩 놓여 있고, 철학자들은 가운데 놓인 스파게티를 먹어야 한다.
이 문제에는 다음과 같은 규칙이 있다.
이와 같은 상황에서 모든 철학자가 자신의 왼쪽 포크를 집으면, 어떤 철학자도 오른쪽 포르클 집을 수 없고, 모든 철학자가 식사를 하지 못해 굶는 상황이 발생한다. OS 에서 여러 스레드 또는 프로세스가 자원을 공유할 때, 비슷한 상황이 발생 가능한데, 이러한 상태를 교착상태(DeadLock) 이라고 한다. 이때 포크는 공유 자원, 철학자는 프로세스 또는 스레드이다.
멀티 프로세스 또는 멀티 스레드와 같은 동시 실행시에 각 프로세스는 공유 자원을 이용해 임의의 로직을 수행하게 된다. 만약 프로세스 1이 변수 A를 사용하는 도중, 다른 프로세스가 A의 값을 변경하게 되면, 문제가 발생한다.
이렇게 둘 이상의 프로세스 또는 스레드가 동기화 없이 접근하려는 현상을 경쟁 상태(race condition) 라고 한다. 그리고 이러한 문제를 해결하는 것, 즉 서로가 알고있는 정보를 일치시키는 것을 **동기화(Synchronization)**라고 한다.
임계영역(Critical Section) 이란 공유 자원에서 문제가 발생하지 않도록 독점을 보장해주는 영역을 뜻한다. 임계영역에는 동시에 여러 프로세스 또는 스레드가 접근할 수 없고, 반드시 하나의 프로세스 또는 스레드만 진입 가능하다. 따라서 공유 자원을 독점해, 동기화를 유지할 수 있다.