우선순위 역전 (Priority Inversion)낮은 우선순위 태스크가 높은 우선순위 태스크를 지연시키는 현상. 공유 자원을 락으로 보호할 때 자연스럽게 발생한다. 지연 시간이 유계(bounded) 냐 무계(unbounded) 냐가 실시간성에 결정적이다.

기본형 — Bounded Priority Inversion

  • 이 락 를 점유 중
  • 가 릴리스되어 같은 를 요청 → 블록
  • 이 임계 영역을 끝내고 Unlock(S)을 하면 가 재개

의 블록 시간은 의 임계 영역 길이로 유계. 공유 자원을 쓰는 한 피할 수 없는 본질적 역전이다.

Unbounded Priority Inversion

이 락 를 쥔 상태에서 중간 우선순위 이 릴리스되면, 은 락과 무관하므로 을 선점한다. 은 진행하지 못하고, 이 락을 못 풀기 때문에 도 진행하지 못한다.

우선순위:  T_H > T_M > T_L
상태:      T_L 이 S 점유 중 → T_H 릴리스, Lock(S) 블록
           → T_M 릴리스, T_L 선점 → T_L 멈춤 → T_H 무한정 대기
  • 의 실행 시간은 락과 무관하므로 의 블록 시간이 들의 실행에 의해 계속 길어진다.
  • 이 여러 개면 의 블록 시간이 시스템 설계자가 경계 짓기 불가능한 수준으로 증가.

이것이 데드라인 보장 불가능한 이유다.

사례 — Mars Pathfinder (1997)

1997년 7월 4일 화성 착륙한 Mars Pathfinder 로버가 반복적으로 리셋되는 사건. 원인은 우선순위 역전으로 인한 데드라인 미스 → 감시 태스크(watchdog)가 시스템 전체를 리셋.

NASA의 해결: 랜더 소프트웨어를 패치하여 우선순위 상속(Priority Inheritance)을 활성화. PIP 상세는 리소스 공유 프로토콜 참고.

같이 보기