임베디드 소프트웨어 개발자가 설명하는 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를 호출할 때
예:
✔ 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 환경 기준으로 분석”
을 다뤄보겠습니다.
오늘도 버그없는토마토입니다 🍅
'임베디드 기초' 카테고리의 다른 글
| 🔗 링크(Link)란 무엇인가? (0) | 2025.12.14 |
|---|---|
| 컴파일(Compile)이란 무엇인가? (0) | 2025.12.14 |
| Embedded Software는 왜 무한 루프를 사용할까? (0) | 2025.12.13 |
| ⏱️ 타이머(Timer)란 무엇인가? 소프트웨어적으로 이해하기 (0) | 2025.12.13 |
| 🚗 자동차 소프트웨어에서 TASK란? (2) | 2025.12.13 |