나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2025-11-27 09:29:18

실시간 운영체제

RTOS에서 넘어옴


운영체제
Unix
파일:Finder 222.png macOS
파일:Linux 로고.svg Linux파일:Windows 아이콘 2021_화이트.svg Windows
DOSDR-DOS · 파일:MS-DOS 아이콘.svg MS-DOS · 파일:FreeDOS 로고.svg FreeDOS · K-DOS
기타실시간 운영체제 · 파일:퓨시아 아이콘.svg파일:퓨시아 아이콘 화이트.svg Fuchsia · TempleOS · ReactOS · BeOS · 하이쿠 · 파일:OS/2 로고.svg OS/2 · CP/M · 모바일 운영체제 · OpenVMS · MenuetOS(Kolibri OS) · Pintos · Qubes OS · COSMOSOS(AuraOS)
취소선 처리된 운영체제는 개발 중단된 운영체제.

1. 개요2. 임베디드와 RTOS3. RTOS의 이점4. 목록5. 관련 문서

1. 개요

Real-Time Operating System, RTOS

실시간 컴퓨팅, 즉 시간 내에 원하는 작업을 처리하는 것을 보장할 수 있는 운영체제를 말한다.

실시간 운영체제가 일반적인 운영체제와 다른 가장 큰 특징은 사용자가 직접 운영체제 상의 태스크 스케줄링과 인터럽트를 어느정도 직접 관리할 수 있다는 점이다. WindowsLinux 같은 비실시간 운영체제들은 프로세스와 스레드의 스케줄링을 운영체제가 완전히 독점적으로 관리하며 블랙박스로 꽁꽁 싸매고 있어 사용자가 여기에 간섭할 수 없다. 그러나 실시간 운영체제들은 사용자가 특정 태스크의 실행이나 인터럽트 핸들링 등 프로그램의 실행 시점에 대한 기능들을 직접적으로 요구할 수 있다. 그래서 원하는 작업을 원하는 시점에 정확하게 실행할 수 있으면서도 운영체제의 혜택을 모두 얻을 수 있다는 장점이 있다.

우리 주변에서 볼 수 있는 Windows와 같은 상당수의 상용 운영체제들은 실시간성을 보장하지 않고 보장할 필요도 없다. 실시간성이 필요한 작업 자체도 드물거니와 실행해야 하는 프로세스의 수도 워낙 많고 무엇보다 어떤 프로그램이 언제 실행되고 언제 끝날지를 특정할 수 없다보니 애초에 실시간성의 보장 자체가 불가능한 요구이기 때문이다. 또한 보안상으로도 RTOS들은 운영체제의 상당 부분을 응용 계층에 오픈할 수 밖에 없으므로 악의적인 응용 프로그램이 운영체제의 동작을 방해하기도 쉬워져 이러한 실시간 처리 요구를 무턱대고 받아들이기가 곤란하다. 이 때문에 압도적인 하드웨어 성능으로 실시간 운영체제의 흉내를 낼 수는 있어도 어찌되었든 이러한 운영체제들의 사용 환경과 커널 구성은 본질적으로 일정한 처리에는 적합하다 보기 어렵다.

RTOS는 이름에 실시간이 들어가긴 하지만 실질적으로 실시간성 보고 사용하는 것은 아니다. 사실 가장 실시간성이 좋은 환경은 RTOS의 오버헤드까지도 배제할 수 있는 OS가 없는 베어메탈(Baremetal) 환경이다. 그러면 그냥 베어메탈 환경으로 펌웨어를 개발하면 그만 아니냐? 라고 따질 수 있을텐데 대부분 맞는 말이다. 실제로도 임베디드 프로젝트에서 RTOS가 채용되는 경우가 그렇게 흔하진 않은데 왜냐하면 원래부터 임베디드 분야가 작고 간단하거나 제한된 동작이 주된 프로젝트의 비중이 매우 컸고, RTOS를 채용할만한 기존의 중대규모 임베디드 분야들 중에도 실시간성이 불필요하거나 응용과 확장성이 더 요구되는 분야는 반도체 성능이 너무 올라가다보니 그냥 GPOS를 올리기 시작했기 때문이다. 특히 Linux는 커스터마이징까지 해주면 극단적으로 요구사양을 낮출 수 있어서 이런 흐름을 더욱 가속화 시켰고, 아예 커널 6.12부터 RTOS 기능을 지원하기 시작하면서 이쪽 시장을 야금야금 파먹는 중이다.

RTOS는 Soft RT와 Hard RT로 구분할 수 있다. Soft RT는 작업 시간을 준수하나 100% 준수하는 것을 보장하지는 않으며, Hard RT는 무조건 작업 시간을 준수하는 것을 보장한다.

2. 임베디드와 RTOS

RTOS는 고급 임베디드 환경에서 상당한 수요가 있다. 보통 산업용으로 많이 사용되는 운영체제라 하면 대표적으로 Linux를 꼽을 수 있고 Android라는 선택지도 있다. 그러나 이런 운영체제들을 구동하기 위해서는 적어도 수백MB의 메모리와 1GB 이상의 디스크 저장공간, 파일 시스템이 요구되며 운영체제가 각 프로세스들의 메모리를 보호하기 위해서 CPU 내장으로든 별도 하드웨어를 통해서든 MMU[1]라는 기능이 반드시 지원되어야 한다. 그러나 이정도의 사양과 기능이 지원되는 시스템은 임베디드 산업에서는 불필요하게 크고 복잡하며 많은 비용이 들어가야 하고 범용 운영체제를 구동하기 위한 오버헤드도 대단히 크다. 때문에 임베디드 산업에서 쓰기 좋게 불필요한 기능은 다 들어내고 크기도 엄청나게 줄인 매우 작고 저렴한 SoC 마이크로프로세서들이 주로 사용되는데 이런 물건들은 대부분 성능도 성능이고 태생적으로 범용 운영체제를 지원할 수 없는 스펙으로 나온다.

당연히 이런 마이크로프로세서들에 흔히 사용되는 운영체제를 올릴 수는 없다. 하지만 다행스럽게도 현 시점의 임베디드 산업에서 절대적인 지위를 갖고 있는 C언어는 스펙 상 단일 프로그램의 구동에 기술적으로 운영체제의 도움이 전혀 필요하지 않으며, 단지 간단한 하드웨어 요구사항만이 있을 뿐이다. 이 덕분에 아무리 작은 마이크로프로세서라 해도 일반적으로 하나의 C 프로그램을 온전하게 구동할 수 있는 구성을 갖추기 쉬운데 이런데에 올라가는 단일 C 프로그램이 바로 우리가 흔히 말하는 펌웨어이다.

펌웨어가 구동되는 환경은 운영체제가 없으므로 범용 운영체제로부터 API를 제공 받을 수도 없고 오류로부터 보호도 받지 못한다. 따라서 모든 인터럽트와 에러 처리, 주변장치 제어까지 전부 펌웨어 작성 시에 고려해야 하므로 당연히 운영체제 환경의 프로그램에 비해 코드가 훨씬 복잡하고 어려워질 수 밖에 없을 것이다. 그런데 분명히 펌웨어 쪽의 코드가 더 복잡한데도 운영체제 기반 프로그램들에 비해 오히려 더 우수한 성능과 안정성을 갖는 경우를 많이 볼 수 있다. 이렇게 되는 이유는 하드웨어의 모든 자원을 단일 프로그램 하나가 전부 독점적으로 사용할 수 있고, 프로그램의 동작에 영향을 줄 수 있는 모든 요소를 프로그래머의 의도대로 완벽하게 통제할 수 있는데다 대부분 동작이 충분히 간단하고 규모가 작기 때문이다.

하지만 이렇게 작고 간단하고 높은 안전성이라는 특징은 펌웨어의 규모가 충분히 작을 때에만 통하는 이야기다. 시간이 지날수록 전자기기들의 크기는 작아지는 반면에 더 많은 기능과 유연성이 요구 되고 있으며, 이 때문에 펌웨어에서 해야 할 일이 점점 많아지고 있다보니 자연스럽게 프로그램의 규모가 커질 수 밖에 없다. 그러나 규모가 커질수록 C언어의 한계로 인해 프로그램의 유지보수와 추가기능의 구현, 하드웨어 자원관리, 디버깅 등이 점점 까다로워지는 문제가 발생하고 기능 간의 의존도가 불필요하게 확대되는데다 실행시간이나 작업순서의 변동, 혹은 인터럽트로 인해 전혀 생각지도 못한 부분에서 버그가 발생하는 등등 단일 C 프로그램 구조 하에서는 대규모 펌웨어의 작성과 협업이 여러모로 곤란해지는 경우가 많다. 이것은 그 무엇보다 신뢰성이 중요한 펌웨어에게 있어 매우 심각한 문제인데, 왜냐하면 이미 출하된 제품의 펌웨어에서 문제가 터지면 이를 수습하는데에 엄청난 시간과 비용을 써야 하기 때문이다.

이런 상황에서 GPOS를 사용할 정도의 규모가 안되거나 비용을 최대한 절감하면서도 응용 플랫폼 역할을 해줄 운영체제가 있다면 대규모 협업 및 확장성의 확보가 쉽고 제품에서 응용 수준의 라이브러리와 서비스 제공 및 배포를 하는데에 상당한 이점이 있다. 바로 이때 채용되는 것이 RTOS이다.

3. RTOS의 이점

그럼 대체 RTOS는 어디에 쓰는가? 하면 임베디드 시스템에서 많이 사용된다. 만약 정확하게 1초마다 수행해야 하는 작업이 있다고 하면, 일반적인 GPOS[2]를 쓰는 고성능 컴퓨터는 보통의 경우 0.1초만에 끝낼 수는 있지만 다른 프로세스에 의해서 막히면 2초, 심하면 10초 이상도 중단될 수 있으며 이것이 큰 문제로 취급 되지 않는다. 하지만 RTOS는 프로그래머가 지시한 작업을 정확히 지시된 타이밍에 처리할 것을 보장하게 할 수 있다. 이해의 편의를 위해 여기서는 초 단위를 예로 들었지만, RTOS는 대체로 수 밀리초(1000분의 1초), 심지어는 마이크로초(100만 분의 1초)단위로 컨트롤하기 위해 쓰인다. 리눅스나 윈도우에선 어플리케이션 수준에서는 밀리초 단위의 정밀성을 보장하기도 어렵고 운영체제가 이를 허용하지도 않는다. 때문에 RTOS 정도의 실시간성을 얻으려면 드라이버 수준으로 내려가야만 제한적으로 가능하고 이마저도 일반적으로 사용하는 범용 컴퓨터 시스템에서는 보장이 어렵거나 보장이 된다고 해도 비효율적일 수 있다.

이런 실시간성을 설명할 때에 "어떤 작업을 끝낼 것을 보장한다"는 설명도 자주 볼 수 있는데 이는 오류이다. 왜냐하면 상식적으로 RTOS가 어떤 작업을 시작시킬 수는 있어도 이 작업이 적절한 시간 내에 끝낼 수 있는 것인지는 알 수 없기 때문이다. RTOS가 시작시켜준 작업을 최대한 빠르게 끝내는 것은 프로그래머의 몫이다. 만일 다음 타이밍 주기까지 작업을 끝내지 못한 경우, 보통은 다음 타이밍으로 실행 주기가 밀려버린다.

또 재부팅을 수시로 할 수 있는 데스크톱 시스템과는 달리, 임베디드 시스템은 몇 달에서 길게는 몇 년간 재부팅 없이 실행되는 경우가 흔히 있다. 이 때문에 동적 메모리 할당을 최적화하여 메모리 단편화(memory fragmentation)를 허용하지 않는다. 즉, C에서의 malloc() 같은 함수를 거의 쓰지 않는다는 이야기다.

임베디드 시스템은 당연히 보통 일반 PC보다 성능이 한참 낮은 것들이 들어간다. Real-time인데 왜 성능이 낮은 걸 쓰느냐고 할 수 있는데, Real-time과 High performance는 항상 동시에 요구되는 것이 아니다. 실시간성이 필요한 작업들 중의 대부분은 그렇게까지 높은 성능을 필요로 하지 않다. 따라서 최소한의 비용으로 목적을 달성하는 것이 임베디드와 RTOS가 갖는 강점이라고 할 수 있겠다.

그러나 임베디드 RTOS는 태생적으로 매우 큰 문제가 있는데 바로 포지션이 매우 애매하다는 점이다. 현재의 임베디드 프로세서들은 대부분 운영체제 없이도 C언어로 작성된 프로그램을 직접 실행할 수 있고 하드웨어적으로 각종 타이머가 지원되는데다 인터럽트 핸들링을 어렵지 않게 사용할 수 있어서 운영체제의 지원 없이도 얼마든지 실시간 프로그램을 작성해낼 수 있다. 거기에 대부분 실행하는 작업 자체가 그다지 복잡하지 않고 가짓수가 적기 때문에 RTOS를 사용하여 얻는 이점이 별로 없어 오히려 RTOS를 배우는데 쓰는 시간이 아까운 상황이 많다.

또한 임베디드 RTOS가 사용되는 환경과 특성상 매우 작고 우수한 성능으로 개발되긴 하지만 그럼에도 운영체제라는 규모 때문에 어쩔 수 없이 프로그램이 불필요하게 커지며 오버헤드도 크고 메모리가 유의미하게 낭비된다는 문제도 있다. 때문에 Cortex M3 같이 RTOS가 올라가기엔 성능이 애매한 MCU들에는 RTOS가 거의 채용되지 않는다.

그럼 어느정도 성능이 되는 MCU들에는 RTOS가 채용되냐? 하면 그렇지도 않다. 어지간해서는 운영체제의 혜택을 받기 어렵기 때문에 사용하지 않는 경우는 여전히 많고 여기서 성능이 더 올라가면 그냥 리눅스를 올린다. 운영체제는 응용프로그램의 개발을 용이하게 하는 플랫폼의 기능을 하면서도 여러 응용프로그램의 동시 실행을 조율하는데 강점이 있는데 어지간한 임베디드 시스템에서는 이런 강점을 활용하기가 매우 어렵다. 즉 임베디드의 관점으로는 어차피 똑같은 프로그램을 작성하는데 쓸데없이 RTOS 라는 생소한 것을 배워야 하고 운영체제의 관점에서는 여기서 돌릴 응용프로그램 자체가 얼마 없기 때문에 자신의 장점을 어필할 기회가 없다는 문제를 극복해야 하는 상황이다. [하지만][추가로]

과거에는 피쳐폰에서 Nucleus RTOS라는 실시간 운영체제가 많이 사용 되었다. 성능이 매우 떨어졌던 피쳐폰 하드웨어의 사양으로 구동할 수 있을만큼 가벼우면서도 필요한 작업을 제때 실행할 수 있는 실시간성이 보장되는데다가 운영체제로써 다양한 응용프로그램을 지원할 수 있는 플랫폼의 역할도 할 수 있었기 때문이다. 이후 스마트폰의 시대가 도래한 이후에도 삼성의 바다 같이 가벼우면서 응용성이 좋은 실시간 운영체제가 활용되었으나 스마트폰의 성능이 더 올라가면서 결국 리눅스 기반 운영체제로 대체 되었다.

4. 목록

5. 관련 문서




#!if version2 == null
{{{#!wiki style="border:1px solid gray;border-top:5px solid gray;padding:7px;margin-bottom:0px"
[[크리에이티브 커먼즈 라이선스|[[파일:CC-white.svg|width=22.5px]]]] 이 문서의 내용 중 전체 또는 일부는 {{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/운영체제|운영체제]]}}}{{{#!if external != "o"
[[운영체제]]}}}}}} 문서의 {{{#!if uuid == null
'''uuid not found'''}}}{{{#!if uuid != null
[[https://namu.wiki/w/운영체제?uuid=|r283]]}}} 판{{{#!if paragraph != null
, [[https://namu.wiki/w/운영체제?uuid=#s-|번 문단]]}}}에서 가져왔습니다. [[https://namu.wiki/history/운영체제?from=283|이전 역사 보러 가기]]}}}
#!if version2 != null
{{{#!wiki style="display: block;"
{{{#!wiki style="border:1px solid gray;border-top:5px solid gray;padding:7px;margin-bottom:0px"
[[크리에이티브 커먼즈 라이선스|[[파일:CC-white.svg|width=22.5px]]]] 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
{{{#!wiki style="text-align: center"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="text-align: left; padding: 0px 10px"
{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/운영체제|운영체제]]}}}{{{#!if external != "o"
[[운영체제]]}}}}}} 문서의 {{{#!if uuid == null
'''uuid not found'''}}}{{{#!if uuid != null
[[https://namu.wiki/w/운영체제?uuid=|r283]]}}} 판{{{#!if paragraph != null
, [[https://namu.wiki/w/운영체제?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/운영체제?from=283|이전 역사]])
{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid2 == null
'''uuid2 not found'''}}}{{{#!if uuid2 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph2 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]]){{{#!if version3 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid3 == null
'''uuid3 not found'''}}}{{{#!if uuid3 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph3 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version4 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid4 == null
'''uuid4 not found'''}}}{{{#!if uuid4 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph4 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version5 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid5 == null
'''uuid5 not found'''}}}{{{#!if uuid5 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph5 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version6 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid6 == null
'''uuid6 not found'''}}}{{{#!if uuid6 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph6 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version7 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid7 == null
'''uuid7 not found'''}}}{{{#!if uuid7 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph7 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version8 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid8 == null
'''uuid8 not found'''}}}{{{#!if uuid8 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph8 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version9 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid9 == null
'''uuid9 not found'''}}}{{{#!if uuid9 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph9 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version10 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid10 == null
'''uuid10 not found'''}}}{{{#!if uuid10 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph10 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version11 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid11 == null
'''uuid11 not found'''}}}{{{#!if uuid11 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph11 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version12 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid12 == null
'''uuid12 not found'''}}}{{{#!if uuid12 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph12 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version13 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid13 == null
'''uuid13 not found'''}}}{{{#!if uuid13 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph13 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version14 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid14 == null
'''uuid14 not found'''}}}{{{#!if uuid14 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph14 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version15 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid15 == null
'''uuid15 not found'''}}}{{{#!if uuid15 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph15 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version16 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid16 == null
'''uuid16 not found'''}}}{{{#!if uuid16 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph16 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version17 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid17 == null
'''uuid17 not found'''}}}{{{#!if uuid17 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph17 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version18 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid18 == null
'''uuid18 not found'''}}}{{{#!if uuid18 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph18 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version19 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid19 == null
'''uuid19 not found'''}}}{{{#!if uuid19 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph19 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version20 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid20 == null
'''uuid20 not found'''}}}{{{#!if uuid20 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph20 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version21 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid21 == null
'''uuid21 not found'''}}}{{{#!if uuid21 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph21 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version22 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid22 == null
'''uuid22 not found'''}}}{{{#!if uuid22 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph22 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version23 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid23 == null
'''uuid23 not found'''}}}{{{#!if uuid23 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph23 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version24 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid24 == null
'''uuid24 not found'''}}}{{{#!if uuid24 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph24 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version25 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid25 == null
'''uuid25 not found'''}}}{{{#!if uuid25 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph25 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version26 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid26 == null
'''uuid26 not found'''}}}{{{#!if uuid26 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph26 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version27 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid27 == null
'''uuid27 not found'''}}}{{{#!if uuid27 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph27 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version28 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid28 == null
'''uuid28 not found'''}}}{{{#!if uuid28 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph28 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version29 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid29 == null
'''uuid29 not found'''}}}{{{#!if uuid29 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph29 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version30 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid30 == null
'''uuid30 not found'''}}}{{{#!if uuid30 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph30 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version31 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid31 == null
'''uuid31 not found'''}}}{{{#!if uuid31 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph31 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version32 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid32 == null
'''uuid32 not found'''}}}{{{#!if uuid32 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph32 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version33 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid33 == null
'''uuid33 not found'''}}}{{{#!if uuid33 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph33 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version34 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid34 == null
'''uuid34 not found'''}}}{{{#!if uuid34 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph34 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version35 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid35 == null
'''uuid35 not found'''}}}{{{#!if uuid35 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph35 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version36 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid36 == null
'''uuid36 not found'''}}}{{{#!if uuid36 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph36 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version37 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid37 == null
'''uuid37 not found'''}}}{{{#!if uuid37 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph37 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version38 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid38 == null
'''uuid38 not found'''}}}{{{#!if uuid38 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph38 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version39 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid39 == null
'''uuid39 not found'''}}}{{{#!if uuid39 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph39 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version40 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid40 == null
'''uuid40 not found'''}}}{{{#!if uuid40 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph40 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version41 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid41 == null
'''uuid41 not found'''}}}{{{#!if uuid41 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph41 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version42 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid42 == null
'''uuid42 not found'''}}}{{{#!if uuid42 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph42 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version43 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid43 == null
'''uuid43 not found'''}}}{{{#!if uuid43 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph43 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version44 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid44 == null
'''uuid44 not found'''}}}{{{#!if uuid44 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph44 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version45 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid45 == null
'''uuid45 not found'''}}}{{{#!if uuid45 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph45 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version46 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid46 == null
'''uuid46 not found'''}}}{{{#!if uuid46 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph46 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version47 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid47 == null
'''uuid47 not found'''}}}{{{#!if uuid47 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph47 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version48 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid48 == null
'''uuid48 not found'''}}}{{{#!if uuid48 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph48 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version49 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid49 == null
'''uuid49 not found'''}}}{{{#!if uuid49 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph49 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}{{{#!if version50 != null
{{{#!wiki style="display: block;"

{{{#!wiki style="display: inline-block"
{{{#!if external == "o"
[[https://namu.wiki/w/|]]}}}{{{#!if external != "o"
[[]]}}}}}} 문서의 {{{#!if uuid50 == null
'''uuid50 not found'''}}}{{{#!if uuid50 != null
[[https://namu.wiki/w/?uuid=|r]]}}} 판{{{#!if paragraph50 != null
, [[https://namu.wiki/w/?uuid=#s-|번 문단]]}}} ([[https://namu.wiki/history/?from=|이전 역사]])}}}}}}}}}}}}}}}}}}}}}


[1] Memory Management Unit, 우리가 흔히 말하는 가상 메모리 관리를 하드웨어 차원에서 지원하기 위한 기능이다.[2] General-Purpose Operating System[하지만] 이는 간단한 시점으로 보면, 당연하게도 필요없겠지만, 잊지 말아야할 것은 RTOS는 무거운 응용프로그램을 지원하기 위한 용도가 아니다. 임베디드와 운영체제의 1차원적 관점으로 보면, 틀리지 않은 말이나, 좀 더 깊게 들어가보면 애초에 리눅스가 올라갈 정도의 사양이면, 애초에 저사양에 가벼운 관리가 필요 없는 상태인데, 굳이 RTOS를 올리는건 매우 비효율적인게 맞다. 과거 RTOS의 대표적인 예시가 모바일 위주이기에 일으킬 수 있는 오해인데, 최근에는 시스템 및 메모리 관리를 위해 RTOS를 사용하는 경우도 많다. 그외에도 Thread, Scheduling 등 Baremetal에서는 힘들었던 동시성 및 확장성을 위해 사용하는 경우도 허다하다. Samsung, NXP, TI, Qualcomm 등 보조 프로세서에 RTOS를 올려 자원을 관리하는 형태도 있는만큼 목적이 많이 변하고 자체 RTOS인 경우가 많을 뿐이지, 굳이 극복해야할 정도로 어려운 상황은 아니다. 단지 Baremetal로 개발한 사람들이 RTOS에서의 개발하는데 힘들어하는 경우는 많다.[추가로] 최근 RTOS는 Linux나 Unix 처럼 POSIX 호환이 되도록 설계되었기에, 스케줄링이나 HAL API 등 초기화와 RTOS 관련 API를 제외하면, 응용 프로그램으로 작성한 코드와 유사한 경우도 많다.