118P by neo 7일전 | ★ favorite | 댓글 14개
  • 이 책은 작은 운영체제를 처음부터 단계별로 구축하는 방법을 설명함
  • 운영체제(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 해킹을 기원함!

책의 목차

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

항상 운영체제라는 것이 책으로만 접하던 것인데, 실제 코드로 볼 수 있어서 좋네요.

좋은 자료 공유 감사드립니다.

좋은자료 감사합니다!!!!!!!!

2000년대 초반까지는 이렇게 개개인이 작은 커널을 만들어보는게 유행이기도해서 저도 해봤었고 덕분에 리눅스 커널 개발을 몇년 할 수 있었지요. 국내에도 운영체제 만드는 책들이 많이 나왔었으니까 잘 찾아보시면 더 자세하게 설명하는 책들을 구하실 수 있습니다.
관련 분야 이직할게 아니라 그냥 재미로만 한다면 나쁘지 않겠지만, 저라면 요즘에는 AI나 k8s관련 스터디를 추천하겠습니다. 아직도 가끔 KLDP같은데 커널 개발자가 되고싶다는 글이 올라오는데 댓글을 보면 전부 외국나가라는 말뿐이에요.

국내엔 커널레벨에 투자하는 회사가 없어서 그런것이겠지요..?ㅎㅎ

필요가 없어서 안하는 건지, 못하는 건지는 잘 모르겠습니다만 없긴 없습니다.

  • 이 책은 원래 일본어로 작성된 "마이크로커널의 설계 및 구현" 책의 부록으로 작성되었음

이 말이 너무 부럽네요. 일본은 전문서적들이 참 많이 잘 나오는 것 같아요. 인구 수의 문제겠죠?

번역되는 책들을 보면 기술적으로 아주 깊은데까지 이야기하는 책은 없는것 같습니다만 단지 다양한 분야의 책이 나오는것 같긴 합니다. 아무래도 시장이 더 크니까 그런거같아요.

좋은 자료 감사합니다.

한번 만들어보시거나 이해되는 수준까지오면
나중에 리눅스 시스템이 어떻게돌아가는지 보여서 리눅스 다룰때 유용 해집니다

좋은 자료 감사드립니다.

이런 도서들이야말로 무협지에서 말하는 무공 비급 같은 거겠죠? ㅎㅎ

너무 흥미롭네요. 언젠가 한번 시스템프로그래밍 공부를 해보고싶었는데 처음 접근으로 OS 동작에 대해 프로그래밍 적으로 이해할 수 있겠다는 기대가 되는군요!

Hacker News 의견
  • 저자는 주말에 운영체제를 직접 만들어볼 수 있도록 책을 썼으며, C가 아닌 Rust나 Zig 같은 좋아하는 프로그래밍 언어를 사용할 수 있음

    • UNIX와 비슷하지 않게 필수적인 부분만 남겼으며, Linux나 Windows와의 차이를 생각하는 것도 재미있음
    • 운영체제를 설계하는 것은 자신만의 세계를 만드는 것과 같음
    • 일부 문단은 기계 번역된 느낌이 있을 수 있으며, 시간이 있다면 PR을 보내달라고 요청함
    • 콘텐츠는 Markdown으로 작성됨
  • "hobby" 운영체제 프로그래밍 경험을 바탕으로 GDB 디버깅 설정을 가능한 빨리 추가하는 것이 좋음

    • QEMU에는 내장된 GDB 서버가 있으며, 대상 아키텍처(riscv)의 GDB 클라이언트를 네트워크를 통해 QEMU GDB 서버에 연결해야 함
  • RISC-V를 위한 작은 운영체제를 만드는 것이 멋지다고 생각함

    • 개인적으로 Nim으로 x86-64용 커널을 작성했으며, JetBrains 플러그인을 개발 중임
  • Rust 애호가들에게 phil-opp의 가이드는 재미있는 연습이 될 수 있음

    • 처음 시도했을 때는 5% 정도만 이해했지만, 2-3년 후 다시 시도하여 주제를 하나씩 검토함
  • RISC-V에 대해 공부를 시작했으며, 읽고 있는 책에서 제공하는 에뮬레이터가 QEMU보다 간단하고 이상한 라이선스를 가지고 있음

    • 학술 프로젝트처럼 보이며, 실제로 사용되는지 궁금함
  • xv6-riscv와 비교하는 것이 흥미로울 것 같음

    • xv6 책의 HTML 버전을 제공함
  • 저수준의 논의가 항상 흥미로움

    • "RISC-V 101 페이지"에서 작은 오타를 발견했으며, "ISA" 대신 "CPU"로 잘못 표기됨
  • 운영체제를 만드는 데 있어 가장 까다로운 부분은 디버깅임

    • 나이가 들수록 복잡한 전문 지식이 필요하지 않은 문제는 반복적인 시도를 통해 해결할 수 있다고 생각함
  • 두 프로젝트가 언급됨

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • 좋은 자료이며, 주말에 읽기 위해 저장해 둠

Nim으로 커널을...
재밌겠군요.