본문 바로가기
컴퓨터공학

29. 교착 상태 해결방법

by 이면지91 2024. 11. 13.

 

● 교착 상태 해결 : 예방, 회피, 검출 후 회복

 

1. 교착 상태 예방

  • 애초에 교착 상태가 발생하지 않도록 교착상태 발생 조건(상호 배제, 점유와 대기, 원형 대기) 중 하나를 없애버리기
  • 점유와 대기를 없애기 위해 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
    ➤자원의 활용률을 낮출 수 있는 방식이다
  • 비선점 조건을 없애면? 선점이 가능한 자원에 한해 효과적
    ➤모든 자원이 선점 가능한 것은 아니다
  • 원형 대기 조건을 없애면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않는다
    ➤자원에 번호를 붙이는 것은 어려운 작업이며 어떤 자원에 번호를 붙이느냐에 따라 활용률이 달라진다

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

2. 교착 상태 회피

  • 교착 상태를 무분별한 자원 할당으로 인해 발생했다고 간주
  • 교착 상태가 발생하지 않을 만큼 할당하기
  • 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원 배분
  • 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
  • 안전 상태 : 교착 상태 없이 모든 프로세스가 자원을 할당받고 종료될 수 있는 상태 _ 안전 순서열이 있는 상태
  • 불안전 상태 : 교착 상태가 발생할 수도 있는 상태 _ 안전 순서열이 없는 상태

3. 교착 상태 검출 후 회복

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

'컴퓨터공학' 카테고리의 다른 글

28. 교착상태_데드락  (0) 2024.10.31
27. 동기화 기법  (0) 2024.10.30
26. 동기화  (0) 2024.10.30
25. CPU 스케줄링 알고리즘  (0) 2024.10.28
24. CPU 스케줄링  (0) 2024.10.26