지노랩 /JinoLab

RTOS vs GPOS: 우선순위 역전(Priority Inversion) 개념 본문

임베디드 시스템/RTOS

RTOS vs GPOS: 우선순위 역전(Priority Inversion) 개념

지노랩/JinoLab 2025. 6. 6. 11:37

 

1. 우선순위 역전이란?

  • 정의: 더 낮은 우선순위 태스크가 잠금(Lock) 등을 확보하고 있을 때,
    중간 우선순위 태스크가 CPU를 점유하여 높은 우선순위 태스크의 실행을 차단하는 현상
  • 구조:
    1. 저(低)우선순위 태스크 L 은 공유 자원(예: 뮤텍스)을 획득해 작업 중
    2. 중(中)우선순위 태스크 M 가 실행 준비(Ready) 상태가 되어 L을 선점
      → L은 CPU에서 빠지고, 공유 자원은 여전히 L이 잠금 상태
    3. 이 사이 고(高)우선순위 태스크 H 도 실행 준비
      → 하지만 H는 “공유 자원 대기” 상태가 되어 즉시 실행할 수 없고,
      공유 자원을 가진 L 역시 CPU를 되찾지 못해 깨어나지 못함
    4. 결과적으로, 우선순위가 한참 낮은 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에서의 우선순위 역전 해결 기법

  1. 우선순위 상속(Priority Inheritance)
    • 동작 원리: 저우선순위 L이 공유 자원 확보 시,
      L에 걸려 있는 잠금 뮤텍스를 H가 대기하면,
      L이 가진 실제 실행 우선순위를 H 수준(또는 그 위)까지 잠시 상승
    • 효과:
      • L이 CPU를 더 오래 점유 → M이 실행되지 못하고 대기
      • 곧 L이 공유 자원을 해제 → 우선순위가 원래대로 돌아가고, H가 즉시 실행
    • 장점: 단기 우선순위 조정으로 H의 대기 시간을 줄여 “시간 결정성(Determinism)” 확보
    • 단점: 우선순위 변경·복원 관리 오버헤드가 있으나, 실시간 보장에 절대 필요
  2. 우선순위 천장(Priority Ceiling) / 우선순위 역전 방지(Priority Ceiling Protocol)
    • 동작 원리: 공유 자원을 사용하기 전에, 해당 자원이 사전에 정의된 “천장 우선순위(Priority Ceiling)”까지
      자신(태스크)의 우선순위를 즉시 상승
    • 효과:
      • 자원을 획득하기 전부터 “최대 우선순위” 상태가 되므로, M(중간 우선순위)은 물론이고 H(고우선순위)
        가 대기 중이라도 자원을 해제할 때까지 L이 CPU를 잃지 않음
      • 자원 해제 후에 우선순위가 원상복구되며, H→또는 M이 순서대로 실행
    • 장점: “무한 대기(Infinite Blocking)” 방지, H가 오랫동안 지연되지 않도록 보장
    • 단점: 자원별 우선순위 천장을 사전에 정의해야 하며, 시스템 설계가 복잡해질 수 있음

4. 요약

  • 우선순위 역전(Priority Inversion):
    • “낮은 우선순위 태스크가 공유 자원 잠금 → 중간 우선순위 태스크가 선점 → 고우선순위 태스크가 공유 자원 대기로 대기”가 반복되며
    • 우선순위가 뒤바뀌어, 실제로는 H(高) → M(中) → L(低) 순으로 실행되어야 하지만
    • M이 먼저 실행돼 H가 오랫동안 블록(Blocked) 상태에 빠지는 현상
  • GPOS:
    • 보통 우선순위 역전 해소 기능이 부족하여, 중간 우선순위 태스크가 계속 CPU를 잡고 있어도 H가 오랫동안 대기
  • RTOS:
    • “우선순위 상속” 또는 “우선순위 천장” 같은 프로토콜을 통해 우선순위 역전 시간을 최소화
    • 고우선순위 태스크의 **시간 결정성(Determinism)**을 보장

실시간 제어에서 “고우선순위 태스크의 빠른 응답”은 생명·안전과 직접 연결될 수 있습니다.
RTOS는 우선순위 역전을 방지하기 위해 뮤텍스 프로토콜을 내장해, 절대 시간이 중요한 태스크의 지연을 최소화합니다.