우선순위 역전

우선순위 역전(priority inversion)은 컴퓨터 과학에서 우선순위가 높은 작업이 우선순위가 낮은 작업으로 간접적으로 대체되어 작업에 할당된 우선순위가 효과적으로 역전되는 스케줄링 시나리오이다. 이는 우선 순위가 높은 작업이 우선 순위가 높은 작업에 의해서만 실행되는 것을 방지할 수 있다는 우선 순위 모델을 위반한다. 역전은 낮은 우선순위 작업과 중간 우선순위 작업이 선점한 리소스 경합이 있을 때 발생한다.

 공식화 
각각 높은 우선순위와 낮은 우선순위의 두 작업 H와 L을 생각해 보자. 둘 중 하나는 공유 리소스 R의 독점적 사용을 얻을 수 있다. L이 R을 획득한 후 H가 R을 획득하려고 시도하면 L이 리소스를 포기할 때까지 H가 차단된다. 잘 설계된 시스템에서 독점 사용 리소스(이 경우 R)를 공유하려면 일반적으로 L이 R을 즉시 포기하여 H(우선순위가 높은 작업)가 과도한 시간 동안 차단된 상태로 유지되지 않도록 해야 한다. 그러나 좋은 설계에도 불구하고 L이 R을 사용하는 동안 중간 우선순위의 세 번째 작업 M이 실행 가능하게 될 가능성이 있다. 이 시점에서 M은 L보다 우선순위가 높으며(M은 R에 의존하지 않기 때문에) L을 선점한다. L은 R을 즉시 포기할 수 없으며, 결과적으로 가장 높은 우선순위 프로세스인 H가 실행될 수 없게 된다. 즉, H는 M과 같이 우선순위가 낮은 작업으로 인해 간접적으로 예상치 못한 방해를 받는다.

 같이 보기 
 Nice (유닉스)
 선점 스케줄링

 외부 링크 
 Description from FOLDOC
 Citations from CiteSeer
 IEEE Priority Inheritance Paper by Sha, Rajkumar, Lehoczky
 Introduction to Priority Inversion by Michael Barr

분류:동시성 제어
분류:소프트웨어 버그
분류:임베디드 시스템