교착상태 (Deadlock)
- 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 기다릴 때 발생
- 제한된 자원 이용률을 높이고 시스템 효율성을 증가시키기 위해 사용하는 병행 처리 기술과 자원 공유에 따른 부작용
해결 기법
- 시스템이 교착상태가 되지 않도록 예방(방지) 하는 것
- 가능한 교착상태를 회피 하는 것
- 교착상태를 허용하되 교착상태에서 다시 회복 할 수 있게 하는 것
교착상태의 필요충분조건
- 교착상태 발생의 네 가지 필요 조건이 시스템 내에서 동시에 충족되어야 함
예방 기법
- 필요충분조건 중 최소 하나만이라도 발생하지 않도록 함
- 점유 및 대기: 프로세스의 실행에 앞서 필요한 자원을 모두 확보
- 비선점: 프로세스가 일부 자원을 점유하고 있으면서 다른 자원 요청 시, 즉시 할당할 수 없으면 프로세스가 현재 점유하고 있는 모든 자원을 해제한 후 대기
- 순환대기: 모든 자원 형태에 선형으로 순서를 부여하며, 각 프로세스는 오름차순으로만 자원을 요청할 수 있음
회피 기법
- 예방 알고리즘보다 덜 엄격
- 교착상태를 안정상태와 불안정상태로 구분하여 회피할 수 있음
- 교착상태 탐지 알고리즘을 호출
은행가 알고리즘 (Banker’s Algorithm)
- 교착상태를 회피하기 위한 방법
- 각 프로세스에 자원을 어떻게 할당할 것인가라는 정보가 필요하므로, 각 프로세스가 요청하는 자원 종류의 최대수를 알아야 함
회복기법
- 순환대기를 탈피하는 방법
- 프로세스를 한 개 이상 중지시키거나 교착상태에 있는 프로세스들의 자원을 선점하는 방법
기아상태
- 프로세스가 자신의 작업을 완료하지 못한 상태
- 교착상태를 예방하기 위해 자원을 할당할 때 발생(기다림)되는 결과
- 무기한 연기, 무기한 블록킹
- 작업이 결코 사용할 수 없고 계속 기다려야 하는 자원을 할당할 때 발생되는 결과
Comments