CS/운영체제

[운영체제] 12. 교착 상태 해결 방법

JIN-JJS 2025. 4. 10. 19:12

1. 교착 상태 해결

1) 교착 상태 해결 방법

예방(Prevention): 교착 상태를 유발하는 네 가지 조건(상호 배제, 비선점, 점유와 대기, 원형 대기) 중 하나라도 제거하는 방식.
회피(Avoidance): 자원 할당을 조절하여 교착 상태를 피하는 방식.
검출(Detection)과 회복(Recovery): 자원 할당 그래프를 모니터링하여 교착 상태를 감지하고 이후 회복하는 방식.

 

 

 

2. 교착 상태 예방과 회피

1) 교착 상태 예방

하벤더(Havender)의 예방 방법

 필요한 자원을 한 번에 모두 요청해야 함.

 점유한 자원을 반납해야만 추가 요청 가능.

 자원을 순서대로 할당.

 

교착 상태 예방 방법

 상호 배제 예방: 공유 가능한 자원을 만들지만, 현실적으로 어려움.

 비선점 예방: 자원을 빼앗을 수 있도록 하되, 작업 상태를 잃을 가능성이 있음.

 점유와 대기 예방: 필요한 모든 자원을 미리 요청하도록 하지만, 자원 활용성이 떨어짐.

 원형 대기 예방: 자원에 숫자를 부여하여 순서대로 할당하지만, 유연성이 낮음.

 

2) 교착 상태 회피

• 교착 상태가 발생하지 않도록 자원 할당을 조절하여 안정 상태(Safe State) 유지.
은행원 알고리즘: 프로세스가 자원을 요청할 때, 시스템이 안전 상태인지 검사하여 할당 여부 결정.

 

- 안정 상태를 유지할 수 있는 경우에만 자원 할당.

- 모든 프로세스가 사용할 자원을 미리 선언해야 하며, 자원 낭비 가능성이 있음.

 

 

 

3. 교착 상태 검출과 회복

1) 교착 상태 검출

• 운영체제가 작업을 감시하며 교착 상태를 감지.
타임아웃 방식: 일정 시간 동안 응답이 없으면 교착 상태로 간주하고 처리.
자원 할당 그래프 이용: 그래프에 사이클이 존재하면 교착 상태 발생.

 

2) 교착 상태 회복

• 교착 상태를 유발한 프로세스를 강제 종료하여 해결.

- 모든 프로세스를 한 번에 종료하거나, 하나씩 선택하여 종료.

- 우선순위가 낮거나, 작업 시간이 짧거나, 자원을 많이 사용하는 프로세스를 우선 종료.
• 교착 상태 검출 알고리즘을 실행하는 빈도를 조정하여 성능을 최적화해야 함.


이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.