학습목표
- 교착 상태의 정의와 발생 원인을 이해한다
- 교착 상태가 발생하는 네 가지 필요조건을 알아본다
- 교착 상태 해결 방법과 그 실효성을 알아본다
교착 상태의 개요
정의
- 두 개 이상의 프로세스가 서로 상대방의 작업이 끝나기를 무한히 기다리는 상황을 말합니다. 교착 상태가 발생하면 관련된 프로세스들은 더 이상 진행할 수 없게 되어 시스템이 멈추게 됩니다.
문제가 되는 이유
1. 시스템 효율성 저하: 교착 상태에 빠진 프로세스들은 자원을 점유한 채 무한히 대기하므로, 자원 활용도가 낮아지고 시스템 전체의 성능이 저하됩니다.
2. 응답 불가 상태: 교착 상태가 해결되지 않으면 관련된 프로세스들은 더 이상 작업을 진행할 수 없어 사용자 요청에 응답할 수 없게 됩니다.
3. 시스템 장애: 교착 상태가 발생한 시스템은 정상적으로 작동하지 않으므로, 서비스 중단이나 데이터 손실 등의 심각한 문제를 초래할 수 있습니다.
발생 상황
1. 자원의 독점적 사용: 한 프로세스가 자원을 독점하고 있는 동안 다른 프로세스가 해당 자원을 요청하는 경우.
2. 자원의 비선점성: 프로세스가 자원을 할당받은 후 스스로 반납하기 전까지 다른 프로세스가 해당 자원을 강제로 가져갈 수 없는 경우.
3. 자원의 순환적 대기: 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 경우.
교착 상태 필요조건
- 상호 배제(Mutual Exclusion): 한 번에 한 프로세스만 자원을 사용할 수 있어야 합니다.
- 점유 대기(Hold and Wait): 자원을 가진 프로세스가 다른 자원을 기다리는 동안 보유 자원을 반납하지 않아야 합니다.
- 비선점(No Preemption): 프로세스가 자원을 강제로 빼앗길 수 없어야 합니다.
- 순환 대기(Circular Wait): 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있어야 합니다.
교착 상태 해결 방법
- 예방(Prevention): 교착 상태 발생 조건 중 하나를 제거하여 교착 상태를 예방합니다.
- 회피(Avoidance): 자원 할당 시 시스템의 안전 상태를 유지할 수 있는 경우에만 자원을 할- 당합니다. 은행원 알고리즘 등이 사용됩니다.
- 탐지 및 회복(Detection and Recovery): 교착 상태를 탐지하고 프로세스를 종료하거나 자원을 선점하여 해결합니다.
- 무시(Ignorance): 교착 상태를 무시하고 발생하지 않을 것으로 가정합니다.
교착 상태 복구 방법
- 프로세스 종료(Process Termination): 교착 상태에 연루된 프로세스를 일부 또는 전부 종료합니다.
- 자원 선점(Resource Preemption): 교착 상태의 프로세스로부터 자원을 선점하여 다른 프로세스에 할당합니다.