본문 바로가기
임베디드 기초

🚗 자동차 소프트웨어에서 TASK란?

by 버그없는토마토 2025. 12. 13.

테스크란?



안녕하세요, 버그없는토마토입니다 🍅
지난 글에서 Watchdog을 다뤘다면, 오늘은 그보다 한 단계 상위 개념인 TASK(태스크)에 대해 이야기해보겠습니다.
자동차 소프트웨어는 단순한 C 코드가 아니라, OS 위에서 돌아가는 실시간 시스템이라는 점을 이해하는 것이 중요합니다.
TASK는 바로 그 OS가 ECU를 제어하는 핵심 단위입니다.

 

우리가 흔히 TASK를 생각한다면 '지금 하고 있는 일?', '다음에 할 일?', '할 일 목록?' 등등으로 생각하기 쉽습니다
하지만 반은 맞고 반은 틀렸습니다. 그냥 할 일의 개념으로 접근한다면 50%의 개념만 이해하고 있습니다.
그렇다면 나머지 50%에 대해 알아보겠습니다.

1️⃣ TASK란 무엇인가?

TASK는 ECU 안에서 실행되는 ‘작업의 단위’를 의미합니다.
C 언어의 함수(Function)와는 다르게, Task는 OS가 직접 관리하며 실행을 제어합니다.

쉽게 말하면:

함수는 프로그래머가 실행 흐름을 조정하지만,
Task는 OS가 실행 시점과 순서를 결정한다.

자동차 ECU는 여러 기능을 동시에 처리해야 합니다. 예를 들어:

  • 10ms마다 센서를 읽어야 하고
  • 20ms마다 제어 알고리즘을 계산해야 하고
  • 예외 상황이 발생하면 즉시 처리해야 합니다

이런 복잡한 일을 깔끔하게 관리하는 단위가 바로 Task입니다.

TASK는 '할 일'의 개념보다는 단위의 개념이라고 보는 것이 정확합니다.
그렇다면 어떤 단위일까요?

 

2️⃣ 왜 자동차 ECU에서는 Task가 필요할까?

자동차는 실시간성을 요구하는 대표적인 시스템입니다.
즉, “정확한 시점에 딱 맞게 실행되는 것”이 매우 중요합니다.

예를 들어,

  • 조향 보조 제어는 5ms 단위
  • 모터 위치 계산은 10ms 단위
  • 통신(CAN)은 20ms 단위

이런 주기적 작업을 사람 손으로 맞추기에는 한계가 있습니다.
그래서 AUTOSAR OS는 Task Scheduling(작업 일정 관리) 기능을 제공합니다.


3️⃣ Basic Task와 Extended Task의 차이

초급자들이 가장 헷갈리는 부분이 바로 이것입니다.

✔ Basic Task

  • 가장 기본적인 Task
  • 실행되면 끝까지 수행한 후 자동 종료
  • Event 대기 불가
  • 주기 실행(10ms, 20ms 등)에 자주 사용
→ 주기적 반복 작업에 적합합니다.

✔ Extended Task

  • Event 기다렸다가 실행 가능
  • 통신, 진단, 비동기 작업에 활용
  • Suspend/Resume 개념 존재
→ UDS, CAN, 인터럽트 기반 처리에서 많이 사용됩니다.

4️⃣ Task는 어떻게 실행될까? (알람과 Activation)

Task를 실행시키는 방법은 크게 두 가지입니다.


✔ ① Alarm(알람) 기반 실행

OS의 타이머가 일정 주기마다 Task를 깨우는 방식입니다.

예:
10ms Task → 알람이 10ms마다 Activation
20ms Task → 알람이 20ms마다 Activation

그래서 “10ms 반복 Task” 같은 표현이 나온 것입니다.


✔ ② Event 기반 실행

Extended Task에서만 가능하며,
특정 이벤트가 발생할 때만 Task를 깨웁니다.

예:

  • CAN 메시지 수신 시 Event 발생
  • 진단 요청 들어오면 Event 발생

5️⃣ Task 우선순위(Priority)란?

Task는 동시에 여러 개가 실행되는 것처럼 보이지만,
CPU 코어는 대부분 단일 작업만 수행할 수 있습니다.

그렇다면 어떤 Task를 먼저 실행해야 할까요?

답은 바로 우선순위(Priority)입니다.

  • Priority가 높은 Task → 먼저 실행
  • Priority가 낮은 Task → 대기

이 구조 덕분에,
조향·제동처럼 중요한 기능이 항상 빠르게 실행될 수 있습니다.

소프트웨어를 보면 각 프로세스별 Runnable이 존재하고 그 Runnable의 우선순위도 모두 존재합니다
마치 Window와 같은데요.
모두 같이 켜놨지만 다 각자 우선순위에 의해 돌아가고 있죠
'인터넷' '음악' '사진' '영상' '메모장' '폴더' 모두 해당입니다. 동시에 돌아가고 있어보이지만 말이죠.

6️⃣ Preemption(선점) vs Non-Preemption

Task 실행 중, 더 중요한 Task가 등장하면 어떻게 할까요?

✔ Preemptive OS (선점형)

  • 높은 우선순위 Task가 나타나면
    → 현재 Task를 중단시키고 먼저 실행
  • 안전 기능에서 매우 중요
선점형이 모든 곳에 기본적으로 사용됩니다. 하지만 단점도 존재합니다.
우선순위가 높은 Task가 계속 생길 경우 우선순위가 낮은 Task는 계속 밀리게 되죠.

✔ Non-Preemptive OS (비선점형)

  • 현재 Task가 끝날 때까지 기다림
  • 실행 순서는 단순하지만 실시간성은 낮음

AUTOSAR OS는 기본적으로 Preemptive 방식을 사용합니다.


7️⃣ 자동차 소프트웨어에서 Task가 중요한 이유

Task는 단순히 “코드를 나누는 방식”이 아닙니다.
ECU 구조 자체를 설계하는 핵심 요소입니다.

✔ 센서 읽기, 제어 연산, 통신 등을 정확한 주기에 맞추기 위함
✔ 기능안전(ISO 26262) 요구사항 충족
✔ Watchdog Alive/Deadline 감시의 기준 단위가 됨
✔ CPU 사용률 분석(Load Analysis)의 기준
✔ RTE Runnable과 매핑되는 실행 단위

즉, Task 구조가 ECU 품질과 안전성, 실행 성능을 직접 결정합니다.


🏁 마무리

Task는 자동차 소프트웨어 개발의 가장 기초이면서도 가장 중요한 개념입니다.
ECU가 여러 기능을 정확한 시간에 맞춰 실행할 수 있도록 돕는,
바로 실시간 OS의 핵심 단위입니다.

다음 글에서는 한 단계 더 깊게 들어가서,

➡️ “AUTOSAR OS의 Task 구조 – Runnable 매핑, Priority 설계, Deadline Protection”

을 실무자 관점에서 자세히 다뤄보겠습니다.

오늘도 버그없는토마토였습니다 🍅