[운영체제] 6. 프로세스 동기화 (4) - 식사하는 철학자 문제
·
CS/운영체제
그림과 같이 음식과 포크가 주어져있다.이때 각 음식 앞에는 철학자들이 있고, 철학자들은 생각을 하거나 음식을 먹는다. 철학자들은 다음과 같은 순서로 식사를 진행한다. 1. 생각을 하다가 왼쪽 포크가 사용가능하면 집는다.2. 생각을 하다가 오른쪽 포크가 사용가능하면 집는다.3. 두 포크를 모두 집었다면 일정시간 식사를 한다.4. 식사를 마치고 오른쪽 포크를 내려둔다.5. 왼쪽 포크를 내려둔다.6. 1~5반복 이를 코드로 구현하면 아래와 같다. 이때 만약 모든 철학자가 동시에 식사를 시작하면 모두 동시에 왼쪽 포크를 집어들고 오른쪽 포크를 서로가 영원히 기다리므로 식사를 할 수 없게 된다. 이렇게 서로가 이미 점유한 자원에 서로 의존하여 모든 프로세스가 동작을 멈추는 상황을 '데드락(교착 상태)' 이라고..