51 điểm bởi GN⁺ 2025-03-22 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2025-03-22
Ý 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

    • Khi làm cho các ngắt x86 cơ bản và system call hoạt động, mọi thứ trở nên dễ hiểu
    • Một khi bắt đầu với system call, cảm giác như cả thế giới thuộc về mình
    • Rất khuyến khích thử vọc OS như một sở thích
    • Đã dùng nó như một cơ hội để học Rust và nhận lại được nhiều hơn mong đợi
    • Giờ đã khá quen với Rust, và có thể ném ra nhiều lỗi kép lẫn lỗi ba hơn phần lớn mọi người
  • 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

    • Có thể không phù hợp với điện toán năm 2025, nhưng đây là một OS nhỏ có giao diện đồ họa được viết bằng ngôn ngữ hệ thống an toàn bộ nhớ
    • Có đủ nội dung để học về phát triển OS
    • Trang web Project Oberon
  • Cuốn sách này có khuyết điểm kinh điển của các tutorial osdev

    • Có rất nhiều giải thích về chi tiết x86, nhưng gần như không nói gì về osdev
    • Chi tiết x86 không phải là osdev
    • Đó chỉ là một phần cực nhỏ trong những gì một OS cơ bản phải xử lý
  • Cuốn sách về OS tôi thích nhất là Operating Systems: Three Easy Pieces

    • Nội dung thiên về cách nó hoạt động hơn là phát triển
    • Có sẵn miễn phí ở dạng HTML và PDF, và cũng có bán bản in
    • Trang web OSTEP
  • Cảm ơn! Trông như một tài liệu tuyệt vời về chủ đề này

    • Giá như tôi vẫn còn giữ mã nguồn của "OS" mình làm thời thiếu niên
    • Tôi đã viết boot loader MBR, chuyển sang protected mode, hiển thị ký tự lên màn hình và nhận cả đầu vào từ bàn phím
    • Nếu bạn đang tìm một thử thách thú vị, tôi rất khuyến khích
  • Bình luận này gợi lại nỗi hoài niệm về những năm 2000

    • Có một trang web tên là planet-source-code.com từng rất nổi trong cộng đồng lập trình viên
    • Có hàng trăm hệ điều hành mini do thành viên tự viết
    • Phần lớn có bootloader viết bằng C/C++ và assembly, được biên dịch bằng Mingw32, và khởi động từ đĩa mềm thông thường
  • Sách thì ổn. Nên xem qua phần issue trên GitHub

    • Có vài chỗ cần sửa
    • Lần commit cuối cùng là 10 năm trước
  • 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

    • Chúng hướng dẫn tới cả việc làm cho cửa sổ hoạt động trong môi trường đồ họa
    • Một trong số đó là thử thách 30 ngày
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • Đã từng có một nỗ lực dịch "30-days Homemade OS" sang tiếng Anh, nhưng không đi được xa
    • os-in-30-days GitHub
    • Tôi không biết cuốn sách hay bài viết nào bằng tiếng Anh đi xa được đến mức này
    • Fusion vẫn chưa hoàn thành chương về môi trường đồ họa
    • Trang web Fusion OS
  • 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ị

    • Tôi từng muốn làm một trò chơi dạy về hệ điều hành bằng cách cho người chơi du hành qua lịch sử máy tính
    • Người chơi sẽ vào vai bộ lập lịch tiến trình và trình xử lý ngắt
    • Có thể bắt đầu từ một hệ thống CPU đơn với RAM rất hạn chế, rồi phát triển thành hệ SMP và cuối cùng đạt tới nền tảng điện toán phân tán đa hệ thống ngày nay