교착상태와 기아상태
교착상태란?
- 무한 대기 상태: 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에, 다음 단계로 진행하지 못하는 상태
1번차: a, b가 필요
2번차: b, c가 필요
3번차: c, d가 필요
4번차: a, d가 필요
교착상태 발생 조건
- 다음 네 가지 조건이 모두 성립될 때, 교착상태 발생 가능성이 있음
- 상호배제: 한 순간에 한 프로세스만이 자원을 사용할 수 있다.즉, 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수 없다.
- 점유대기: 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
- 비선점: 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
- 순환대기: 각 프로세스는 순환적으로 다음프로세스가 요구하는 자원을 가지고 있다.
교착상태 해별방법
- 예방으로 교착상태의 발생 조건 1~4 중에 하나를 시스템에서 허용하지 않는 것이다.
- 회피로 현재 자원 할당의 상태에 따라 안전하게 자원 할당을 결정하는 것이다.
- 발견으로, 교착상태가 발생하면 그것을 발견하고 회복하는 것이다.
기아상태란?
- 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태
기아상태 해결 방안
- 우선순위 변경
- 프로세스 우선순위를 수시로 변경해서, 각 프로레스가 높은 우선순위를 가질 기회주기
- 오래 기다린 프로레스의 우선순위를 높여주기
- 우선순위가 아닌, 요청 순서대로 처리하는 FIFO기반 요청큐 사용
교착상태와 기아상태
- 교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
- 기아상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미함