운영체제의 Deadlock 개념과 관련한 식사하는 철학자 문제 해결 과정을 (1)Multi-threading, (2)Multi-processing으로 시뮬레이션한 프로젝트입니다.


Deadlock 발생 필요조건

  1. Mutual Exclusion -> shm 을 ME 못하게하는 것은 불가능
  2. Hold&Wait -> 알고리즘으로 해결
  3. No preemption -> 쉽게 구현하기 힘들다.
  4. Circular Wait -> 문제 자체가 Circular wait가 일어날 수 밖에 없는 상황이라 바꿀 수 없는 경우도 존재한다.

4가지 조건을 모두 만족해야 deadlock 에 빠짐 어느 하나라도 만족시키지 않도록 하면 deadlock에 빠지지 않는다.


식사하는 철학자 해결 방법

방법 1

왼쪽 포크 들고, 오른쪽 포크 들고, 식사하고, 왼쪽 포크 내려놓고, 오른쪽 포크 내려놓는다.