OS #24 교착상태와 기아상태

underlier12·2020년 4월 6일
1

OS

목록 보기
24/35

24. 교착상태와 기아상태

Deadlock

교착상태란 무한 대기 상태를 뜻하며 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 다음 단계로 진행하지 못하는 상태를 말한다.

교착상태 발생조건

다음 네 가지 조건이 모두 성립할 때 교착상태 발생 가능성이 있다.

  • 상호배제(Mutual exclusion) : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다.
  • 점유대기(Hold and wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  • 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
  • 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

따라서 위의 한 조건이라도 성립하지 않으면 교착상태가 일어나지 않도록 할 수 있다.

Starvation

특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태를 말한다.

Deadlock vs Starvation

  • 교착상태 : 여러 프로세스가 동일 자원 점유를 요청할 때 발생
  • 기아상태 : 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 발생

기아상태 해결 방안

기아상태는 주로 다음과 같은 방법으로 해결한다.

  • 프로세스 우선순위 수시 변경을 통해 각 프로세스 높은 우선순위를 가지도록 기회 부여
  • 오래 기다린 프로세스의 우선순위 높이기
  • 우선순위가 아닌 요청 순서대로 처리하는 요청큐 사용
profile
logos and alogos

0개의 댓글