임베디드 용어 사전
구조·RTOS

우선순위 역전

낮은 우선순위 태스크가 쥔 자원 때문에 높은 태스크가 밀리는 현상. 중간 우선순위가 끼면 무한정 늦어진다.

RTOS 의 대표적 함정이고, 화성 탐사선 사고로 유명해진 문제다.

L (낮음)  자원을 잡고 실행 중
H (높음)  같은 자원이 필요해 대기
M (중간)  자원과 무관하게 실행 → L 을 선점한다

결과: H 가 M 때문에 계속 기다린다. 우선순위가 뒤집혔다

해법 둘

우선순위 상속   자원을 쥔 L 의 우선순위를 잠시 H 만큼 올린다
               → M 이 L 을 선점하지 못하고, L 이 빨리 끝내고 자원을 놓는다

우선순위 상한   자원마다 최고 우선순위를 정해 두고, 잡는 순간 그 값으로 올린다

대부분의 RTOS 뮤텍스가 우선순위 상속을 지원한다. 그래서 공유 자원 보호에는 세마포어가 아니라 뮤텍스를 쓰라고 하는 것이다.

실무에서 알아채는 법

"높은 우선순위 태스크의 응답 시간이 가끔 크게 튄다" 가 신호다. 평균이 아니라 최악 지연을 봐야 보이므로, 측정할 때 최댓값을 함께 기록해야 한다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — RTOS — 선점과 블로킹을 되찾는다