● 교착 상태 해결 : 예방, 회피, 검출 후 회복
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 |