
교착상태 (Deadlock)
공유 자원 사용으로 여러 프로세스가 서로 자원을 기다리다 무한 대기에 빠져 아무 작업도 진행하지 못하는 상태
교착상태 발생 필요조건 (4가지)
- 상호배제: 한 자원은 한 번에 하나의 프로세스만 사용 가능
- 비선점: 자원을 강제로 빼앗을 수 없음
- 점유와 대기: 자원을 가진 상태에서 다른 자원을 기다림
- 원형 대기: 프로세스들이 원형 구조로 서로의 자원을 기다림
네 가지 조건 중 하나라도 깨지면 교착상태 발생하지 않음
교착상태 해결 방법
1. 회피
- 교착상태가 발생하지 않도록 자원 할당 조절
- 시스템은 항상 안정 상태를 유지해야 함
- 불안정 상태 = 교착상태로 이어질 가능성 있음
은행원 알고리즘
- 운영체제가 전체 자원의 수를 알고 있어야 함
- 프로세스는 필요한 최대 자원 수를 운영체제에 알려야 함
- 안정 상태를 유지하도록 자원 할당
- 단점: 계산 비용이 크고 비효율적
2. 검출
교착상태를 허용하되, 발생하면 찾아내어 복구
- 가벼운 검출
- 타이머 사용 → 일정 시간 동안 작업이 진행되지 않으면 교착상태로 판단
- 체크포인트에서 롤백
- 무거운 검출
- 자원 할당 그래프를 이용해 교착상태 탐지
- 운영체제가 자원 사용 상황을 지속적으로 추적
- 오버헤드가 크지만 정확도 높음