GN⁺: OS 개발에 관한 작은 책
(littleosbook.github.io)- 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진수 표기법 등에 대한 이해가 있음
- 초보자도 학습 도구로 사용할 수 있지만 난이도가 높음
Hacker News 의견
-
osdev를 사랑함. 최종 목표는 모르지만 원하는 것을 만들 수 있다는 점이 정말 멋짐
- 기본적인 x86 인터럽트와 시스템 호출을 작동시켰을 때 모든 것이 이해됨
- 시스템 호출을 시작하면 세상이 나의 것임
- 취미로 OS를 만져보는 것을 강력히 추천함
- Rust를 배우는 기회로 사용했고 기대 이상의 것을 얻음
- 이제 Rust에 어느 정도 익숙해졌고 대부분의 사람들보다 더 많은 이중 및 삼중 오류를 던질 수 있음
-
많은 사람들이 자신이 좋아하는 대안을 추천하는데, 나는 여전히 Project Oberon의 큰 팬임
- 2025년 컴퓨팅에는 적합하지 않을 수 있지만, 메모리 안전 시스템 언어로 작성된 작은 그래픽 기반 OS임
- OS 개발에 대해 배울 수 있는 충분한 콘텐츠가 있음
- Project Oberon 웹사이트
-
이 책은 osdev 튜토리얼의 고전적인 결함을 가지고 있음
- x86 세부사항에 대한 많은 설명이 있지만 osdev에 대한 내용은 거의 없음
- x86 세부사항은 osdev가 아님
- 기본 OS가 처리해야 할 것의 극히 작은 부분임
-
내가 가장 좋아하는 OS 책은 Operating Systems: Three Easy Pieces임
- 개발보다는 작동 방식에 대한 내용이 많음
- HTML과 PDF 형식으로 무료로 제공되며 인쇄된 책도 판매함
- OSTEP 웹사이트
-
감사합니다! 이 주제에 대한 훌륭한 자료처럼 보임
- 십대 때 만든 "OS"의 소스 코드를 아직 가지고 있었으면 좋겠음
- MBR 부트 로더 작성, 보호 모드 전환, 화면에 문자 표시, 키보드 입력까지 작성함
- 재미있는 도전을 찾고 있다면 강력히 추천함
-
이 댓글은 2000년대로의 향수를 불러일으킴
- planet-source-code.com이라는 웹사이트가 개발자 커뮤니티에서 인기가 있었음
- 회원들이 작성한 수백 개의 미니 운영 체제가 있었음
- 대부분 C/C++와 어셈블리로 부트로더가 작성되었고, Mingw32로 컴파일되었으며, 일반 플로피 디스크에서 부팅됨
-
책은 좋음. GitHub의 이슈를 살펴보면 좋겠음
- 수정이 필요한 부분이 있음
- 마지막 커밋은 10년 전임
-
일본의 운영 체제 개발 책 두 권이 영어 번역이 되었으면 좋겠음
- 그래픽 환경에서 창을 작동시키는 것까지 안내함
- 그 중 한 권은 30일 도전 과제임
- MikanOS GitHub
- 30-days Homemade OS GitHub
- "30-days Homemade OS"를 영어로 번역하려는 시도가 있었지만 멀리 가지 못함
- os-in-30-days GitHub
- 영어로 이만큼 멀리 가는 책이나 기사를 알지 못함
- Fusion은 그래픽 환경 챕터가 아직 완료되지 않음
- Fusion OS 웹사이트
-
작은 빨간 OS 책의 설명서는 어디에 있는지 궁금함
-
OS 개발에 대해 말하자면, 게임은 학습을 재미있게 만듦
- 컴퓨터 역사를 여행하면서 운영 체제를 가르치는 게임을 만들고 싶었음
- 플레이어는 프로세스 스케줄러와 인터럽트 핸들러 역할을 하게 됨
- 매우 제한된 RAM을 가진 단일 CPU 시스템에서 시작하여 SMP 시스템으로 성장하고 오늘날의 다중 시스템 분산 컴퓨팅 플랫폼에 도달할 수 있음