[전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)


[전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)

Dining Philosopher Problem 식사하는 철학자 문제는 다익스트라 선생님께서 논문을 통해 제시하신 대표적인 데드락 상황이다. 위와 같이 원형의 탁자에 5개의 포크가 놓여있다. 스파게티를 먹기 위해서는 2개의 포크를 사용해야한다는 규칙이 있다. 이 상황에서 5명의 철학자가 포크를 한 개씩 잡고 데드락에 빠지면 모두가 굶어 죽는 starvation 이 발생한다..! 철학자가 다 굶어죽는 c++ 코드는 다음과 같다. 더보기 #include #include #include #include #define NUM 5 sem_t forks[NUM]; // forks void *philosopher(void*); int main(){ pthread_t threads[NUM]; for(int i=0; i


원문링크 : [전공생이 설명하는 OS] 동기화 - (6) 식사하는 철학자 문제 (코드 포함)