지노랩 /JinoLab
RTOS vs GPOS: 우선순위 역전(Priority Inversion) 개념 본문
1. 우선순위 역전이란?
- 정의: 더 낮은 우선순위 태스크가 잠금(Lock) 등을 확보하고 있을 때,
중간 우선순위 태스크가 CPU를 점유하여 높은 우선순위 태스크의 실행을 차단하는 현상 - 구조:
- 저(低)우선순위 태스크 L 은 공유 자원(예: 뮤텍스)을 획득해 작업 중
- 중(中)우선순위 태스크 M 가 실행 준비(Ready) 상태가 되어 L을 선점
→ L은 CPU에서 빠지고, 공유 자원은 여전히 L이 잠금 상태 - 이 사이 고(高)우선순위 태스크 H 도 실행 준비
→ 하지만 H는 “공유 자원 대기” 상태가 되어 즉시 실행할 수 없고,
공유 자원을 가진 L 역시 CPU를 되찾지 못해 깨어나지 못함 - 결과적으로, 우선순위가 한참 낮은 L이 “M 때문에” 실행되지 못해 공유 자원을 놓아줄 수 없고,
H도 “L 때문에” 대기 → 우선순위가 중간(M)에게 가로막혀 버림
시간축 ───────────────────────────────▶
┌──────────────────────────────────────┐
│ [낮(L)] 공유 자원 잠금 │ ← L이 공유 자원 점유
└┬─────────────────────────────────────┘
│ Low 우선순위 실행
│
│ ┌────────────────────────────────────────┐
│ │ [중(M)] CPU 선점 │ ← M이 Ready→실행, L preempted
│ └─────┬──────────────────────────────────┘
│ │ Medium 우선순위 실행
│ │
│ ┌────┴──────────────────────────┐
│ │ [고(H)] High 실행 준비 (공유 자원 대기) │ ← H도 Ready
│ └────┬──────────────────────────┘
│ │
│ └────────────────────CPU idle (H 대기)
│
└────────────────────────────────────────────
- 이때, 고(高)우선순위 H → 중(中)우선순위 M → 저(低)우선순위 L 순서인 논리적 우선순위가,
실제로는 M→L→H 순으로 실행되어야 하고, H보다 우선순위가 낮은 M이 H의 진행을 방해함 → “Priority Inversion”
2. GPOS vs RTOS에서의 우선순위 역전
구분 GPOS RTOS
| 스케줄링 특성 | 복잡·공정성 중심 | 우선순위 최대치 보장 |
| 역전 방지 기능 | 대부분 없음 | 다양(뮤텍스 우선순위 상속, 뮤텍스 우선순위 천장 등) |
| 결과 | 우선순위 역전이 장시간 지속될 수 있음고우선순위 태스크 기한 미준수 위험 | 우선순위 역전이 짧게 끝나도록 설계됨고우선순위 태스크 기한 보장 |
3. RTOS에서의 우선순위 역전 해결 기법
- 우선순위 상속(Priority Inheritance)
- 동작 원리: 저우선순위 L이 공유 자원 확보 시,
L에 걸려 있는 잠금 뮤텍스를 H가 대기하면,
L이 가진 실제 실행 우선순위를 H 수준(또는 그 위)까지 잠시 상승 - 효과:
- L이 CPU를 더 오래 점유 → M이 실행되지 못하고 대기
- 곧 L이 공유 자원을 해제 → 우선순위가 원래대로 돌아가고, H가 즉시 실행
- 장점: 단기 우선순위 조정으로 H의 대기 시간을 줄여 “시간 결정성(Determinism)” 확보
- 단점: 우선순위 변경·복원 관리 오버헤드가 있으나, 실시간 보장에 절대 필요
- 동작 원리: 저우선순위 L이 공유 자원 확보 시,
- 우선순위 천장(Priority Ceiling) / 우선순위 역전 방지(Priority Ceiling Protocol)
- 동작 원리: 공유 자원을 사용하기 전에, 해당 자원이 사전에 정의된 “천장 우선순위(Priority Ceiling)”까지
자신(태스크)의 우선순위를 즉시 상승 - 효과:
- 자원을 획득하기 전부터 “최대 우선순위” 상태가 되므로, M(중간 우선순위)은 물론이고 H(고우선순위)
가 대기 중이라도 자원을 해제할 때까지 L이 CPU를 잃지 않음 - 자원 해제 후에 우선순위가 원상복구되며, H→또는 M이 순서대로 실행
- 자원을 획득하기 전부터 “최대 우선순위” 상태가 되므로, M(중간 우선순위)은 물론이고 H(고우선순위)
- 장점: “무한 대기(Infinite Blocking)” 방지, H가 오랫동안 지연되지 않도록 보장
- 단점: 자원별 우선순위 천장을 사전에 정의해야 하며, 시스템 설계가 복잡해질 수 있음
- 동작 원리: 공유 자원을 사용하기 전에, 해당 자원이 사전에 정의된 “천장 우선순위(Priority Ceiling)”까지
4. 요약
- 우선순위 역전(Priority Inversion):
- “낮은 우선순위 태스크가 공유 자원 잠금 → 중간 우선순위 태스크가 선점 → 고우선순위 태스크가 공유 자원 대기로 대기”가 반복되며
- 우선순위가 뒤바뀌어, 실제로는 H(高) → M(中) → L(低) 순으로 실행되어야 하지만
- M이 먼저 실행돼 H가 오랫동안 블록(Blocked) 상태에 빠지는 현상
- GPOS:
- 보통 우선순위 역전 해소 기능이 부족하여, 중간 우선순위 태스크가 계속 CPU를 잡고 있어도 H가 오랫동안 대기
- RTOS:
- “우선순위 상속” 또는 “우선순위 천장” 같은 프로토콜을 통해 우선순위 역전 시간을 최소화
- 고우선순위 태스크의 **시간 결정성(Determinism)**을 보장
실시간 제어에서 “고우선순위 태스크의 빠른 응답”은 생명·안전과 직접 연결될 수 있습니다.
RTOS는 우선순위 역전을 방지하기 위해 뮤텍스 프로토콜을 내장해, 절대 시간이 중요한 태스크의 지연을 최소화합니다.
'임베디드 시스템 > RTOS' 카테고리의 다른 글
| 멀티태스킹(Multitasking)이란? (1) | 2025.06.07 |
|---|---|
| RTOS와 GPOS의 우선순위 역전(Priority Inversion) 차이 (4) | 2025.06.07 |
| RTOS vs GPOS: 태스크 스케줄링 관점 비교 (1) | 2025.06.06 |
| 실시간/범용 OS 비교 및 대표 RTOS (0) | 2025.06.05 |
| 실시간 애플리케이션(Real-Time Application) 핵심 정리 (1) | 2025.06.05 |