승코딩당당당
[RTOS] RTOS Scheduling과 OSEK 개념 정리 본문
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

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 등 특정 이벤트를 기다리는 상태
'개발 > 임베디드' 카테고리의 다른 글
| [RTOS] RTOS에서 Mutex 동작 실습 및 이론 정리 (0) | 2026.04.28 |
|---|---|
| [RTOS] OSEK/Trampoline RTOS Task 스케줄링 실습 (0) | 2026.04.24 |
| [차량 통신] SDV 전환과 차량 통신 구조 정리 (CAN vs Ethernet) (0) | 2026.04.21 |
| [차량 통신] 차량 네트워크 구조 정리 (CAN, Ethernet, TCP/IP) (0) | 2026.04.16 |
| [차량 통신] CAN, FlexRay, LIN, SOME/IP (0) | 2026.04.14 |