51 คะแนน โดย GN⁺ 2025-03-22 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • คู่มือเชิงปฏิบัติสำหรับการพัฒนาระบบปฏิบัติการ x86 ด้วยตนเอง
  • เขียนขึ้นเพื่อให้รายละเอียดทางเทคนิค แต่ไม่เปิดเผยข้อมูลมากเกินไปผ่านตัวอย่างโค้ดหรือตัวอย่างประกอบ
  • ไม่ได้อธิบายทฤษฎีของระบบปฏิบัติการหรือวิธีการทำงานของระบบปฏิบัติการใดระบบหนึ่งโดยเฉพาะ
  • บทช่วงต้นอธิบายอย่างละเอียดและเฉพาะเจาะจง เพื่อให้คุ้นเคยกับการเขียนโค้ดได้อย่างรวดเร็ว
  • บทช่วงท้ายอธิบายแนวคิดและข้อกำหนดแบบคร่าว ๆ และชี้นำให้ผู้อ่านลงมือทำการออกแบบและพัฒนาเอง
  • หากต้องการเรียนรู้ทฤษฎีระบบปฏิบัติการ แนะนำ Modern Operating Systems ของ Andrew Tanenbaum

เนื้อหาบทสำคัญ

  • บทช่วงต้น
    • บทที่ 2~3: ตั้งค่าสภาพแวดล้อมการพัฒนาและบูตเคอร์เนล OS บนเครื่องเสมือน → เริ่มเขียนโค้ดด้วยภาษา C
    • บทที่ 4: การแสดงผลบนหน้าจอและการส่งออกผ่านพอร์ตอนุกรม
    • บทที่ 5: Segmentation
    • บทที่ 6: Interrupt และการจัดการอินพุต
  • กระบวนการหลังจากพัฒนาเคอร์เนลที่ใช้งานได้แล้ว
    • บทที่ 7: เตรียมรองรับแอปพลิเคชันในโหมดผู้ใช้
    • บทที่ 8~9: ตั้งค่าหน่วยความจำเสมือนด้วย Paging
    • บทที่ 10: การจัดสรรหน่วยความจำ
    • บทที่ 11: การรันแอปพลิเคชันของผู้ใช้
  • หัวข้อขั้นสูง
    • บทที่ 12: ระบบไฟล์
    • บทที่ 13: System call
    • บทที่ 14: Multitasking

ที่มาของหนังสือและกระบวนการพัฒนา

  • หนังสือเล่มนี้และ OS kernel ถูกพัฒนาขึ้นผ่านหลักสูตรอิสระขั้นสูงของ Royal Institute of Technology ในสวีเดน
  • ผู้เขียนเคยเรียนวิชาทฤษฎี OS มาก่อน แต่ยังขาดประสบการณ์ในการพัฒนาเคอร์เนลจริง
  • เพื่อทำให้ทฤษฎีกลายเป็นการลงมือทำจริงและเข้าใจได้ลึกซึ้งยิ่งขึ้น จึงเปิดหลักสูตรใหม่และเขียนหนังสือเล่มนี้ขึ้น
  • สถาปัตยกรรม x86 เป็นสถาปัตยกรรมฮาร์ดแวร์ที่ถูกใช้อย่างแพร่หลายมากที่สุดมาเป็นเวลานาน และมีเอกสารอ้างอิงกับอีมูเลเตอร์จำนวนมาก
  • เอกสารเกี่ยวกับรายละเอียดฮาร์ดแวร์มักซับซ้อนและเข้าใจได้ยาก

วิธีการพัฒนา

  • ทำงานเต็มเวลาประมาณ 6 สัปดาห์
  • พัฒนาเป็นขั้นตอนเล็ก ๆ และทดสอบด้วยตนเองในทุกขั้นตอน → ช่วยให้หาสาเหตุของบั๊กได้ง่าย
  • เขียนโค้ดส่วนใหญ่ด้วย pair programming → คาดหวังผลในการลดบั๊ก

ผู้อ่านเป้าหมาย

  • เหมาะสำหรับผู้อ่านที่มีความรู้พื้นฐานดังต่อไปนี้:
    • คุ้นเคยกับ UNIX/Linux และการเขียนโปรแกรมระบบ
    • คุ้นเคยกับภาษา C
    • มีความเข้าใจเกี่ยวกับระบบคอมพิวเตอร์และการเขียนเลขฐานสิบหก เป็นต้น
  • ผู้เริ่มต้นก็สามารถใช้เป็นเครื่องมือการเรียนรู้ได้ แต่มีความยากค่อนข้างสูง

1 ความคิดเห็น

 
GN⁺ 2025-03-22
ความคิดเห็นบน Hacker News
  • ชอบ osdev มาก ไม่รู้ว่าเป้าหมายสุดท้ายคืออะไร แต่การที่เราสามารถสร้างสิ่งที่อยากได้เองได้นี่เจ๋งมาก

    • ตอนที่ทำให้ interrupt พื้นฐานของ x86 และ system call ใช้งานได้ ทุกอย่างก็เริ่มเข้าใจขึ้นมา
    • พอเริ่มทำ system call ก็เหมือนโลกทั้งใบเป็นของเรา
    • แนะนำอย่างยิ่งให้ลองเล่นกับ OS เป็นงานอดิเรก
    • ใช้มันเป็นโอกาสในการเรียน Rust และได้อะไรมากกว่าที่คาดไว้
    • ตอนนี้คุ้นกับ Rust พอสมควรแล้ว และสามารถโยน double fault กับ triple fault ได้มากกว่าคนส่วนใหญ่
  • หลายคนมักจะแนะนำทางเลือกที่ตัวเองชอบ แต่ผมก็ยังเป็นแฟนตัวยงของ Project Oberon อยู่ดี

    • มันอาจไม่เหมาะกับงานคอมพิวติ้งในปี 2025 แต่เป็น OS แบบกราฟิกขนาดเล็กที่เขียนด้วยภาษา system ที่ปลอดภัยด้านหน่วยความจำ
    • มีเนื้อหามากพอให้เรียนรู้เรื่องการพัฒนา OS
    • เว็บไซต์ Project Oberon
  • หนังสือเล่มนี้มีข้อบกพร่องแบบคลาสสิกของบทสอน osdev

    • อธิบายรายละเอียดของ x86 เยอะมาก แต่แทบไม่ได้พูดถึง osdev เลย
    • รายละเอียดของ x86 ไม่ใช่ osdev
    • มันเป็นแค่ส่วนเล็กจิ๋วของสิ่งที่ OS พื้นฐานต้องจัดการ
  • หนังสือ OS ที่ผมชอบที่สุดคือ Operating Systems: Three Easy Pieces

    • เนื้อหาพูดถึงวิธีการทำงานมากกว่าการพัฒนา
    • เปิดให้อ่านฟรีทั้งแบบ HTML และ PDF และก็มีขายเป็นหนังสือพิมพ์ด้วย
    • เว็บไซต์ OSTEP
  • ขอบคุณ! ดูเหมือนจะเป็นแหล่งข้อมูลที่ยอดเยี่ยมในหัวข้อนี้

    • อยากให้ยังมีซอร์สโค้ดของ "OS" ที่ทำตอนเป็นวัยรุ่นเก็บไว้อยู่
    • ตอนนั้นเขียนทั้ง MBR boot loader, การสลับเข้า protected mode, การแสดงตัวอักษรบนหน้าจอ และการรับคีย์บอร์ดอินพุต
    • ถ้ากำลังมองหาความท้าทายที่สนุก แนะนำอย่างยิ่ง
  • คอมเมนต์นี้ปลุกความคิดถึงยุค 2000 ขึ้นมาเลย

    • เคยมีเว็บไซต์ชื่อ planet-source-code.com ที่ดังมากในหมู่นักพัฒนา
    • มีมินิระบบปฏิบัติการอยู่เป็นร้อย ๆ ตัวที่สมาชิกเขียนกันไว้
    • ส่วนใหญ่ bootloader เขียนด้วย C/C++ และแอสเซมบลี, คอมไพล์ด้วย Mingw32 และบูตจากฟลอปปีดิสก์ธรรมดา
  • หนังสือดีนะ ลองดู issue บน GitHub ก็ดี

    • มีบางจุดที่ต้องแก้ไข
    • commit ล่าสุดคือเมื่อ 10 ปีก่อน
  • อยากให้หนังสือพัฒนาระบบปฏิบัติการของญี่ปุ่นสองเล่มนี้มีฉบับแปลอังกฤษ

    • มันพาไปจนถึงการทำให้หน้าต่างทำงานในสภาพแวดล้อมแบบกราฟิก
    • หนึ่งในนั้นเป็นโจทย์ท้าทาย 30 วัน
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • เคยมีความพยายามแปล "30-days Homemade OS" เป็นภาษาอังกฤษ แต่ไปได้ไม่ไกล
    • os-in-30-days GitHub
    • ยังไม่รู้จักหนังสือหรือบทความภาษาอังกฤษที่ไปได้ไกลเท่านี้
    • Fusion ยังทำบทเกี่ยวกับสภาพแวดล้อมแบบกราฟิกไม่เสร็จ
    • เว็บไซต์ Fusion OS
  • สงสัยว่าคู่มือของหนังสือ OS เล่มเล็กสีแดงอยู่ที่ไหน

  • พูดถึงการพัฒนา OS แล้ว เกมทำให้การเรียนสนุกขึ้น

    • เคยอยากสร้างเกมที่สอนระบบปฏิบัติการผ่านการเดินทางในประวัติศาสตร์คอมพิวเตอร์
    • ผู้เล่นจะได้รับบทเป็นทั้ง process scheduler และ interrupt handler
    • สามารถเริ่มจากระบบ CPU เดี่ยวที่มี RAM จำกัดมาก แล้วค่อย ๆ เติบโตเป็นระบบ SMP และไปถึงแพลตฟอร์ม distributed computing แบบหลายระบบในปัจจุบันได้