[운영체제] 12. 교착 상태 해결 방법
1. 교착 상태 해결
1) 교착 상태 해결 방법
• 예방(Prevention): 교착 상태를 유발하는 네 가지 조건(상호 배제, 비선점, 점유와 대기, 원형 대기) 중 하나라도 제거하는 방식.
• 회피(Avoidance): 자원 할당을 조절하여 교착 상태를 피하는 방식.
• 검출(Detection)과 회복(Recovery): 자원 할당 그래프를 모니터링하여 교착 상태를 감지하고 이후 회복하는 방식.
2. 교착 상태 예방과 회피
1) 교착 상태 예방
• 하벤더(Havender)의 예방 방법
• 필요한 자원을 한 번에 모두 요청해야 함.
• 점유한 자원을 반납해야만 추가 요청 가능.
• 자원을 순서대로 할당.
교착 상태 예방 방법
• 상호 배제 예방: 공유 가능한 자원을 만들지만, 현실적으로 어려움.
• 비선점 예방: 자원을 빼앗을 수 있도록 하되, 작업 상태를 잃을 가능성이 있음.
• 점유와 대기 예방: 필요한 모든 자원을 미리 요청하도록 하지만, 자원 활용성이 떨어짐.
• 원형 대기 예방: 자원에 숫자를 부여하여 순서대로 할당하지만, 유연성이 낮음.
2) 교착 상태 회피
• 교착 상태가 발생하지 않도록 자원 할당을 조절하여 안정 상태(Safe State) 유지.
• 은행원 알고리즘: 프로세스가 자원을 요청할 때, 시스템이 안전 상태인지 검사하여 할당 여부 결정.
- 안정 상태를 유지할 수 있는 경우에만 자원 할당.
- 모든 프로세스가 사용할 자원을 미리 선언해야 하며, 자원 낭비 가능성이 있음.
3. 교착 상태 검출과 회복
1) 교착 상태 검출
• 운영체제가 작업을 감시하며 교착 상태를 감지.
• 타임아웃 방식: 일정 시간 동안 응답이 없으면 교착 상태로 간주하고 처리.
• 자원 할당 그래프 이용: 그래프에 사이클이 존재하면 교착 상태 발생.
2) 교착 상태 회복
• 교착 상태를 유발한 프로세스를 강제 종료하여 해결.
- 모든 프로세스를 한 번에 종료하거나, 하나씩 선택하여 종료.
- 우선순위가 낮거나, 작업 시간이 짧거나, 자원을 많이 사용하는 프로세스를 우선 종료.
• 교착 상태 검출 알고리즘을 실행하는 빈도를 조정하여 성능을 최적화해야 함.
이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.