- คู่มือเชิงปฏิบัติสำหรับการพัฒนาระบบปฏิบัติการ 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
ชอบ osdev มาก ไม่รู้ว่าเป้าหมายสุดท้ายคืออะไร แต่การที่เราสามารถสร้างสิ่งที่อยากได้เองได้นี่เจ๋งมาก
หลายคนมักจะแนะนำทางเลือกที่ตัวเองชอบ แต่ผมก็ยังเป็นแฟนตัวยงของ Project Oberon อยู่ดี
หนังสือเล่มนี้มีข้อบกพร่องแบบคลาสสิกของบทสอน osdev
หนังสือ OS ที่ผมชอบที่สุดคือ Operating Systems: Three Easy Pieces
ขอบคุณ! ดูเหมือนจะเป็นแหล่งข้อมูลที่ยอดเยี่ยมในหัวข้อนี้
คอมเมนต์นี้ปลุกความคิดถึงยุค 2000 ขึ้นมาเลย
หนังสือดีนะ ลองดู issue บน GitHub ก็ดี
อยากให้หนังสือพัฒนาระบบปฏิบัติการของญี่ปุ่นสองเล่มนี้มีฉบับแปลอังกฤษ
สงสัยว่าคู่มือของหนังสือ OS เล่มเล็กสีแดงอยู่ที่ไหน
พูดถึงการพัฒนา OS แล้ว เกมทำให้การเรียนสนุกขึ้น