Post

[RTOS] Lecture 1

Real-Time Operating Systems

[RTOS] Lecture 1

Real-Time Embedded Systems


Real-Time System

실시간 시스템은 논리적 정확성과 시간적 정확성을 모두 만족해야 하는 컴퓨팅 시스템이다.

  • 논리적 정확성 (Logical correctness): 올바른 출력을 생성
  • 시간적 정확성 (Temporal correctness): 정해진 시간 내에 출력을 생성

Embedded System

임베디드 시스템은 특정 기능을 전담하여 수행하며, 보통 사용자에게 드러나지 않는 형태로 더 큰 시스템의 일부로 포함된다. 자동차, 가전제품, 산업용 로봇 등 다양한 분야에서 사용된다.

Automotive System

자동차 시스템은 실시간 임베디드 시스템의 대표적인 예시이다.

  • 다수의 ECU(Electronic Control Unit)가 네트워크로 연결
  • 시간적 정확성은 종단 간 지연(End-to-end delay)으로 정의
    • 센서 → ECU 및 네트워크 → 액추에이터


Automotive Computing Platforms


자동차 컴퓨팅 플랫폼은 용도에 따라 크게 세 가지로 분류된다.

CategoryHardwareNetworkRequirements
Control(Multicore) CPUCAN• Functional Safety (ISO 26262)
• Real-Time Scheduling
• Multicore Validation/Optimization
InfotainmentCPU + GPUWireless (LTE, BT, …)• Security (ISO/SAE 21434)
• Connectivity (OTA)
• New User Experiences
IntelligenceCPU + GPU + NPUEthernet• Accelerators (GPU, NPU, …)
• Intended Safety (SOTIF)
• Choice of Operating System


Why RTOS?


임베디드 시스템의 소프트웨어는 크게 펌웨어와 RTOS 기반 방식으로 나눌 수 있다.

Firmware (Superloop)RTOS
단일 루프 내에서 모든 작업을 순차적으로 처리한다.여러 개의 독립적인 태스크(Task)로 작업을 분할하고,
운영체제가 스케줄링한다.
구조가 간단하고 예측이 쉽다.복잡한 시스템을 체계적으로 설계하고 관리할 수 있다.
작업이 많아지면 특정 작업의 실행 주기를 보장하기 어렵다.태스크별로 우선순위를 부여하여 중요한 작업을 먼저 처리할 수 있다.

Firmware (Superloop)

1
2
3
4
5
6
7
8
9
main()
{
    system_init();
    while(1) {
        do_A();
        do_B();
        do_C();
    }
}

RTOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TASK(5ms)
{
    do_A();
    TerminateTask();
}

TASK(10ms)
{
    do_B();
    TerminateTask();
}

TASK(50ms)
{
    do_C();
    TerminateTask();
}


Real-Time Scheduling Theory


실시간 시스템의 동작을 분석하고 설계하기 위해 참조 모델(Reference model)을 사용한다. 이는 불필요한 세부 사항을 숨기고 문제의 핵심 특성(워크로드, 리소스, 알고리즘)에 집중하게 해준다.

  • Workload Model: 시스템이 처리해야 할 작업의 특성을 정의
  • Resource Model: 작업을 처리하는 데 사용되는 하드웨어 자원을 정의
  • Scheduling Algorithm: 작업을 리소스에 할당하는 규칙

Workload Model

  • Job: 작업의 단위 (e.g. 센서 값 읽기)
  • Task: 동일한 job의 시퀀스 (e.g. 센서 값 주기적 읽기 태스크)

  • Release Time: Job이 실행 준비되는 시점

    TypeDescription
    Periodic엄격하게 주기적으로 릴리스
    Sporadic최소 릴리스 간격 보장
    Aperiodic불규칙한 패턴
  • Deadline: Job이 완료되어야 하는 시점

    TypeDescription
    Absolute절대 시간으로 지정
    RelativeJob 릴리스 시점으로부터의 시간으로 표현
    TypeDescription
    ImplicitDeadline = Period
    ConstrainedDeadline ≤ Period
    ArbitraryDeadline이 Period보다 클 수 있음
    TypeDescription
    Hard미충족 시 치명적인 결과 초래
    Soft미충족 시 성능 저하에 그침
  • Execution Time: Job을 완료하는 데 필요한 시간

    TypeDescription
    Deterministic주로 최악 실행 시간(Worst-Case Execution Time, WCET)을 기준으로 분석
    Stochastic확률 분포로 표현

Scheduling Algorithm

  • Schedule: 시간에 따라 job을 리소스에 할당한 결과
  • Scheduler: 스케줄링 알고리즘을 구현한 운영체제의 모듈
  • Feasibility: 특정 스케줄에 대해 모든 태스크가 데드라인 내에 처리될 수 있는가?
  • Schedulability: 특정 태스크 집합에 대해 실행 가능한 스케줄이 존재하는가?

Scheduling Types

TypeDescription
Preemptive현재 실행 중인 태스크를 임의로 중단 가능
Non-preemptive현재 태스크가 완료될 때까지 대기
Cooperative미리 정의된 시점에서만 선점 허용


OSEK/VDX Specification


OSEK/VDX1는 자동차 전자장치용 RTOS에 대한 공개 표준이다. 독일의 OSEK과 프랑스의 VDX 표준이 통합된 것으로, 특정 구현이 아닌 산업 표준 명세(Specification)이다. 이를 기반으로 다양한 상용 및 오픈 소스 RTOS가 개발되었다.

  • 상용: ETAS RTA-OSEK, EB TRESOS OSEKCORE, Vector osCAN
  • 오픈 소스: ERIKA Enterprise, Trampoline OSEK, nxtOSEK

OS Objects

ObjectDescription
TaskOS가 제어하는 코드 단위
ISR하드웨어가 트리거하는 인터럽트 핸들러 (Interrupt Service Routine)
Resource공유 자원에 대한 동시 접근을 막기 위한 잠금 메커니즘
Counter하드웨어 타이머의 추상화
Alarm특정 카운터 값에 도달했을 때 태스크 활성화, 이벤트 설정 등의 액션 수행
Event태스크 간의 동기화를 위해 사용

Task

C 코드로 실제 동작을 정의하고, OIL(OSEK Implementation Language) 코드로 속성(우선순위, 스케줄링 방식 등)을 설정한다.

Basic Task

flowchart LR
    A[Ready] -->|start| B[Running]
    B -->|preempt| A
    B -->|terminate| C[Suspended]
    C -->|activate| A

Extended Task

flowchart LR
    A[Ready] -->|start| B[Running]
    B -->|preempt| A
    B -->|terminate| C[Suspended]
    C -->|activate| A
    B -->|wait| D[Waiting]
    D -->|release| A

확장 태스크의 경우 waiting 상태가 있어, 특정 이벤트가 발생할 때까지 대기할 수 있다.

Hook Routines

운영체제 내부의 특정 이벤트 발생 시점(부팅, 종료, 에러 발생 등)에 사용자가 정의한 함수를 실행할 수 있게 하는 기능이다.

RoutineDescription
StartupHook시스템 부팅 시 OS 초기화와 첫 태스크 실행 사이에 호출
ShutdownHook시스템 종료 시 호출
ErrorHookOS 서비스에서 에러 발생 시 호출
PreTaskHook / PostTaskHookContext switch 시점에 호출

AUTOSAR OS

AUTOSAR(AUTomotive Open System ARchitecture)는 자동차 소프트웨어 구조의 표준화를 위한 글로벌 파트너십으로, AUTOSAR OS는 OSEK/VDX 표준을 확장한 것이다. 다음과 같은 기능들이 추가되었다.

  • 스케줄 테이블 (Schedule table): 정해진 시간에 태스크를 실행
  • 타이밍 보호 (Timing protection): 태스크가 할당된 실행 시간을 초과하지 않도록 보호
  • 메모리 보호 (Memory protection): 태스크가 할당된 메모리 영역을 벗어나 접근하지 않도록 보호


References


Footnote

이 글은 저작자의 CC BY-SA 4.0 라이선스를 따릅니다.