- Hướng dẫn thực tiễn về cách tự phát triển một hệ điều hành x86
- Được viết để cung cấp chi tiết kỹ thuật nhưng không tiết lộ quá nhiều thông tin thông qua ví dụ mã hay mẫu có sẵn
- Không giải thích lý thuyết hệ điều hành hoặc cách một hệ điều hành cụ thể hoạt động
- Các chương đầu giải thích chi tiết và cụ thể để người đọc nhanh chóng làm quen với việc viết mã
- Các chương sau trình bày khái quát về khái niệm và yêu cầu, đồng thời khuyến khích độc giả tự thực hiện phần thiết kế và triển khai
- Nếu cần học về lý thuyết hệ điều hành, khuyến nghị Modern Operating Systems của Andrew Tanenbaum
Nội dung các chương chính
- Các chương đầu
- Chương 2~3: Thiết lập môi trường phát triển và khởi động kernel OS trong máy ảo → bắt đầu viết mã bằng ngôn ngữ C
- Chương 4: Xuất ra màn hình và xuất qua cổng serial
- Chương 5: Phân đoạn bộ nhớ
- Chương 6: Ngắt và xử lý đầu vào
- Giai đoạn sau khi phát triển kernel chức năng
- Chương 7: Chuẩn bị hỗ trợ ứng dụng chế độ người dùng
- Chương 8~9: Thiết lập bộ nhớ ảo thông qua paging
- Chương 10: Cấp phát bộ nhớ
- Chương 11: Chạy ứng dụng người dùng
- Chủ đề nâng cao
- Chương 12: Hệ thống tệp
- Chương 13: System call
- Chương 14: Đa nhiệm
Bối cảnh cuốn sách và quá trình phát triển
- Cuốn sách này và kernel OS được phát triển thông qua một khóa học cá nhân nâng cao tại Royal Institute of Technology ở Thụy Điển
- Các tác giả trước đó đã học môn lý thuyết OS nhưng còn thiếu kinh nghiệm phát triển kernel thực tế
- Để hiện thực hóa lý thuyết và hiểu sâu hơn, họ đã mở một khóa học mới và viết cuốn sách này
- Kiến trúc x86 là kiến trúc phần cứng được sử dụng rộng rãi nhất trong thời gian dài, với lượng lớn tài liệu tham khảo và trình giả lập
- Tài liệu về chi tiết phần cứng thường phức tạp và khó hiểu
Cách phát triển
- Làm việc toàn thời gian trong khoảng 6 tuần
- Triển khai theo từng bước nhỏ và kiểm thử thủ công ở mỗi bước → dễ xác định nguyên nhân lỗi
- Phần lớn mã được viết bằng pair programming → kỳ vọng giúp giảm lỗi
Độc giả mục tiêu
- Phù hợp với độc giả có kiến thức nền như sau:
- Quen thuộc với UNIX/Linux và lập trình hệ thống
- Quen thuộc với ngôn ngữ C
- Có hiểu biết về hệ thống máy tính, ký pháp thập lục phân, v.v.
- Người mới bắt đầu cũng có thể dùng làm công cụ học tập, nhưng độ khó cao
1 bình luận
Ý kiến trên Hacker News
Rất thích osdev. Không biết mục tiêu cuối cùng là gì, nhưng việc có thể tạo ra thứ mình muốn thật sự rất tuyệt
Nhiều người hay giới thiệu phương án thay thế mà họ thích, nhưng tôi vẫn là fan lớn của Project Oberon
Cuốn sách này có khuyết điểm kinh điển của các tutorial osdev
Cuốn sách về OS tôi thích nhất là Operating Systems: Three Easy Pieces
Cảm ơn! Trông như một tài liệu tuyệt vời về chủ đề này
Bình luận này gợi lại nỗi hoài niệm về những năm 2000
Sách thì ổn. Nên xem qua phần issue trên GitHub
Tôi ước gì hai cuốn sách phát triển hệ điều hành của Nhật được dịch sang tiếng Anh
Tò mò không biết tài liệu của cuốn sách OS màu đỏ nhỏ ở đâu
Nói về phát triển OS, game khiến việc học trở nên thú vị