# OS 개발에 관한 작은 책

> Clean Markdown view of GeekNews topic #19891. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19891](https://news.hada.io/topic?id=19891)
- GeekNews Markdown: [https://news.hada.io/topic/19891.md](https://news.hada.io/topic/19891.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-22T17:34:05+09:00
- Updated: 2025-03-22T17:34:05+09:00
- Original source: [littleosbook.github.io](https://littleosbook.github.io/)
- Points: 51
- Comments: 1

## Summary

이 책은 x86 운영 체제를 직접 개발하는 방법에 대한 실용적인 가이드를 제공하며, 초기 챕터에서는 개발 환경 설정과 기본적인 커널 기능 구현을 다루고, 후반 챕터에서는 고급 주제와 사용자 애플리케이션 실행을 설명합니다. 책은 스웨덴 Royal Institute of Technology의 고급 개별 과정을 통해 개발되었으며, 저자들은 이론을 실제로 구현하고 이해를 심화하기 위해 이 책을 집필했습니다. 대상 독자는 UNIX/Linux 및 시스템 프로그래밍, C 언어에 익숙한 사람들로, 초보자도 학습 도구로 사용할 수 있지만 난이도가 높습니다.

## Topic Body

- x86 운영 체제를 직접 개발하는 방법에 대한 실용적인 가이드  
- 기술적 세부 사항을 제공하면서도 코드 예제나 샘플을 통해 너무 많은 정보를 공개하지 않도록 작성  
- 운영 체제의 이론이나 특정 운영 체제의 작동 방식에 대해 설명하지 않음  
- 초반 챕터는 상세하고 구체적으로 설명해 코드 작성에 빠르게 익숙해질 수 있도록 함  
- 후반 챕터는 개념과 요구사항을 개략적으로 설명하고, 구현과 설계는 독자가 수행하도록 유도함  
- 운영 체제 이론에 대한 학습이 필요하다면 **Andrew Tanenbaum**의 *Modern Operating Systems* 추천  
  
### 주요 챕터 내용  
- 초반 챕터   
  - **2~3장**: 개발 환경 설정 및 가상 머신에서 OS 커널 부팅 → C 언어로 코드 작성 시작  
  - **4장**: 화면 출력 및 시리얼 포트 출력  
  - **5장**: 세그멘테이션  
  - **6장**: 인터럽트 및 입력 처리  
- 기능적인 커널 개발 이후 과정  
  - **7장**: 사용자 모드 애플리케이션 지원 준비  
  - **8~9장**: 페이징을 통한 가상 메모리 설정  
  - **10장**: 메모리 할당  
  - **11장**: 사용자 애플리케이션 실행  
- 고급 주제  
  - **12장**: 파일 시스템  
  - **13장**: 시스템 콜  
  - **14장**: 멀티태스킹  
  
### 책의 배경 및 개발 과정  
- 이 책과 OS 커널은 스웨덴 **Royal Institute of Technology**의 고급 개별 과정을 통해 개발됨  
- 저자들은 이전에 OS 이론 과목을 수강했지만, 실제 커널 개발 경험이 부족했음  
- 이론을 실제로 구현하고 더 깊이 이해하기 위해 새로운 과정을 개설하고 이 책을 집필함  
- x86 아키텍처는 오랜 기간 가장 널리 사용된 하드웨어 아키텍처이며, 방대한 참고 자료와 에뮬레이터가 존재함  
- 하드웨어 세부사항에 대한 문서화는 복잡하고 이해하기 어려운 경우가 많았음  
  
### 개발 방식  
- 약 6주 동안 풀타임으로 작업  
- 작은 단계로 구현하고 매 단계마다 수동 테스트 수행 → 버그 원인 파악 용이  
- **페어 프로그래밍(pair programming)** 을 통해 대부분의 코드 작성 → 버그 감소 효과 기대  
  
### 대상 독자  
- 다음과 같은 배경 지식이 있는 독자에게 적합함:  
  - UNIX/Linux 및 시스템 프로그래밍에 익숙함  
  - C 언어에 익숙함  
  - 컴퓨터 시스템 및 16진수 표기법 등에 대한 이해가 있음  
- 초보자도 학습 도구로 사용할 수 있지만 난이도가 높음

## Comments



### Comment 36221

- Author: neo
- Created: 2025-03-22T17:34:05+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43440473) 
* osdev를 사랑함. 최종 목표는 모르지만 원하는 것을 만들 수 있다는 점이 정말 멋짐
  - 기본적인 x86 인터럽트와 시스템 호출을 작동시켰을 때 모든 것이 이해됨
  - 시스템 호출을 시작하면 세상이 나의 것임
  - 취미로 OS를 만져보는 것을 강력히 추천함
  - Rust를 배우는 기회로 사용했고 기대 이상의 것을 얻음
  - 이제 Rust에 어느 정도 익숙해졌고 대부분의 사람들보다 더 많은 이중 및 삼중 오류를 던질 수 있음

* 많은 사람들이 자신이 좋아하는 대안을 추천하는데, 나는 여전히 Project Oberon의 큰 팬임
  - 2025년 컴퓨팅에는 적합하지 않을 수 있지만, 메모리 안전 시스템 언어로 작성된 작은 그래픽 기반 OS임
  - OS 개발에 대해 배울 수 있는 충분한 콘텐츠가 있음
  - [Project Oberon 웹사이트](https://www.projectoberon.net/)

* 이 책은 osdev 튜토리얼의 고전적인 결함을 가지고 있음
  - x86 세부사항에 대한 많은 설명이 있지만 osdev에 대한 내용은 거의 없음
  - x86 세부사항은 osdev가 아님
  - 기본 OS가 처리해야 할 것의 극히 작은 부분임

* 내가 가장 좋아하는 OS 책은 Operating Systems: Three Easy Pieces임
  - 개발보다는 작동 방식에 대한 내용이 많음
  - HTML과 PDF 형식으로 무료로 제공되며 인쇄된 책도 판매함
  - [OSTEP 웹사이트](https://pages.cs.wisc.edu/~remzi/OSTEP/)

* 감사합니다! 이 주제에 대한 훌륭한 자료처럼 보임
  - 십대 때 만든 "OS"의 소스 코드를 아직 가지고 있었으면 좋겠음
  - MBR 부트 로더 작성, 보호 모드 전환, 화면에 문자 표시, 키보드 입력까지 작성함
  - 재미있는 도전을 찾고 있다면 강력히 추천함

* 이 댓글은 2000년대로의 향수를 불러일으킴
  - planet-source-code.com이라는 웹사이트가 개발자 커뮤니티에서 인기가 있었음
  - 회원들이 작성한 수백 개의 미니 운영 체제가 있었음
  - 대부분 C/C++와 어셈블리로 부트로더가 작성되었고, Mingw32로 컴파일되었으며, 일반 플로피 디스크에서 부팅됨

* 책은 좋음. GitHub의 이슈를 살펴보면 좋겠음
  - 수정이 필요한 부분이 있음
  - 마지막 커밋은 10년 전임

* 일본의 운영 체제 개발 책 두 권이 영어 번역이 되었으면 좋겠음
  - 그래픽 환경에서 창을 작동시키는 것까지 안내함
  - 그 중 한 권은 30일 도전 과제임
  - [MikanOS GitHub](https://github.com/uchan-nos/mikanos)
  - [30-days Homemade OS GitHub](https://github.com/kamaboko123/30daysOS)
  - "30-days Homemade OS"를 영어로 번역하려는 시도가 있었지만 멀리 가지 못함
  - [os-in-30-days GitHub](https://github.com/handmade-osdev/os-in-30-days)
  - 영어로 이만큼 멀리 가는 책이나 기사를 알지 못함
  - Fusion은 그래픽 환경 챕터가 아직 완료되지 않음
  - [Fusion OS 웹사이트](https://0xc0ffee.netlify.app/osdev/)

* 작은 빨간 OS 책의 설명서는 어디에 있는지 궁금함
  - [Kylin 운영 체제 위키피디아](https://en.wikipedia.org/wiki/Kylin_(operating_system))

* OS 개발에 대해 말하자면, 게임은 학습을 재미있게 만듦
  - 컴퓨터 역사를 여행하면서 운영 체제를 가르치는 게임을 만들고 싶었음
  - 플레이어는 프로세스 스케줄러와 인터럽트 핸들러 역할을 하게 됨
  - 매우 제한된 RAM을 가진 단일 CPU 시스템에서 시작하여 SMP 시스템으로 성장하고 오늘날의 다중 시스템 분산 컴퓨팅 플랫폼에 도달할 수 있음
