Priority Inversion & Priority Inheritance

Priority Inversion

    • A 스레드는 C의 작업이 끝날때 까지 lock을 얻지 못해 기다리는데 C 작업 중 B에 의해 선점당하면서 A는 더 오랜 시간을 기다려야 한다.
    • A 스레드가 B 스레드보다 우선 순위가 높은 상황인데도 위와 같은 상황에서 우선 순위가 더 낮은 B 스레드가 먼저 처리되는 불합리한 상황이 벌어진다.
    • 이러한 점을 보강하기 위하여 Priority Inheritance Protocol이 개발되었다.

priority_inversion

 

Priority Inheritance

  • Priority Inversion 상황과 다르게 A 스레드가 lock을 얻다 실패하는 경우 현재 해당 리소스 lock을 얻어 동작하는 스레드 C의 우선 순위를 A 스레드와 같이 높은 우선 순위로 상속시키면서 그 보다 낮은 우선 순위의 B 스레드에게 선점되지 않게 막는다. 결국 A 스레드는 보다 빠르게 공유된 S 자원의 할당을 받아 처리할 수 있다.

priority_inheritance

priority_inversion2

 

참고

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.