May 15, 2022
2개 이상의 프로세스가 다른 프로세스 작업 끝나기만 기다리면서 진행 못하고 있는 상태
아사starvation와 교착dead lock의 차이
starvation: 운영체제 잘못으로 프로세스가 계속 지연
dead lock: 여러 프로세스가 작업 진행하면서 별도의 오류 없이도 자연적으로 발생
아래의 4가지 조건이 모두 충족시 교착 상태 발생
상호배제: 한 프로세스 처리 중에는 다른 프로세스에서 접근 불가한 배타적인 자원 사용시
비선점: 한 프로세스가 사용하는 자원을 다른 프로세스에서 빼앗을 수 없을 때
점유, 대기: 다른 프로세스가 필요로 하는 자원을 점유하고 있으면서도 다른 자원을 대기하고 있을 때
원형 대기: 점유와 대기하는 프로세스들의 관계를 나타낸 자원할당그래프가 원형일 때
회피: 자원 할당하다가 교착 상태될 가능성 보이면 할당 멈추고 지켜봐서 조절
검출, 회복: 자원할당 그래프 모니터링 → 교착상태 발생 → 회복 단계 진행
검출: 일정 시간동안 작업 진행안된 프로세스를 교착상태로 간주
가벼운 교착 상태 검출: 타임아웃 이용 /예:’프로그램이 응답이 없어 종료합니다’ alert
DB에서는 타임아웃으로 데이터 일관성 깨질 때를 대비해서 체크포인트와 스냅샷으로 시간과 데이터를 저장하고, 타임아웃 발생시 롤백으로 시스템을 체크포인트 이전 시점으로 되돌림
무거운 교착상태 검출: 자원할당그래프 이용