Triển khai một hệ điều hành trong 1.000 dòng
(operating-system-in-1000-lines.vercel.app)- 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!
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.outthì 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
- 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
14 bình luận
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.
Cảm ơn bạn vì tài liệu tuyệt vời!!!!!!!!
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ỉ?
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.
Cảm ơn vì tài liệu hữu ích.
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.
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.
Có lẽ là vì trong nước không có công ty nào đầu tư ở cấp độ kernel chăng..? haha
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ó.
Cảm ơn vì tài liệu rất hữu ích.
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
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!
Ý 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
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
Họ cho rằng việc tạo một hệ điều hành nhỏ cho RISC-V là rất tuyệt
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ị
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ạ
Việc so sánh với xv6-riscv có lẽ sẽ rất thú vị
Những thảo luận ở mức thấp luôn rất hấp dẫn
Phần khó nhất khi làm hệ điều hành là gỡ lỗi
Có nhắc đến hai dự án
Đây là tài liệu tốt, và họ đã lưu lại để đọc vào cuối tuần
Viết kernel bằng Nim...
Nghe thú vị đấy.