- 이 책은 작은 운영체제를 처음부터 단계별로 구축하는 방법을 설명함
- 운영체제(OS)나 커널 개발이라는 말에 겁먹을 수 있지만, OS의 기본 기능(특히 커널)은 놀랍도록 간단함
- Linux도 처음에는 8,413줄의 코드로 시작했으며, 오늘날의 Linux 커널은 매우 크지만, 취미 프로젝트처럼 작은 코드베이스로 시작했음
시작하기
- 기본적인 컨텍스트 전환, 페이징, 사용자 모드, 명령줄 셸, 디스크 장치 드라이버, 파일 읽기/쓰기 작업을 C 언어로 구현할 것임
- 이 모든 것이 1,000줄의 코드로 가능함
- OS를 직접 만드는 데 있어 가장 어려운 부분은 디버깅임
- printf 디버깅을 구현하기 전까지는 사용할 수 없으며, 애플리케이션 개발에서는 필요 없었던 다양한 디버깅 기술과 스킬을 배워야 함
- 특히 "처음부터" 시작할 때 부팅 과정과 페이징 같은 어려운 부분을 만나게 됨
- 하지만 걱정하지 말 것! OS 디버깅 방법도 배울 것임
- 디버깅이 어려울수록 성공했을 때의 만족감이 큼
- OS 개발의 흥미로운 세계로 뛰어들어 보자!
기타 정보
- 구현 예제는 GitHub에서 다운로드 가능함.
- 이 책은 CC BY 4.0 라이선스 하에 제공되며, 구현 예제와 소스 코드는 MIT 라이선스 하에 있음
- C 언어와 UNIX 유사 환경에 익숙해야 하며,
gcc hello.c && ./a.out를 실행할 수 있다면 준비 완료임 - 이 책은 원래 일본어로 작성된 "마이크로커널의 설계 및 구현" 책의 부록으로 작성되었음
- 즐거운 OS 해킹을 기원함!
책의 목차
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro