126 điểm bởi GN⁺ 2025-01-09 | 14 bình luận | Chia sẻ qua WhatsApp
  • Cuốn sách này giải thích cách xây dựng từng bước một hệ điều hành nhỏ từ đầu
  • Nghe đến phát triển hệ điều hành (OS) hay kernel có thể khiến bạn e ngại, nhưng các chức năng cơ bản của OS (đặc biệt là kernel) lại đơn giản đến ngạc nhiên
  • Linux ban đầu cũng chỉ khởi đầu với 8.413 dòng mã, và dù kernel Linux ngày nay rất đồ sộ, nó cũng bắt đầu từ một codebase nhỏ như một dự án sở thích

Bắt đầu

  • Bạn sẽ triển khai bằng ngôn ngữ C các thành phần như chuyển ngữ cảnh cơ bản, phân trang, chế độ người dùng, shell dòng lệnh, trình điều khiển thiết bị đĩa, cùng các thao tác đọc/ghi tệp
  • Tất cả những điều này đều có thể thực hiện chỉ với 1.000 dòng mã
  • Phần khó nhất khi tự tạo OS là gỡ lỗi
  • Trước khi triển khai được gỡ lỗi bằng printf thì bạn không thể dùng nó, và bạn sẽ cần học nhiều kỹ thuật, kỹ năng gỡ lỗi mà khi phát triển ứng dụng thường không cần đến
  • Đặc biệt khi bắt đầu "từ đầu", bạn sẽ gặp những phần khó như quá trình khởi động và phân trang
  • Nhưng đừng lo! Bạn cũng sẽ học cách gỡ lỗi OS
  • Gỡ lỗi càng khó thì cảm giác thỏa mãn khi thành công càng lớn
  • Hãy cùng lao vào thế giới đầy thú vị của phát triển OS!
Quảng cáo

Thông tin khác

  • Có thể tải các ví dụ triển khai từ GitHub.
  • Cuốn sách này được cung cấp theo giấy phép CC BY 4.0, còn các ví dụ triển khai và mã nguồn theo giấy phép MIT
  • Bạn nên quen thuộc với ngôn ngữ C và môi trường tương tự UNIX; nếu có thể chạy gcc hello.c && ./a.out thì bạn đã sẵn sàng
  • Cuốn sách này ban đầu được viết như một phụ lục cho cuốn "Thiết kế và triển khai microkernel" được viết bằng tiếng Nhật
  • Chúc bạn hack OS vui vẻ!

Mục lục cuốn sách

  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

14 bình luận

 
princox 2025-01-15

Hệ điều hành vốn là thứ tôi chỉ biết qua sách vở, nên thật tuyệt khi có thể xem nó bằng mã nguồn thực tế.

Cảm ơn bạn đã chia sẻ tài liệu hay.

 
yuhyun 2025-01-13

Cảm ơn bạn vì tài liệu tuyệt vời!!!!!!!!

 
reagea0 2025-01-10
  • Cuốn sách này vốn được viết như phần phụ lục của cuốn "Thiết kế và triển khai microkernel" được viết bằng tiếng Nhật.

Tôi thật sự rất ghen tị với điều này. Có vẻ như ở Nhật có rất nhiều sách chuyên ngành được xuất bản rất tốt. Chắc là vấn đề về quy mô dân số nhỉ?

 
gurugio 2025-01-11

Nhìn vào các sách được dịch thì có vẻ không có cuốn nào đi sâu về mặt kỹ thuật đến mức đó, mà chỉ thấy nhiều sách thuộc các lĩnh vực khác nhau được xuất bản thôi. Có lẽ là vì thị trường bên đó lớn hơn.

 
romakus 2025-01-10

Cảm ơn vì tài liệu hữu ích.

 
skrevolve 2025-01-09

Hãy thử tự làm một lần, hoặc đạt đến mức có thể hiểu được, thì sau này bạn sẽ hình dung được hệ thống Linux vận hành như thế nào nên sẽ rất hữu ích khi làm việc với Linux.

 
gurugio 2025-01-09

Cho đến đầu những năm 2000, việc mỗi người tự làm một kernel nhỏ như thế này từng khá thịnh hành nên tôi cũng đã thử, và nhờ đó có thể làm phát triển kernel Linux trong vài năm. Ở trong nước cũng đã có khá nhiều sách về làm hệ điều hành, nên nếu chịu khó tìm thì bạn có thể kiếm được những cuốn giải thích chi tiết hơn.
Nếu không phải để chuyển việc sang lĩnh vực liên quan mà chỉ làm vì vui thì cũng không tệ, nhưng nếu là tôi thì dạo này sẽ khuyên học về AI hoặc k8s hơn. Đến giờ thỉnh thoảng trên những nơi như KLDP vẫn có bài viết nói muốn trở thành lập trình viên kernel, nhưng nhìn phần bình luận thì toàn là lời khuyên ra nước ngoài.

 
bbulbum 2025-01-10

Có lẽ là vì trong nước không có công ty nào đầu tư ở cấp độ kernel chăng..? haha

 
gurugio 2025-01-11

Tôi không rõ là vì không cần nên không làm, hay là vì không làm được, nhưng đúng là không có.

 
coma333 2025-01-09

Cảm ơn vì tài liệu rất hữu ích.

 
tsboard 2025-01-09

Những cuốn sách như thế này hẳn chính là kiểu bí kíp võ công mà người ta hay nói trong truyện võ hiệp nhỉ? haha

 
bbulbum 2025-01-09

Thật quá thú vị. Từ lâu tôi đã muốn thử học lập trình hệ thống một lần, và đây có vẻ là một cách tiếp cận đầu tiên giúp tôi có thể hiểu được cách hệ điều hành hoạt động dưới góc độ lập trình!

 
GN⁺ 2025-01-09
Ý kiến trên Hacker News
  • Tác giả đã viết cuốn sách này để mọi người có thể tự tay làm một hệ điều hành vào dịp cuối tuần, và có thể dùng ngôn ngữ lập trình mình thích như Rust hay Zig thay vì C

    • Chỉ giữ lại những phần cốt lõi để nó không quá giống UNIX, và việc nghĩ về sự khác biệt với Linux hay Windows cũng khá thú vị
    • Thiết kế hệ điều hành giống như tạo ra một thế giới của riêng mình
    • Một số đoạn văn có thể mang cảm giác như được dịch máy, và tác giả nhờ gửi PR nếu có thời gian
    • Nội dung được viết bằng Markdown
  • Dựa trên kinh nghiệm lập trình hệ điều hành "hobby", nên thêm thiết lập gỡ lỗi GDB càng sớm càng tốt

    • QEMU có sẵn GDB server tích hợp, và cần kết nối GDB client cho kiến trúc đích (riscv) tới QEMU GDB server qua mạng
  • Họ cho rằng việc tạo một hệ điều hành nhỏ cho RISC-V là rất tuyệt

    • Cá nhân họ từng viết một kernel cho x86-64 bằng Nim và đang phát triển plugin JetBrains
  • Với những người yêu thích Rust, hướng dẫn của phil-opp có thể là một bài tập thú vị

    • Lần đầu thử thì họ chỉ hiểu khoảng 5%, nhưng sau 2-3 năm đã thử lại và xem xét từng chủ đề một
  • Họ mới bắt đầu tìm hiểu về RISC-V, và trình giả lập được cung cấp trong cuốn sách đang đọc thì đơn giản hơn QEMU nhưng có giấy phép hơi kỳ lạ

    • Nó trông giống một dự án học thuật, và họ tò mò không biết có được dùng ngoài thực tế hay không
  • Việc so sánh với xv6-riscv có lẽ sẽ rất thú vị

    • Có cung cấp phiên bản HTML của sách xv6
  • Những thảo luận ở mức thấp luôn rất hấp dẫn

    • Họ phát hiện một lỗi chính tả nhỏ trong "trang RISC-V 101", nơi "ISA" bị ghi nhầm thành "CPU"
  • Phần khó nhất khi làm hệ điều hành là gỡ lỗi

    • Càng lớn tuổi họ càng nghĩ rằng những vấn đề không đòi hỏi kiến thức chuyên môn quá phức tạp có thể được giải quyết bằng cách thử đi thử lại
  • Có nhắc đến hai dự án

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • Đây là tài liệu tốt, và họ đã lưu lại để đọc vào cuối tuần

 
mhcoma 2025-01-14

Viết kernel bằng Nim...
Nghe thú vị đấy.