멀티태스킹과 식사하는 철학자 문제

https://namu.wiki/w/%EC%8B%9D%EC%82%AC%ED%95%98%EB%8A%94%20%EC%B2%A0%ED%95%99%EC%9E%90%20%EB%AC%B8%EC%A0%9C

n명의 철학자가 스파게티를 먹고 있다고 가정한다.

철학자들은 잠자기, 먹기, 생각하기 셋 중 한 번에 하나만 할 수 있고 모든 철학자가 스파게티를 먹어야 한다.

식사하는 중에는 무조건 두 개의 포크를 사용해야 한다.

포크의 개수는 철학자의 인원수와 같으며, 포크는 각각의 철학자 사이에 놓이게 된다.

이 때 만약에 모든 철학자들이 동시에 자신의 왼쪽 포크를 잡게 된다면, 자기 오른쪽의 포크가 사용 가능해질 때까지 기다려야 하는데,

모든 철학자들이 기다리는 상태에 놓이게 된다.

이렇게 아무것도 진행할 수 없는 상태를 교착(deadlock)상태라고 한다.

멀티태스킹이 가능한 멀티쓰레드 환경일 때

사용자 레벨에서 Semaphore나 Mutex를 이용하여 한 쓰레드가 동작중일 때 다른 쓰레드가 CPU를 잡지 못하게 만들면 교착상태를 방지할 수 있다.

참고자료

https://twinw.tistory.com/97

https://bitsoul.tistory.com/156

https://artwook.tistory.com/17

멀티태스킹과 식사하는 철학자 문제

https://l-yohai.github.io/multitasking/

Author

Yohan Lee

Posted on

2020-08-03

Updated on

2021-08-22

Licensed under

댓글