-
교착 상태 (Dead lock)
- 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태
- 발생 조건
- 상호 배제 : 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다. 즉, 자원을 사용하는 프로세스에서 자원 점유를 해제 할 때까지 기다려야 한다.
- 점유 대기 : 할당된 자원을 가진 상태에서 점유를 해제하지 않고 다른 프로세스가 사용하고 있는 자원을 기다린다.
- 비선점 : 다른 프로세스가 자원의 사용을 끝낼 때 까지 기다려야만 한다. 즉, 뺏을 수 없다.
- 순환 대기 : 각 프로세스가 순환적으로 다음 프로세스가 필요로 하는 자원을 가지고 있다.
- 해결 방법
- 예방: 4가지 조건 모두를 만족되지 않도록 한다.
- 회피: 알고리즘을 잘 설계하여 데드락을 회피한다.
- 회복: 교착 상태 발생 시 해결한다.
- 무시: 회복 과정의 성능저하가 심해지면 스킵한다.
기아 상태 (Starvation)
- 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 특정 프로세스가 자원을 계속 할당받지 못하는 상태
- 우선순위를 통해 해결한다
- 우선순위를 지속적으로 변경한다.
- 오랫동한 자원을 할당받지 못한 프로세스의 우선순위를 높힌다.
- queue를 사용하고 timeout을 주어 주기적으로 프로세스를 변경한다.
- etc
-