소피it블로그
[OS] 식사하는 철학자들 문제 본문
https://starbirds.tistory.com/68
위의 참고자료들을 토대로 작성
위키피디아에 따르면, 식사하는 철학자들 문제는 동시성과 교착상태의 문제를 보여주는 예시라고 한다.
상황은 이렇다.
5명의 철학자가 원탁에 둘러앉아 식사를 하려고 한다. 각 철학자의 앞에는 음식이 놓여있고, 양 옆으로 젓가락이 한짝씩 놓여있다. 철학자가 식사를 하려면 양 쪽의 젓가락을 다 사용해야 한다.
이때 모든 철학자가 자신의 왼쪽 젓가락을 먼저 집은 후 이어서 오른쪽 젓가락을 집으려고 한다면, 오른쪽의 젓가락은 이미 다른 철학자가 가져가버린 상태이기 때문에 그 누구도 식사를 할 수 없는 교착상태에 빠지게 된다.
다익스트라의 해결책은 이렇다.
각 철학자를 P1, P2, P3, P4, P5라고 하고, 각 철학자의 왼쪽 젓가락을 f1, f2, f3, f4, f5라고 하자. P1부터 P4까지 4명의 철학자는 전부 왼쪽 젓가락을 먼저 집어든다.
즉 현재는 다음과 같은 상황이다.
P1 - f1
P2 - f2
P3 - f3
P4 - f4
위에서 말했듯 여기에서 P5가 f5를 들어버리면 그 누구도 식사를 할 수 없다. P5는 우선 놔두고 나머지 4명의 철학자들이 차례대로 오른쪽 젓가락을 집게 해보자. 그러면 P4는 f4와 f5를 가지고 식사를 먼저 마칠 수 있을 것이다. 이어서 P3도 f3와 f4를 가지고 식사를 할 수 있으며, P2와 P1 역시 마찬가지로 순서대로 식사를 마칠 수 있다. P1이 식사를 끝마친 후 f1이 free해지면 P5는 그제서야 오른쪽 젓가락인 f1을 집어들고, 이어서 왼쪽 젓가락인 f5를 집어든 후 식사를 한다.
즉, P1부터 P4까지는 왼쪽 젓가락을 먼저 든 후 오른쪽 젓가락을 든다. P5는 (기다렸다가) 오른쪽 젓가락을 들고 이어서 왼쪽 젓가락을 든다.
이렇게 교착상태가 해결된다.
완벽하게 이해하지 못했을 수도 있습니다. 문제가 있으면 피드백 주세요, 감사히 반영하겠습니다 :)
'CS > 운영체제' 카테고리의 다른 글
[OS] 임계영역 해결 기법 - 뮤텍스(Mutex)와 세마포어(Semaphore) (1) | 2022.11.03 |
---|