승코딩당당당

[RTOS] RTOS Scheduling과 OSEK 개념 정리 본문

개발/임베디드

[RTOS] RTOS Scheduling과 OSEK 개념 정리

승코딩당당당 2026. 4. 23. 17:40

 

RTOS(Real-Time Operating System)는 일반 운영체제와 달리 작업의 처리 순서보다 정해진 시간 내에 작업을 완료하는 것이 핵심인 시스템이다. 이러한 특성 때문에 스케줄링 방식 역시 단순한 효율성보다 각 Task의 Timing Requirement와 Deadline을 보장하는 구조로 설계된다.

 

본 글에서는 RTOS 스케줄링의 기본 개념을 시작으로, 자동차 소프트웨어에서 널리 사용되는 OSEK/VDX 표준의 구조와 목적을 함께 정리한다. OSEK이 ECU 내부에서의 Task, Event, Alarm, Resource 등을 어떻게 관리하는지, 그리고 VDX가 이를 어떻게 ECU 간 분산 시스템으로 확장하는지를 중심으로 살펴본다.

 

또한 RTOS를 이해하기 위한 배경 지식으로 Process, Program의 차이와 Process 상태(Running, Ready, Blocked) 개념을 함께 정리하여, Task 기반 시스템과의 연결 흐름을 이해할 수 있도록 구성하였다. 이를 통해 임베디드 및 차량 소프트웨어에서 사용되는 실시간 처리 구조를 전체적인 관점에서 파악하는 것을 목표로 한다.

 


 

RTOS Scheduling과 OSEK 개념 정리

RTOS Scheduling

https://spacebike.tistory.com/25

RTOS(Real-Time Operating System)의 스케줄링은 일반 OS와 다르게 단순한 작업 처리보다 시간 보장(Timing Guarantee)이 가장 중요한 목표이다.

RTOS 환경에서는 다음과 같은 특징을 가진다.

  • Workload
    • Static 구조
    • 시스템 설계 시점(Design Time)에 작업이 결정됨
  • 목표
    • 모든 Task의 Deadline을 보장하는 것
  • Resource
    • Single Core 또는 Multi Core 환경에서 동작

즉, RTOS 스케줄링은
👉 “누가 먼저 실행되느냐”보다
👉 “정해진 시간 안에 반드시 실행되는가”가 핵심이다.

 

OSEK / VDX

OSEK/VDX는 자동차 ECU 소프트웨어의 표준 구조를 정의하기 위한 규격이다.

OSEK

OSEK은 하나의 ECU 내부 동작 구조를 정의한다.

  • 태스크 스케줄링
  • 이벤트(Event)
  • 알람(Alarm)
  • 리소스 관리

즉, 하나의 ECU 안에서
👉 Task들이 어떻게 실행되고
👉 어떻게 동기화되는지를 정의한다.

 

VDX

VDX는 OSEK을 확장한 개념으로,
여러 ECU 간 협력 구조까지 포함한다.

  • ECU 간 통신 구조 정의
  • 분산 시스템 고려
  • 네트워크 기반 동작 (CAN 등)

즉,
👉 OSEK = “ECU 내부”
👉 VDX = “ECU 간 협력”

 

OSEK의 목표

OSEK은 다음 두 가지를 핵심 목표로 한다.

  • Portability
    • 다른 하드웨어에서도 동일한 코드 사용 가능
  • Reusability
    • 코드 재사용성 확보

 

OSEK Object

OSEK에서는 시스템을 구성하는 요소를 “Object” 단위로 정의한다.

  • Task
    → 실행 단위 (프로세싱의 기본 단위)
  • Event
    → Task 간 동기화를 위한 신호
  • Interrupt
    → 하드웨어 이벤트 처리 (I/O, 예외 처리)
  • Alarm
    → 시간 기반으로 이벤트 또는 인터럽트 발생
  • Resource
    → 공유 자원 접근 시 동기화 (Mutex 개념)
  • Hook
    → 특정 상황에서 OS가 추가 동작 수행

 


 

Background 개념

RTOS를 이해하려면 기본 OS 개념도 함께 알아야 한다.

 

Process

Process는 실행 중인 프로그램을 의미한다.

  • Program
    → 디스크에 저장된 코드 + 데이터
  • Process
    → 실행 중인 프로그램

즉,
👉 Program은 “정적인 상태”
👉 Process는 “동적인 실행 상태”

 

Process 구성 요소

Process는 다음과 같은 상태를 포함한다.

  • Memory (주소 공간)
  • Register (CPU 상태)

이것들을 포함한 전체 상태를 Machine State라고 한다.

 

Process State

Process는 실행 상태에 따라 다음과 같이 나뉜다.

  • Running
    → CPU에서 실행 중인 상태
  • Ready
    → 실행 준비 완료, 하지만 CPU 할당을 기다리는 상태
  • Blocked
    → I/O 등 특정 이벤트를 기다리는 상태