5명의 철학자가 원탁에 앉아서 식사를 한다. 철학자들 사이에는 포크가 하나씩 있고, 철학자는 두개의 포크를 양손에 쥐어야지만 식사를 한다. 모든 철학자들이 동시에 왼쪽 포크를 집어들었을 경우를 생각해보자. 오른쪽 포크는 다른 철학자가 집어들었을 것이므로, 모든 철학자는 식사를 시작하지 못하고 평생동안 대기를 할것이다.
잘못된 자원관리로 인해 둘 이상의 process가 무한하게 대기하는 현상을 말한다.
두 개 이상의 Concurrent
한 process/thread가 하나의 자원에 접근할 때, synchronization mechanism
이 없다면 서로 경쟁을 하면서 의도하지 않는 결과가 나올 수 있는데, 이러한 상황을 Race condition 이라고 한다.
공유변수 영역이라고도 하는 Critical Section은 paraller computing에서 둘 이상의 thread가 동시에 접근해서는 안되는 공유 자원을 접근하는 코드 부분을 말한다.
즉, Race Condition은 이러한 Critical Section을 관리를 잘 못할 경우 발생한다고 이해할 수 있다. 이러한 Race Condition을 해결하기 위해서는 다음 3가지 조건을 만족해야 한다.