🖥️ 교착 상태 해결 방법 🖥️
교착 상태 예방
- 애초에 교착 상태가 발생하지 않도록
- 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 제거
1. 상호 배제를 제거하는 경우
(현실적으로 어려움)
2. 점유와 대기를 없애는 경우 (자원을 할당 받은 상태에서 다른 자원을 대기하는 상태)
- 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
-> 자원의 활용률이 낮아지는 방식임
3. 비선점 조건을 없애는 경우
- 선점이 가능한 자원(ex. CPU)에 한해 효과적임
but 모든 자원이 선점 가능한 것은 아니다. (프린터는 선점 어려움)
4. 원형 대기 조건을 없애는 경우
but 자원에 번호를 붙이는 것이 어려운 작업이 될 수 있음.
어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라질 수 있음
위 방식들은 교착 상태가 발생하지 않음은 보장할 수 있지만, 부작용도 따르는 방식임
교착 상태 회피
교착 상태가 '무분별한 자원 할당으로 인해 발생' 했다고 간주.
- 교착 상태가 발생하지 않을 만큼만 조심 조심 할당하기
- 배분할 수 있는 자원의 양을 고려해서, 교착 상태가 발생하지 않을 만큼만 자원을 배분하기
1. 안전 순서열
- 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
2. 안전 상태
- 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태
(안전 순서열이 있는 상태)
3. 불안전 상태
- 교착 상태가 발생할 수도 있는 상태
(안전 순서열이 없는 상태)
- 안전 상태에서 안전 상태로 움직이는 경우에만 자원을 할당하는 방식
- 항시 안전 상태를 유지하도록 자원을 할당하는 방식
ex. 은행원 알고리즘
- 최소한 고객 한명에게 대출해줄 금액은 항상 은행이 보유하고 있어야 한다.
교착 상태 검출 후 회복
- 교착 상태의 발생을 인정하고, 사후에 조치하는 방식
- 프로세스가 자원을 요구하면 일당 할당, 교착 상태가 검출되면 회복
선점을 통한 회복
- 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
프로세스 강제 종료를 통한 회복
- 교착 상태에 놓인 프로세스 모두 강제 종료(작업 내역 손실 위험 존재)
- 교착 상태가 해결될 때까지 한 프로세스 씩 강제 종료(교착상태 발생 여부 하나씩 확인하느라 오버헤드 발생)
교착 상태 무시
문제 발생의 빈도수가 낮은 경우 그냥 무시..
불안전 상태라고 무조건 교착 상태가 발생하는 것은 아님.
교착 상태는 불안전 상태에서만 발생할 뿐.
즉 교착 상태가 불안전 상태에 속하는 것.
학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl
'Computer Science > 운영체제' 카테고리의 다른 글
12. 페이징 가상 메모리 관리 (0) | 2023.09.03 |
---|---|
11. 연속 메모리 할당(적합, 외부 단편화, 압축) (0) | 2023.09.03 |
9. 교착 상태(Dead Lock) (0) | 2023.09.02 |
8. 동기화 기법(뮤텍스 락, 세마포, 모니터) (0) | 2023.09.02 |
7. 동기화(synchronization) (0) | 2023.09.02 |