다섯 명의 철학자가 원탁에 앉아 있고, 각자의 앞에는 음식과 양옆에 포크가 하나씩 있다.

→ 여러 개의 Resources가 Process들 사이에 공유된다.
→ **Deadlock, Starvation(기아)**가 발생할 수 있다.
semaphore chopstick[5];
while (true) {
wait(chopstick[i]);
wait(chopstick[(i+1) % 5]); //두개씩 집는다.
...
/* eat for a while */
...
signal(chopstick[i]);
signal(chopstick[(i+1) % 5]); //젓가락을 내려놓는다.
...
/* think for awhile */
...
}
세마포어를 이용해 상호배제 문제를 해결했지만,
**Deadlock, Starvation(기아)**가 발생한다.
→ 만약 5명의 철학자가 동시에 배가 고파졌다. 5명이 왼쪽의 젓가락을 동시에 집고 오른쪽 젓가락을 집으려고 하면…?? ⇒ 젓가락이 없어서 Deadlock이 발생한다.
Deadlock에 대한 해결책