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

유튜브 링크


진구

데드락을 완전 차단하는 건 저 네 가지 중 하나만 없애면 되겠군! 했지만 저 네 가지가 살아남은 이유가 있었다. 각자마다 해결할 수 없는 이유가 있었고 강의를 들어보니 납득도 됐다.

그래서 완전 차단은 어렵고 회피해야한다는데 그 방법은 내일 배운다!


세영

Deadlock 해결 방법

  • 데드락 발생 조건 (상호 배제 - 비선점 - 점유 대기 - 순환 대기) 중 하나만 제거해도 데드락은 절대 발생하지 않음

상호 배제 제거해보기

  • 모든 자원이 공유되어야 함
  • 현실적으로 불가능

비선점 제거해보기

  • 할당받을 수 없는 자원을 요청한 경우 기존 자원을 모두 반납하고 작업을 모두 취소해야 함
  • 현실적으로 불가능

점유 대기 제거해보기

  • 필요한 자원을 한 번에 모두 할당받아야 함
  • 자원의 낭비가 발생: 필요하지 않은 순간에도 가지고 있음
  • 무한 대기 현상이 발생: 다른 프로세스들은 현재 프로세스가 끝날 때 까지 기다려야 함
  • 현실적으로 불가능

순환 대기 제거해보기

  • 자원들에게 순서를 부여해서, 자원의 순서가 증가하는 방향으로만 자원 요청 가능
  • N번째 자원을 받은 후 M번째 자원을 요청할 수 있으므로 순환 대기가 발생하지 않음 (N < M)
  • M번째 자원만 필요한 경우에도 N을 기다려야 하므로 자원 낭비 발생
  • 현실적으로 불가능

다 현실적으로 불가능함 ㅠ