지노랩 /JinoLab

RTOS와 GPOS의 우선순위 역전(Priority Inversion) 차이 본문

임베디드 시스템/RTOS

RTOS와 GPOS의 우선순위 역전(Priority Inversion) 차이

지노랩/JinoLab 2025. 6. 7. 09:39

 

우선순위 역전 예시 (교차로 비유)

  • 낮은 우선순위 차량(L-task): 복잡한 교차로에 먼저 진입해 멈춰 섬(교차로 공유 영역 점유)
  • 중간 우선순위 차량(M-task): 교차로를 그대로 지나감 → L은 교차로에서 빠져나갈 수 없어 대기
  • 높은 우선순위 차량(H-task — 응급차): 교차로에 도착했으나 L이 “교차로 열쇠”를 쥐고 있어 진입 불가 → H도 대기
  • 결과적으로 “가장 낮은 우선순위 L”이 교차로에서 빠져나가지 못해, “가장 높은 우선순위 H”도 한참 기다리게 됨 → 우선순위 역전(Priority Inversion)

1. 컴퓨팅에서 우선순위 역전

  • L = 낮은 우선순위 태스크: 공유 자원(뮤텍스)을 잠금(교차로 진입)
  • M = 중간 우선순위 태스크: CPU를 선점해 실행
  • H = 높은 우선순위 태스크: 즉시 실행되어야 하지만, L이 잠근 자원이 해제되지 않아 블록(Block)
  • 따라서 M이 실행되는 동안 L은 실행 기회를 얻지 못해 자원을 해제하지 못하고, H도 그 결과 계속 기다려야 함

2. GPOS vs RTOS의 우선순위 역전 처리

2.1 GPOS(일반 목적 운영체제)

  • 우선순위 상속·천장 기능 없음
    • 뮤텍스를 lock/unlock만 제공하며, L이 자원을 잠그면 L이 스케줄링될 때까지 M이 계속 CPU를 점유
    • 이 상황에서 H는 오랜 시간 대기 → 우선순위 역전
  • 결과
    • “H(高) 태스크”가 기한 내 실행되지 못해 실시간 제약을 어길 수 있음
    • 실시간 성능이 중요한 애플리케이션(예: 항공·자동차 제어)에는 부적합

2.2 RTOS(실시간 운영체제)

  • 우선순위 상속(Priority Inheritance)
    1. L이 자원을 잠그고 있고, H가 대기 상태 → L의 우선순위를 일시적으로 H 수준으로 상향
    2. L이 CPU를 계속 점유해 자원을 해제 → L 우선순위 원복 → H 즉시 실행
    • 효과: H가 기다리는 시간이 최소화되고, 우선순위 역전이 빠르게 해소
  • 우선순위 천장(Priority Ceiling)
    1. L이 자원 획득 시 해당 자원의 “천장 우선순위”까지 올려져 실행(=사실상 최고 우선순위)
    2. L이 자원을 해제하면 우선순위 원복 → H가 즉시 실행
    • 효과: 그 사이 M이 끼어들어도 L이 CPU를 잃지 않음 → 우선순위 역전을 근본적으로 방지
  • 결과
    • 우선순위 역전이 발생해도 반드시 정해진 최대 블록 시간 내에 문제를 해결
    • “H(高) 태스크가 데드라인 내 안정적으로 실행”될 수 있도록 보장

3. RTOS의 핵심 스케줄링 특징

  1. 우선순위 기반 선점 스케줄링 (Priority-Based Preemptive Scheduling)
    • 준비된 태스크 중 가장 높은 우선순위를 가진 것이 즉시 CPU 점유
    • 중간·낮은 우선순위 태스크는, 더 높은 우선순위가 준비되면 즉시 선점당함
  2. 짧고 예측 가능한 인터럽트 지연(Interrupt Latency)
    • 인터럽트 발생 → 최대 지연 시간 내에 ISR(인터럽트 처리 루틴) 실행 시작
    • 커널 진입·반출 코드 오버헤드를 최소화해 지연이 작고 일정함
  3. 제한된 크리티컬 섹션 (Critical Section)
    • 뮤텍스 등으로 보호하는 구역을 최대한 짧게 유지 → 장시간 인터럽트 차단 방지
  4. 시간 결정성(Time Determinism) 우선
    • 시스템 처리량(Throughput)보다는 **“데드라인 준수”**를 최우선
    • 태스크 개수·우선순위 체계를 사전에 설계해 타이밍 예측 가능하게 유지

4. 결론

  • 우선순위 역전(Priority Inversion)
    • “낮은 우선순위가 공유 자원을 점유 → 중간 우선순위가 차례로 실행 → 높은 우선순위가 자원 해제될 때까지 오래 대기”
  • GPOS
    • 우선순위 상속·천장 프로토콜 미구현 → 큰 시스템 부하 시 “높은 우선순위”가 기한을 놓칠 위험
  • RTOS
    • 우선순위 상속/천장 프로토콜 내장 → “최대 블록 시간”을 보장하며 우선순위 역전 문제를 해결
    • “높은 우선순위 태스크(H)가 항상 제때 실행”되도록 보장 → 응답 지연 없이 실시간 제약 충족

실시간 시스템에서는 우선순위 역전이 곧 시스템 전체의 안전·정합성과 연결되므로, RTOS는 반드시 관련 프로토콜을 갖추고 있습니다.