콘텐츠로 바로가기

RTOS Kernel Scheduling Mechanics

마감 시간을 엄격히 준수하기 위해 결정론적 우선순위 기반 스케줄링을 수행하는 RTOS 커널의 물리적 문맥 교환과 운영 메커니즘을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

RTOS 커널 스케줄링 메커니즘(RTOS Kernel Scheduling Mechanics, RKS)은 "가장 빠른 운영체제"가 아닌, "정해진 시간에 반드시 응답함을 물리적으로 보증하는" 실시간 제어의 두뇌입니다.

Windows나 Linux 같은 범용 OS는 '평균적인 처리량'을 높이려 하지만, RTOS는 단 하나의 작업이 늦어지더라도 시스템 전체가 붕괴한다고 가정하는 하드 실시간(Hard Real-time) 환경을 위해 설계되었습니다. 학습자는 하드웨어 타이머와 밀접하게 연동된 틱(Tick) 처리 물리와, 가장 높은 우선순위의 작업에 즉각 CPU권을 넘겨주는 선점형(Preemptive) 스케줄링의 원리를 배웁니다. 이를 통해 소프트웨어 작업들이 어떻게 하드웨어 인터럽트처럼 정교한 물리적 흐름을 타며 실행되는지 RTOS 커널의 내부 구동 물리 사상을 확립합니다.

2. Scope & Boundaries

In-Scope

  • Deterministic Scheduling: 우선순위 기반 선점형(Fixed-priority Preemptive) 물리 로직
  • Context Switch Internals: 태스크 제어 블록(TCB)과 스택 포인터(SPSP) 전환 물리 과정
  • Tick Physics: 시스템 틱(SysTick) 발생 및 타이머 인터럽트와 스케줄러 간의 상호작용
  • Task States: Running, Ready, Blocked 상태 간의 물리적 전이 조건

Out-of-Scope

  • 범용 OS의 시분할(Time-sharing) 및 공정성(Fairness) 기반 스케줄링 알고리즘
  • 실시간 작업의 정적 스케줄링 증명 (06-03 WCET 영역으로 위임)

Boundaries

  • RKS vs. General OS: 범용 OS가 '다중 작업의 편의성'을 본다면, RKS는 모든 클록 사이클이 '마감 시간 엄수'라는 지상 과제에 물리적으로 사상되었는지 검증합니다.

3. Counterexample

  • 단순히 "가벼운 운영체제다"라는 설명은 RKS 학습이 아닙니다. 왜 RTOS에서 문맥 교환(Context Switch) 시간이 애플리케이션의 부하와 상관없이 언제나 일정(Constant-time)해야 하는지 하드웨어 상태 보존 관점에서 입증할 수 있어야 하며, 커널의 특정 코드 구간에서 인터럽트가 금지되었을 때 발생하는 **스케줄링 지연(Scheduling Latency)**이 시스템 마감 시간 파괴에 미치는 수리적 파급력을 분석해야 합니다.

4. Prerequisites

  • Interrupt Latency & Jitter Physics (Basic): 하드웨어 응답성 기초 지식이 필수입니다. (02-05-03 ILJ)
  • Bare-metal Memory Mapping (Recommended): 스택 설정 및 레지스터 사상 이해가 권장됩니다. (02-05-01 BMM)

5. Learning Map

  1. Deterministic Heartbeat: 하드웨어 타이머가 일정한 주기로 커널을 깨워 마감 시간을 체크하는 방식을 익힙니다.
  2. Priority Dominance: 숫자가 높은(또는 낮은) 우선순위 작업이 나타나면 하던 일을 즉시 멈추는 선점 물리(Preemption)를 배웁니다.
  3. State Machinery: 각 작업이 '쉬는 중'에서 '일하는 중'으로 전압 신호처럼 명확히 바뀌는 상태도를 사상합니다.
  4. Context Pivot: 명령 실행의 바통(Register set)을 한 태스크에서 다른 태스크로 물리적으로 넘기는 과정을 완성합니다.

6. Learning Topics

Basic

Core: 선점형 스케줄링과 결정론 (Real-time Determinism)

  • Why to Learn: 어떤 상황에서도 고우선순위 작업의 실행 시점이 보장되어야 긴급 제어(브레이크, 의료기기)가 가능하기 때문입니다.
  • What to Learn:
    • Determinism: 입력에 대한 결과 시점이 수리적으로 고정된 물리 수치
    • Preemption: 하위 작업의 실행권을 물리적으로 가로채는 트리거
    • 실시간 등급: Hard, Soft, Firm 실시간의 하드웨어적 엄격도 차이
  • How to Learn:
    • 1ms 마다 돌아야 하는 작업이 있을 때, 스케줄러가 코드를 배정하는 타임라인을 그리고 최악의 실행 지연 수치 분석 실습
    • 선점이 불가능한 임계 구역(Critical Section)이 시스템의 실시간성을 어떻게 물리적으로 훼손하는지 입증
  • Implement: 현재 준비된 태스크 중 가장 높은 우선순위 하나를 골라내는 상수 시간(O(1)O(1)) 알고리즘 코드

Core: 태스크 상태 전이와 TCB (Task Control Physics)

  • Why to Learn: 커널이 각 작업을 어떻게 물리적 실체로 관리하고 메모리에 추상화하는지 이해하기 위해서입니다.
  • What to Learn:
    • Task Control Block (TCB): 스택 포인터(SPSP), 프로그램 카운터(PCPC), 레지스터 백업본의 물리적 저장소
    • Ready List Structure: 실행 대기 중인 태스크들을 물리적으로 연결하는 큐 구조
    • 상태 전이 로직: 이벤트(세마포어, 타이머) 발생 시 Ready 리스트로 이동하는 전압 트리거 사상
  • How to Learn:
    • 특정 태스크가 'Wait' 상태로 들어갈 때, CPU 레지스터의 데이터가 메모리 공간(TCB)으로 이동하는 시퀀스 작도 실습
    • 레디(Ready) 리스트에 수십 개의 태스크가 있을 때 중재 오버헤드가 일정하게 유지되는지 분석
  • Implement: 태스크의 상태 정보와 스택 주소를 담는 TCB 구조체 및 상태 전이 함수 설계

Practical

Core: 문맥 교환의 물리적 단계 (Context Switch Mechanics)

  • Why to Learn: 문맥 교환 도중 발생하는 하드웨어 가동 중단 시간(Overhead)이 전체 응답성에 미치는 영향을 통제하기 위해서입니다.
  • What to Learn:
    • 하드웨어 개입: PendSV 등과 같이 클록 단위에서 문맥을 전환하는 하드웨어 예외 처리
    • 레지스터 덤핑: CPU의 물리적 레지스터 뱅크를 현재 스택에 밀어 넣는 과정
    • Pointer Swapping: 커널 스택 포인터를 새 태스크의 스택 시작점으로 바꾸는 물리적 분기
  • How to Learn:
    • 어셈블리 코드로 작성된 Sched_Yield 로직을 한 줄씩 분석하며 스택 포인터 레지스터(R13R13)가 변하는 지점 포착 실습
    • 문맥 교환이 1회 일어날 때 소요되는 순수 클록 사이클 측정 및 분석
  • Implement: 두 가상의 실행 흐름 사이에서 레지스터 일체(PC, SP, R0-R12)를 교환하는 어셈블리 의사 코드

Advanced

Core: 틱리스 스케줄링과 전력 보안 (Tickless Physics)

  • Why to Learn: 불필요한 틱 인터럽트를 없애 시스템 지터를 줄이고 극심한 저전력을 구현하기 위해서입니다.
  • What to Learn:
    • Tick-based vs Tickless: 일정한 심박수 기반 vs 할 일 있을 때만 깨어나는 물리
    • Dynamic Timer Management: 하드웨어 타이머의 만료 시간을 동적으로 계산하여 스케줄러와 연동하는 기술
    • 인터럽트 중첩(Nesting)과 스케줄러 중단 방어: 고부하 인터럽트 환경에서의 스케줄링 무결성 보존
  • How to Learn:
    • 10초 동안 할 일이 없는 기기에서 틱리스 기능을 켰을 때와 껐을 때의 CPU 잠듦(Sleep) 시간 수리적 비교 실습
    • 틱리스 전환 시 발생하는 첫 응답 지연(Startup Latency)의 물리적 한계점 분석
  • Implement: 다음 이벤트까지 남은 시간을 계산하여 하드웨어 타이머 칩에 알람을 예약하는 틱리스 관리 모듈

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Determinism 동일한 하드웨어 상태에서 동일한 입력이 주어졌을 때 결과가 나오는 물리적 시간이 일정한 특성입니다. 기본 실시간 척도 Const-time Variance '성능이 빠름'과 무관 P1:CS2023/ES core
Preemption 높은 우선순위 태스크가 나타나면 낮은 태스크의 CPU 점유를 물리적으로 강제 중단시키는 행위입니다. 추천 실행 가로채기 Priority Cooperative '친절한 양보'가 아님 P2:SWEBOK/RT core
TCB 운영체제가 각 실행 흐름의 상태와 레지스터 복사본을 보관하는 하드웨어 메모리 상의 명세서입니다. 실무 상태 관리 Stack / SP Metadata '사용자 데이터'와 무관 Industry Design core
Tickless 고정된 틱 인터럽트 없이, 이벤트가 예정된 시점에만 하드웨어를 깨워 연동하는 고도화된 스케줄링 기술입니다. 심화 저전력/저지터 Idle / Timer Free-running '타이머 없음'이 아님 Industry/Zephyr core

8. References

Primary

Secondary

  • [MicroC/OS-II: The Real-Time Kernel] Jean Labrosse — The definitive kernel mechanics book.
  • [Real-Time Concepts for Embedded Systems] Qing Li — Practical RTOS implementation.

Industry

  • [FreeRTOS: Implementation & Scheduling internals] — The industry standard open-source logic.
  • [POSIX 1003.1b: Real-time Extensions] — The formal API and behavioral standard.

9. Final Checklist

Primary

  • RTOS 커널이 선순점 우선순위 작업을 찾기 위해 'Ready List'를 탐색할 때, 태스크 수에 상관없이 시간 복잡도가 일정해야 하는 물리적 이유를 설명 가능한가? (P1)
  • 하드웨어 타이머(SysTick)의 주기가 너무 짧아지면 전체 연산 속도(Throughput)가 왜 물리적으로 급감하는지 오버헤드 관점에서 입증할 수 있는 가? (P1)

Secondary

  • '문맥 교환' 중 인터럽트가 수 밀리초 동안 비활성화된다면, 외부 센서 신호의 누락(Lost Event) 가능성을 수리적으로 도출할 수 있는 가?
  • 태스크의 'Blocked' 상태가 왜 CPU 자원을 전혀 소모하지 않는 물리적 휴지기로 이어지는지 스케줄러의 태스크 스킵 로직을 소통 가능한가?

Industry

  • 무인 드론의 비행 제어 시스템 설계 시, 범용 Linux 대신 RTOS를 사용해야 하는 물리적 '반응성 확정성(Predictability)' 근거를 제안할 수 있는 가? (SFIA)
  • 전력 소모가 극도로 적은 웨어러블 기기에서 'Tick리스' 커널이 배터리 수명을 물리적으로 연장하는 원리를 전압 신호 관점에서 기술할 수 있는 가?