[OS] Lecture 7. Deadlock (2_5) - kibitzing/EnGrow GitHub Wiki

유튜브 링크

진구

데드락이 발생하려면 네 가지 요건이 모두 충족 되어야 함

  1. 자원의 종류가 non-preemptive (뺏을 수 없음)
  2. exclusive (누가 쓰고 있으면 다른 프로세스 못 씀
  3. hold and wait: 하나 잡고 다른 하나도 잡아서 하려고 함.
  4. circular wait: 그러다가 서로 꼬리를 물어버림 ㅎ

state transition model 재밌네.
저렇게 다 표현할 수 있으면 데드락 다 막을 수 있는걸까?
데드락이 아예 발생 안하게도 잘 만들 수 있는걸까?


세영

Deadlock Model

  • Graph model
    • 서로의 순환 참조 현황을 쉽게 파악할 수 있음
  • State transition model
    • 각 프로세스가 몇 개의 자원을 할당받았거나 요청하고 있는지에 대한 상태
    • 모든 상태가 다 있기 때문에 어느 상황에서 Deadlock이 나타나는지 알 수 있음

Deadlock 필요 조건

  • 상호 배제 - 비선점 - 점유 대기 - 순환 대기

    • 상호 배제:
      • 화장실은 한 칸에 한 사람만 사용할 수 있음
    • 비선점:
      • 화장실에 들어있는 사람은 강제로 끌어낼 수 없음
    • 점유 대기:
      • 화장실 안에 있는 사람이 휴지를 사용하기 위해 기다리고 있는 상태
    • 순환 대기:
      • 화장실 안에 있는 사람은 휴지가 필요한데, 화장실 대기자가 휴지를 쓰고있음

    → 화장실 안에 있는 사람은 나올 수 없고, 대기자는 들어갈 수 없음