소피it블로그

[OS] 식사하는 철학자들 문제 본문

CS/운영체제

[OS] 식사하는 철학자들 문제

sophie_l 2022. 11. 3. 19:51

https://ko.wikipedia.org/wiki/%EC%8B%9D%EC%82%AC%ED%95%98%EB%8A%94_%EC%B2%A0%ED%95%99%EC%9E%90%EB%93%A4_%EB%AC%B8%EC%A0%9C

 

식사하는 철학자들 문제 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 원탁에 둘러앉은 다섯 명의 철학자와 다섯 접시의 스파게티, 그리고 다섯 개의 포크 식사하는 철학자들 문제는 전산학에서 동시성과 교착 상태를 설명하는 예

ko.wikipedia.org

https://starbirds.tistory.com/68

 

배고픈(식사하는) 철학자들 문제와 해결책 이해

배고픈 철학자의 문제는 운영체제시간에 언급된 적이 있었다. 공부에 신경쓰지 않던 때라 흘려 들었던 터라, 현재 공부하다가 관련된 내용이 나와서 간단히 정리한다. 여러 프로세스가 공유되

starbirds.tistory.com

위의 참고자료들을 토대로 작성

 

위키피디아에 따르면, 식사하는 철학자들 문제는 동시성과 교착상태의 문제를 보여주는 예시라고 한다.

 

상황은 이렇다.

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는 (기다렸다가) 오른쪽 젓가락을 들고 이어서 왼쪽 젓가락을 든다.

이렇게 교착상태가 해결된다.

 

완벽하게 이해하지 못했을 수도 있습니다. 문제가 있으면 피드백 주세요, 감사히 반영하겠습니다 :)