Machineboy空

교착 상태 해결 방법 - 예방,회피,검출 후 회복 본문

Computer/CS

교착 상태 해결 방법 - 예방,회피,검출 후 회복

안녕도라 2024. 1. 17. 11:15

교착 상태 해결(3)

  • 예방
  • 회피
  • 검출 후 회복

1) 교착 상태 예방

애초에 교착 상태가 발생하지 않도록

교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 없애버리기

 

  • 상호 배제를 없앤다면?
    • 모든 자원을 공유 가능하게 만든다?
    • 이론적으로는 가능하지만 현실적으로는 불가

  • 점유와 대기를 없앤다면?
    • 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
    • 단점: 자원의 활용률을 낮출 수 있는 방식
  • 비선점을 없앤다면?
    • 선점이 가능한 자원 (ex.CPU)에 한해 효과적
    • 모든 자원이 선점 가능한 것은 아니다
      • 프린터 등
  • 원형 대기를 없앤다면?
    • 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않는다
    • 한계
      • 자원에 번호를 붙이는 것은 어려운 작업
      • 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라짐
     

동그란 식탁이 아닌 일렬로 나란히 앉아있는 것과 같다

 

즉, 예방의 방법은

교착 상태가 발생하지 않음은 보장할 수 있으나 부작용이 따르는 방식

 


2) 교착 상태 회피

  • 교착 상태를 무분별한 자원 할당으로 인해 발생했다고 간주
  • 교착 상태가 발생하지 않을 만큼 조심 조심 할당하기
  • 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원 배분

알아야 하는 용어들

  • 안전 순서열: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
  • 안전 상태: 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태
    • 안전 순서열이 있는 상태
  • 불안전 상태: 교착 상태가 발생할 수도 있는 상태
    • 안전 순서열이 없는 상태

 

예시 상황

 

컴퓨터 시스템에 총 12개의 자원이 있다.

안전 순서열이 존재하는 상황

 

 

안전순서열 없는 상태

 

즉, 안전상태에서 안전 상태로 움직이는 경우에만 자원을 할당하는 방식이다.

항시 안전상태를 유지하도록 자원을 할당하는 방식

 

cf) 은행원 알고리즘

 


3)교착 상태 검출 후 회복

  • 교착 상태의 발생을 인정하고 사후에 조치하는 방식
  • 프로세스가 자원을 요구하면 일단 할당, 교착 상태가 검출되면 회복
  • 회복의 2가지 방법
    • 선점을 통한 회복
      • 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
    • 프로세스 강제 종료를 통한 회복
      • 1. 교착 상태에 놓인 프로세스 모두 강제 종료 ( but, 작업 내용을 잃을 위험)
      • 2. 교착 상태가 해결될 때까지 한 프로세스씩 강제 종료 ( but, 오버헤드 그렇지만 작업내용은 보존)

4) 교착 상태 무시

 

타조 알고리즘

어차피 드물게 발생하니까 덮어두고 가자.

수학자,과학자: 완벽함을 추구하니, 이게 무슨 방법이야 싶겠지만

엔지니어:문제 발생의 빈도수나 심각성에 따라 최대 효율을 추구해야함