728x90
1. 교착 상태
두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태, 둘 이상의 스레드가 다른 스레드가 점유하고 있는 자원을 서로 기다릴때 무한대기에 빠지는 상황입니다.스레드일수도 있고 프로세스일 수도 있습니다.
2. 교착상태의 원인 (4가지 모두 성립)
- 상호 배제 : 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근 불가능
- 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
- 비선점 : 다른 프로세스가 점유중인 프로세스의 자원을 강제로 선점 불가
- 순환 대기: 대기중인 프로세스들이 사이클을 이룸, 서로가 서로의 자원을 요구하는 상황
3. 해결방법 4가지
1) 무시 : 아무조치 안함
2) 예방 : 4가지중 하나가 성립되지 않도록 미리 예방. 비용이 커서 비추천. 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계
3) 회피 : 자원할당 할때 자원할당 그래프, 은행원 알고리즘을 이용하여 데드락을 회피. 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 기능 여부를 파악하는 은행원 알고리즘을 씀
4) 회복 : 데드락이 발생 후 탐지하여 회복. 교착 상태가 발생하면 사이클이 있는지 살펴보고 이에 관련된 프로세스를 한개씩 지움
은행원 알고리즘 : 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할달하는 알고리즘
728x90