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

RTOS와 Kernel은 무엇이 다를까?

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

임베디드 소프트웨어 개발자가 설명하는 OS 구조의 본질

RTOS란? Kernel이란?


안녕하세요, 버그없는토마토입니다 🍅
예전에는 임베디드 개발자들이 RTOS(Real-Time Operating System)라는 용어를 많이 사용했지만,
최근에는 “커널(Kernel)”이라는 단어가 훨씬 더 자주 등장합니다.

그렇다면 Kernel은 무엇이며, RTOS와 어떤 관계가 있을까요?


그리고 왜 두 용어가 혼용되면서 개발자들이 혼란을 느끼게 되었을까요?
오늘은 그 개념을 실무자의 관점에서 쉽게 정리해보겠습니다.

 

제가 생각 했을때 OS를 햄버거 가게 전체라고 생각한다면
Kernel주문을 처리하는 직원(?)으로 생각할 수 있을 것 같고,
RTOS를 시간이 생명인 드라이브 스루 시스템이라고 비유할 수 있을 것 같습니다.
이렇게 생각하고 밑에 글을 읽으면 이해가 좀 더 빨리 될 수도... 있어요...

 

 


1. OS의 시작: 모든 것을 직접 만들어야 하던 시절

초창기 소프트웨어 개발에서는 운영체제(OS)가 존재하지 않았습니다.
소프트웨어 개발자는:

  • 메모리 로딩
  • 입출력(I/O) 처리
  • 인터럽트 관리
  • 실행 환경 세팅

이 모든 과정을 직접 코드로 구현해야 했습니다.

이 방식은 기능이 조금만 복잡해도 너무 비효율적이고 유지보수가 불가능했죠.
그래서 등장한 것이 바로 “운영체제(Operating System)”입니다.

초기 OS의 역할은 단순했습니다.

✔ 실행할 프로그램을 메모리에 올려주고
✔ 기본 입출력(I/O)을 공통 규격으로 제공해주는 수준

대표적인 예가 DOS입니다.


2. OS가 발전하면서 등장한 공통 구조 — I/O 추상화

개발자들이 다양한 프로그램을 만들다 보니 공통점을 발견했습니다.

모든 프로그램은 입력(Input)과 출력(Output)을 사용한다.

예:

  • 키보드 입력
  • 디스플레이 출력
  • 파일 입출력

그래서 이 공통 기능들을 OS가 대신 제공하기 시작했고,
오늘날 우리가 아는 OS의 형태가 잡히게 됩니다.

즉,

어플리케이션 = 로직만 구현
OS = 실행 환경·입출력·자원 관리 역할

이 구조가 지금까지 이어지고 있습니다.


3. RTOS란 무엇인가? (임베디드 OS)

임베디드 시스템은 PC처럼 다목적 환경이 아니라
특정 기능을 실시간으로 수행해야 하는 장치입니다.

대표 예:

  • 모터 제어
  • 센서 모니터링
  • 차량 ECU
  • 의료장비
  • 로봇 제어

그래서 등장한 것이 Real-Time OS, 즉 RTOS입니다.

RTOS는 다음 기능을 포함한 “작은 OS”라고 보면 됩니다.

✔ Multi-tasking 지원
✔ Task Scheduling
✔ Interrupt 관리
✔ Timer 기반 실행
✔ 우선순위 기반 스케줄 관리

RTOS는 기능 자체는 OS와 동일하지만,
중요 기준이 “실시간성”이라는 점이 다릅니다.

그래서 일부 개발자들은 RTOS라는 표현보다는
“Embedded OS”라는 용어가 더 적절하다고 말하기도 합니다.


4. Kernel이란 무엇인가?

RTOS와 OS가 너무 많은 기능을 포함하다 보니
그중 핵심 기능만을 따로 부르는 용어가 필요했습니다.
그게 바로 Kernel입니다.

Kernel이 담당하는 핵심 기능은 다음과 같습니다.

✔ Task Scheduling(스케줄링)
✔ Context Switching
✔ ISR(Interrupt Service Routine) 관리
✔ Memory 관리
✔ 리소스 관리(Semaphore, Mutex 등)

즉,

Kernel = OS의 핵심 기능만 모아 놓은 엔진

OS = Kernel + 주변부 서비스(API, File System, Network Stack 등)


5. Kernel은 혼자 돌아가는 "특별한 존재"가 아니다

실무에서 종종 오해되는 부분이 있습니다.

❌ Kernel은 혼자서 시스템을 계속 실행하는 존재가 아니다.
⭕ Kernel은 "누군가 호출할 때" 동작하는 서비스 모듈이다.

Kernel이 동작하는 경우는 아래 두 가지뿐입니다.

✔ 1) Application/Task가 Kernel API를 호출할 때

예:

 
ActivateTask() TerminateTask() WaitEvent()

✔ 2) Interrupt가 끝날 때

ISR에서 끝 부분에 Kernel 관련 API가 호출되면서
스케줄링이 필요한지 확인합니다.

Kernel은 배경에서 스스로 무언가를 “계속” 하지 않습니다.
호출되었을 때만 동작하는 구조입니다.

이 개념을 이해하면 Kernel이 훨씬 단순한 구조라는 걸 알 수 있습니다.


6. Monolithic Kernel vs Micro Kernel – 왜 용어가 혼란스러울까?

Kernel이라는 단어가 헷갈리는 이유는
OS마다 Kernel의 정의가 다르기 때문입니다.


✔ Monolithic Kernel (Linux 등)

Kernel 안에 많은 기능을 포함

  • 스케줄러
  • 메모리 관리자
  • 파일 시스템
  • 디바이스 드라이버
  • 네트워크 스택

Kernel = OS라고 봐도 무방합니다.

예: Linux


✔ Micro Kernel (L4 등)

Kernel에는 진짜 핵심 기능만 포함

  • 스케줄러
  • 메모리 관리
  • IPC
  • 인터럽트 처리

나머지는 모두 별도 “서버 프로세스”로 구성됩니다.
→ 구조가 더 분리되어 있고, 안정성이 높음.


7. RTOS는 Kernel인가? OS인가?

RTOS는 구조가 작기 때문에 Kernel과 거의 동일하다고 봐도 됩니다.
(스케줄러 + 메모리 관리 + 인터럽트 처리 중심)

그래서 개발자들은 RTOS를 Kernel이라고 부르기도 하고,
Kernel을 RTOS라고 부르기도 합니다.

둘 다 틀린 말은 아닙니다.


🏁 마무리

정리하면 이렇게 됩니다.

  • OS: 프로그램 실행 환경 전체
  • RTOS: 임베디드용 실시간 OS
  • Kernel: OS/RTOS의 핵심 기능 엔진
  • Monolithic Kernel: OS 대부분이 Kernel 내부에 포함
  • Micro Kernel: 핵심만 Kernel에 두고 나머지는 외부 프로세스로 분리

Kernel은 어떤 특별한 “자동 동작 요소”가 아니라,
개발자가 요청할 때만 동작하는 작고 효율적인 시스템 관리자입니다.

다음 글에서는
“RTOS와 Task Scheduling 구조를 실제 ECU 환경 기준으로 분석”
을 다뤄보겠습니다.

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