직접 만들며 배우는 RISC-V 운영체제
부팅부터 사용자 셸까지, 코드와 검증으로 완성하는 작은 OS
운영체제를 직접 만들어 보고 싶다는 생각에서 시작된 이야기
어린 시절 BASIC을 처음 배우고, 플로피디스크의 부트 섹터에서 무슨 일이 일어나는지 궁금해하던 때가 있었다. 운영체제를 직접 만들어 보고 싶다는 생각은 그때부터 마음 한편에 자리 잡았다.
시간이 흐르면서 직장과 가정, 해야 할 일들 사이에서 그 꿈은 오랫동안 미뤄졌다. 그러던 중 AI라는 새로운 도구를 만나면서 다시 운영체제 개발을 시작할 수 있었다.
그렇게 시작한 프로젝트가 mmos(momo operating system)다.
mmos는 RISC-V 아키텍처 위에서 Rust 언어로 구현하는 작은 오픈소스! 운영체제다. 이 책은 mmos를 처음 구성하는 단계부터 사용자 프로그램을 실행하고 최소한의 셸을 동작시키기까지, 실제 구현 과정에서 마주한 문제와 해결 과정을 담고 있다.
부팅부터 사용자 셸까지, 작은 운영체제를 완성하는 과정
이 책은 운영체제의 개념을 설명하는 데 그치지 않고, 각 기능을 직접 구현하고 실행 결과를 확인하는 과정을 따라간다.
먼저 RISC-V 개발 환경을 구성하고 QEMU에서 커널을 부팅한다. 이후 UART 콘솔과 메모리 관리, 사용자 모드 전환, 트랩과 시스템콜을 구현하며 운영체제의 기본 구조를 만들어 간다.
그다음에는 저장장치와 파일시스템, ELF 실행, 파일 디스크립터와 장치 I/O를 연결한다. 프로세스와 스케줄러, 주소 공간 전환, 프로세스 종료와 대?! ??, 실행 이미지 교체를 단계적으로 다루면서 커널이 여러 실행 흐름을 관리하는 과정을 살펴본다.
마지막에는 사용자 init과 최소 셸을 실행하고, 프로그램의 실행부터 종료와 결과 회수까지 이어지는 동작을 검증한다.
이 과정에서 중요한 것은 단순히 코드를 완성하는 일이 아니다.
왜 이 기능이 필요한지, 기존 구조의 무엇을 변경해야 하는지, 그리고 구현한 코드가 올바르게 동작하는지를 어떻게 확인할 수 있는지 이해하는 데 초점을 맞춘다.
실제 코드와 검증 결과를 따라가는 실습
이 책에서 설명하는 구현은 실제로 빌드하고 QEMU에서 실행할 수 있는 mmos 프로젝트를 기반으로 한다.
각 장에서는 핵심 코드와 함께 실행 과정, 검증 방법, 기대되는 결과를 설명한다. 또한 코드 체크포인트를 G! it 태그로 제공하여 독자가 해당 단계의 실제 소스를 확인할 수 있도록 구성했다.
독자는 공개된 mmos-practice 저장소에서 책의 진행 단계에 맞는 코드를 살펴보고, 직접 빌드하고 실행하면서 운영체제의 동작을 확인할 수 있다.
책에 모든 소스 코드를 나열하기보다는 구현의 핵심과 설계 의도, 검증 과정에 집중했다. 전체 구현은 실습 저장소와 함께 살펴볼 수 있다.
AI와 함께 이어간 운영체제 개발과 집필
오랫동안 미뤄 두었던 운영체제 개발을 다시 시작하는 과정에서 AI는 중요한 도구가 되었다.
개발 과정에서는 문제를 분석하고 해결 방법을 검토하는 데 AI의 도움을 받았으며, 집필 과정에서는 구현하면서 남긴 기록을 정리하고 문장을 다듬는 윤문과 퇴고! 에 OpenAI를 활용했다.
이 책은 그렇게 구현한 mmos의 코드와 실행 결과, 검증 과정을 바탕으로 작성했다.
AI를 활용했다는 사실뿐 아니라, 만들어진 코드가 실제로 어떻게 동작하는지 확인하는 과정 역시 중요하게 다뤘다. 독자도 공개된 소스 코드와 검증 절차를 통해 각 단계의 구현을 직접 확인할 수 있다.
mmos는 이 책으로 끝나지 않는다
이 책에서 완성하는 것은 모든 기능을 갖춘 범용 운영체제가 아니라, 부팅부터 사용자 프로그램과 최소 셸의 실행까지 연결되는 작은 Foundation OS다.
이 기반 위에는 앞으로도 더 많은 기능과 실험이 이어질 수 있다.
mmos는 이 책으로 끝나지 않는다. 이 책은 시작이다.
독자들과 함께 질문하고, 구현을 검증하고, 새로운 가능성을 탐색하면서 mmos?! ?? 계속 발전시켜 나가고자 한다.
> mmos forum
> https://forum.mmrnd.net
> https://mmrnd.net/mmos/