Deadlocks 2: Detection and Recovery, Ignorance

ㅎㅎ·2023년 7월 25일
0

운영체제, 반효경

목록 보기
14/19

Deadlock Detection and Recovery

  • deadlock이 발생했는지 확인하고 복구
  • 자원 할당 그래프를 이용하여 찾기, 자원을 없애고 프로세스로만 간단히 표현 가능
  • 자원 당 instance가 1개 일때 활용
  • 자원 당 instance가 여러개 일때 사용하는 것을 사용하여 찾아도 됨, subset에 불과함
  • 싸이클 확인은 O(N^2)로 확인가능(BFS)

  • 자원이 여러개 일때
  • Avoidance와 달리 최대한 낙관적으로 생각하여 deadlock이 발생하는지 판단
  • 현재 요청된 것이 없는 프로세스로부터 자원이 반납될 거라고 가정
  • 반납됐을 때 다른 프로세스들의 요청을 수락할 수 있는가
  • 가능하면 SAFE하기 때문에 deadlock X
  • 좌측은 deadlock X, 우측은 deadlock O
  • 가용자원으로 처리 가능한 게 있는지 확인 -> 요청이 없는 프로세스들이 반납한다고 가정했을 때 추가 자원 확인 -> 요청 처리 가능한 sequence가 있는지 확인

Recovery

  • Process termination
    • Abort all deadlocked processes
    • Avort one process at a time until the deadlock cycle is eliminated
  • Resource Preemption
    • 비용을 최소화할 victim의 선정
    • safe state로 rollback 하여 process를 restart
    • Starvation 문제
      • 동일한 프로세스가 계속해서 victim으로 선정되는 경우
      • cost factor에 rollback 횟수도 같이 고려

Deadlock Ignorance

  • Deadlock 일어나지 않는다고 생각하고 아무런 조치도 취하지 않음
    • deadlock이 매우 드물게 발생하므로 deadlock에 대한 조치 자체가 더 큰 overhead일 수 있음
    • 만약 시스템에 deadlock이 발생한 경우 시스템이 비정상적으로 작동하는 것을 사람이 느낀 후 직접 process를 죽이는 등의 방법으로 대처
    • UNIX, Windows 등 대부분의 범용 OS가 채택
profile
Hello World

0개의 댓글