메모리(RAM) 없는 운영체제는 존재하는가?

요즘 컴퓨터 부품 가격을 보다가 잠깐 현실 도피를 했습니다. DDR5 가격 장난 아니게 올랐습니다. 중고도 가격이 같이 미쳤죠. 이런 이야기 좀 하다가 순간 툭 던져진 이 말…

RAM이 이렇게 비싸면, 그냥 RAM 없이 돌아가는 OS를 쓰면 되는 거 아닌가?

물론 처음에는 이 말 던진 상대나 저나 웃고 넘긴 농담이었습니다. 그런데 진짜로 있습니다. 저희가 일상적으로 알 길이 없을뿐… (규링은 메모리와 운영체제로 석사 전공 하려다가 제대로 안되서(=실패해서) 대충 졸업만 하고 나온 놈이다. ㅠㅠ)

RAM이 없으면 컴퓨터가 켜지지도 않는 거 아닌가?

직관적으로는 맞는 말입니다. RAM이 없으면 운영체제가 올라갈 공간이 없고, 공간이 없으면 아무것도 실행이 안 된다 — 이게 우리가 아는 일반적인 상식입니다. 그런데 여기서 중요한 질문이 하나 있습니다. “RAM 없이 컴퓨터가 못 켜진다”면, 컴퓨터는 RAM을 어떻게 초기화하는 걸까요?

RAM을 초기화하려면 코드가 실행되어야 합니다. 코드가 실행되려면 어딘가에 코드가 올라가 있어야 합니다. 그런데 RAM이 아직 초기화가 안 됐으니, 코드가 올라갈 곳이 없습니다. 닭이 먼저냐 달걀이 먼저냐 같은 이 역설은 실제로 컴퓨터 부팅 과정에서 매일 일어나는 일입니다. 그리고 CPU는 이 문제를 꽤 영리하게 해결하고 있습니다.

사실, CPU 안에 이미 RAM 대용이 들어있었다

x86 계열 CPU가 처음 전원을 받으면, DRAM은 아직 아무것도 모르는 상태입니다. 그런데 CPU는 리셋 벡터라는 고정된 주소(0xFFFFFFF0)에서 첫 번째 명령어를 읽어와 실행합니다. 이 명령어는 메인보드에 납땜된 플래시 메모리(SPI NOR 플래시) 안에 있고, CPU는 이 메모리에서 직접 코드를 읽어 실행합니다. 이 기법을 XIP(eXecute In Place), 즉 “그 자리에서 실행”이라고 부릅니다.

그런데 플래시는 읽기는 가능해도 쓰기가 안 됩니다. 코드를 실행하려면 변수도 써야 하고 스택도 필요한데, 쓸 공간이 없으니 난감합니다. 이 문제를 해결하는 것이 바로 Cache-as-RAM(CAR) 기법입니다.

CPU에는 L1, L2, L3 캐시라고 부르는 고속 온칩 메모리가 있습니다. 이 캐시를 DRAM이 준비되기 전까지 임시 RAM처럼 쓰는 것이 CAR입니다. 인텔 CPU는 이를 No-Eviction Mode(NEM)라는 이름으로 지원하며, 캐시 라인이 바깥으로 밀려나가지 않도록 잠금을 걸고 이 영역을 스택으로 사용합니다. 인텔 Skylake 기준으로 대략 256KB, 최신 Alder Lake에서는 768KB까지 확보가 가능합니다. (요즘 취미로 OS 만들면서 확인한 것.)

이 256~768KB 안에서 C로 작성된 DRAM 초기화 코드가 실행되고, 그 결과로 비로소 여러분이 알고 있는 “진짜 RAM”이 사용 가능해집니다. 즉, 우리 모두는 이미 매번 PC를 켤 때마다 RAM 없이 동작하는 코드를 거쳐서 부팅하고 있었던 것입니다.

그러면 거기서 멈추지 않아도 되는 거 아닌가?

맞습니다. 실제로 멈추지 않은 사람들이 있습니다.

일본 르네사스(Renesas)의 RZ/A1이라는 SoC는 외부 DRAM을 아예 달지 않고도 전체 리눅스 커널을 실행합니다. 코드는 QSPI NOR 플래시에서 XIP로 직접 실행하고, 데이터와 스택은 칩 안에 내장된 10MB SRAM에 올립니다. 일반적인 임베디드 리눅스 시스템이 외부 DDR을 필수로 요구하는 것과 달리, RAM 소자를 보드에 붙이지 않아도 됩니다. 리눅스 커널 소스에는 심지어 CONFIG_XIP_KERNEL이라는 공식 옵션이 있어서, ARM, RISC-V, PowerPC 등에서 이 모드를 지원합니다.

임베디드 RTOS 세계에서는 “RAM을 얼마나 줄일 수 있는가”가 설계의 핵심 과제입니다. 아래 표를 보면 현재 상용 RTOS들이 어느 수준까지 RAM 사용을 낮추는지 확인할 수 있습니다.

RTOS최소 RAM특징
RIOT OS1.5 KB멀티스레딩, IoT 특화
FreeRTOS2 KB세계 점유율 1위 임베디드 OS
TinyOS1~2 KB이벤트 구동, nesC 언어
Zephyr RTOS4~8 KBLinux Foundation 산하

1.5KB라고 하면 실감이 잘 안 올 수도 있습니다. A4 용지 한 장 분량의 텍스트가 약 2~3KB입니다. 그보다 적은 공간에서 멀티스레딩을 포함한 완전한 운영체제가 돌아가는 것입니다.

문명이 망해도 쓸 수 있는 OS

이쯤에서 극단적인 사례를 하나 소개하지 않을 수 없습니다. Collapse OS는 “문명 붕괴 이후를 대비한 운영체제”라는 꽤 진지한 목표로 만들어진 Z80 CPU용 Forth 기반 OS입니다. 목표는 단순합니다 — 첨단 반도체 공급망이 무너져도 구할 수 있는 부품으로 컴퓨터를 만들고, 거기서 새로운 소프트웨어를 짜낼 수 있을 것.

전체 커널은 약 2,000줄에 불과하고, 8KB ROM과 수십 KB의 RAM만 있으면 자기 자신을 어셈블하고 다른 기기에 복사할 수 있는 완전한 자급자족 환경을 구성합니다. 세가 마스터 시스템, 커모도어 64, TI-84 계산기에서도 동작합니다. RAM 걱정을 완전히 다른 차원으로 해결한 사례입니다.

그래서 진짜 RAM을 아예 안 써도 되는 세상이 오나?

이러다가 보면 드는 생각이지만, 이미 연구자들은 더 근본적인 방향을 보고 있습니다. RAM이 비싼 이유 중 하나는 전원이 꺼지면 데이터가 사라지는 휘발성(volatile) 특성 때문에, 꽤 정교한 회로 구조가 필요하기 때문입니다. 만약 RAM처럼 빠르면서도 전원이 꺼져도 데이터가 남는 메모리가 있다면 어떨까요?

이를 연구하는 분야가 영속 OS(Persistent OS)입니다. 2023년 운영체제 분야 최고 학술대회인 SOSP에서 최우수 논문상을 받은 TreeSLS는, NVM(비휘발성 메모리) 위에서 동작하는 마이크로커널을 구현해 약 100마이크로초 단위로 전체 시스템 상태를 체크포인트로 저장합니다. 전원이 나가도 OS 전체 상태가 저장되어 있으니, 다시 켜면 그냥 이어서 씁니다. 이 개념에서는 RAM과 스토리지의 구분 자체가 의미를 잃습니다.

물론 현실은 아직 녹록지 않습니다. MRAM, ReRAM 같은 비휘발성 메모리 기술들이 연구되고 있지만, 현재 상용 제품의 최대 용량은 1~2Gb 수준으로 DDR5 칩 하나(16Gb~)에 한참 못 미칩니다. 가격도 비쌉니다. 인텔이 야심 차게 내놓았던 Optane(3D XPoint) 메모리는 결국 2022년 사업부가 청산되며 단종됐습니다. “RAM 없는 범용 컴퓨팅”은 아직 기술이 따라가야 할 시간이 더 필요합니다.

정리하며

RAM 가격에 한숨 쉬다가 시작한 탐구였는데, 꽤 흥미로운 곳까지 오게 됐습니다. 정리하면 이렇습니다.

  • 우리 모두는 PC를 켤 때마다 이미 “RAM 없는 실행” 구간을 거칩니다. CPU 캐시(CAR)와 플래시(XIP)가 DRAM 초기화 전에 그 역할을 합니다.
  • 임베디드 세계에서는 1.5KB RAM으로도 멀티스레딩 OS가 돌아가고, 아예 외부 DRAM 없이 리눅스를 실행하는 제품도 실재합니다.
  • 학술 연구에서는 RAM과 스토리지의 구분 자체를 없애는 영속 OS 개념이 진지하게 탐구되고 있습니다.
  • 그러나 범용 컴퓨팅에서 DRAM을 완전히 대체할 기술은 아직 없으며, 5~10년 안에 나오리라는 보장도 없습니다.

이 미친 램가격이 언제 내려갈지는 모르겠으나, 램 가격이 내려가기를 기다리거나, 그냥 지금이 제일 싸단 마음으로 지르거나, 아니면 Collapse OS처럼 문명의 제약을 초월하는 마음가짐을 갖거나, 셋 중 하나입니다. 진짜 램값 보면 미치겠습니다. ㅠㅠ


참고 자료

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.