교착상태(deadlock)
- 무한 대기 상태: 두개 이상의 작업이 서로 끝날때까지 기다린채 아무 작업도 실행하지 않고 있는 상태
교착상태 조건
- 상호배제(Mutual exclusion): 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권 요구
- 점유대기(Hold and wait): 프로세스가 할당된 자원을 가진 상태로 다른 자원을 기다림, 프로세스들이 서로 기다림
- 비선점(No preemption): 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 못뺏음
- 순환대기(Circular wait): 프로세스들이 다른 프로세스들이 다음단계에서 진행을 위해 필요한 자원을 동시에 가지고 있음(머리 끄댕이 잡고 너가 먼저 놔)
교착상태 예방
- 상호배제 조건 제거
- 한번에 모든 자원 점유 해제시켜 점유대기 조건 제거
- 선점 가능 기법을 부여해 비선점 조건을 제거
- 자원 점유 순서를 정해 순환대기 조건을 제거
교착상태 회피
- 교착상태 조건 1, 2, 3을 제거하면 비효율적으로 프로세스가 실행됨
- 4번 조건을 제거해줌
교착상태 발견과 회복
교착상태 발견
- 교착 상태를 점검해 교착 상태에 있는 프로세스와 자원 발견
교착상태 회복
- 교착 상태를 일으킨 프로세스 종료, 교착 상태 프로세스의 자원을 선점