สร้างระบบปฏิบัติการใน 1,000 บรรทัด
(operating-system-in-1000-lines.vercel.app)- หนังสือเล่มนี้อธิบายวิธีสร้างระบบปฏิบัติการขนาดเล็กจากศูนย์แบบเป็นขั้นเป็นตอน
- คำว่า ระบบปฏิบัติการ (OS) หรือการพัฒนาเคอร์เนลอาจฟังดูน่ากลัว แต่ความสามารถพื้นฐานของ OS (โดยเฉพาะเคอร์เนล) นั้นเรียบง่ายอย่างน่าประหลาด
- แม้แต่ Linux เองก็เริ่มต้นมาด้วยโค้ดเพียง 8,413 บรรทัด และแม้เคอร์เนล Linux ในปัจจุบันจะมีขนาดใหญ่มาก แต่ก็เริ่มจากโค้ดเบสเล็กๆ แบบโปรเจกต์งานอดิเรก
เริ่มต้น
- จะลงมือสร้างการสลับคอนเท็กซ์พื้นฐาน, paging, user mode, เชลล์บรรทัดคำสั่ง, ไดรเวอร์อุปกรณ์ดิสก์, และการอ่าน/เขียนไฟล์ด้วยภาษา C
- ทั้งหมดนี้ทำได้ด้วยโค้ดเพียง 1,000 บรรทัด
- ส่วนที่ยากที่สุดของการสร้าง OS ด้วยตัวเองคือการดีบัก
- ก่อนจะสร้าง printf debugging ขึ้นมาใช้งานเอง คุณจะยังใช้มันไม่ได้ และต้องเรียนรู้เทคนิคกับทักษะการดีบักหลากหลายแบบที่ไม่จำเป็นในการพัฒนาแอปพลิเคชันทั่วไป
- โดยเฉพาะเมื่อเริ่มจาก "ศูนย์" คุณจะต้องเจอกับส่วนที่ยากอย่างกระบวนการบูตและ paging
- แต่ไม่ต้องกังวล! คุณจะได้เรียนรู้วิธีดีบัก OS ด้วย
- ยิ่งการดีบักยากมากเท่าไร ความพึงพอใจเมื่อทำสำเร็จก็ยิ่งมากขึ้นเท่านั้น
- มาร่วมกระโดดเข้าสู่โลกอันน่าตื่นเต้นของการพัฒนา OS กัน!
ข้อมูลอื่นๆ
- สามารถดาวน์โหลดตัวอย่างการใช้งานได้จาก GitHub
- หนังสือเล่มนี้เผยแพร่ภายใต้สัญญาอนุญาต CC BY 4.0 และตัวอย่างการใช้งานกับซอร์สโค้ดอยู่ภายใต้สัญญาอนุญาต MIT
- ควรคุ้นเคยกับภาษา C และสภาพแวดล้อมแบบ UNIX และถ้าคุณรัน
gcc hello.c && ./a.outได้ ก็พร้อมแล้ว - หนังสือเล่มนี้เดิมเขียนขึ้นเป็นภาคผนวกของหนังสือภาษาญี่ปุ่นชื่อ "การออกแบบและการพัฒนาไมโครเคอร์เนล"
- ขอให้สนุกกับการแฮ็ก OS!
สารบัญของหนังสือ
- 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 ความคิดเห็น
ปกติระบบปฏิบัติการเป็นสิ่งที่เคยได้เจอแค่ในหนังสือ พอได้เห็นเป็นโค้ดจริงก็เลยดีมากครับ
ขอบคุณที่แชร์ข้อมูลดี ๆ ครับ
ขอบคุณสำหรับข้อมูลดี ๆ มาก ๆ !!!!!!!
ผมอิจฉาคำพูดนี้มากเลยนะ ดูเหมือนว่าญี่ปุ่นจะมีหนังสือเฉพาะทางดี ๆ ออกมาเยอะจริง ๆ คงเป็นเรื่องของจำนวนประชากรสินะ?
พอมองหนังสือที่ถูกแปลแล้ว ดูเหมือนว่าจะไม่มีหนังสือที่ลงลึกมากในเชิงเทคนิค แต่ก็รู้สึกว่าเหมือนมีหนังสือออกมาหลากหลายสาขาอยู่เหมือนกัน สุดท้ายน่าจะเป็นเพราะตลาดใหญ่กว่านั่นแหละครับ
ขอบคุณสำหรับข้อมูลดีๆ ครับ
ลองทำดูสักครั้ง หรืออย่างน้อยถ้าเข้าใจจนถึงระดับหนึ่ง ภายหลังก็จะมองเห็นว่าระบบ Linux ทำงานอย่างไร จึงมีประโยชน์เวลาใช้งาน Linux
จนถึงช่วงต้นทศวรรษ 2000 การที่แต่ละคนลองสร้างเคอร์เนลเล็ก ๆ เองก็เคยเป็นกระแสอยู่พักหนึ่ง ผมเองก็เคยทำเหมือนกัน และด้วยเหตุนี้จึงได้ทำงานพัฒนา Linux kernel อยู่หลายปี ในประเทศเองก็มีหนังสือเกี่ยวกับการสร้างระบบปฏิบัติการออกมาหลายเล่มเหมือนกัน ถ้าลองค้นหาดูดี ๆ ก็น่าจะหาหนังสือที่อธิบายรายละเอียดได้มากกว่านี้มาอ่านได้
ถ้าไม่ได้จะย้ายงานไปสายที่เกี่ยวข้อง ทำเอาสนุกอย่างเดียวก็ไม่เลวนะ แต่ถ้าเป็นผม ทุกวันนี้คงแนะนำให้ไปศึกษาเรื่อง AI หรือ k8s มากกว่า ทุกวันนี้ก็ยังมีคนโพสต์ในที่อย่าง KLDP เป็นครั้งคราวว่าอยากเป็นนักพัฒนาเคอร์เนล แต่พอไปดูคอมเมนต์ก็มีแต่คนบอกให้ไปต่างประเทศกันหมด
คงเป็นเพราะในประเทศเราไม่มีบริษัทที่ลงทุนในระดับเคอร์เนลสินะครับ..? 555
ไม่แน่ใจว่าเป็นเพราะไม่จำเป็นเลยไม่ทำ หรือเพราะทำไม่ได้กันแน่ แต่ที่แน่ ๆ คือไม่มีครับ
ขอบคุณสำหรับข้อมูลดี ๆ ครับ
หนังสือแบบนี้นี่แหละคงเหมือนคัมภีร์ลับวิทยายุทธ์ที่พูดถึงกันในนิยายกำลังภายในสินะ 555
น่าสนใจมากเลยครับ สักวันหนึ่งผมก็อยากลองศึกษาการเขียนโปรแกรมระบบดูสักครั้งเหมือนกัน และรู้สึกว่านี่น่าจะเป็นจุดเริ่มต้นที่ทำให้เข้าใจการทำงานของ OS ในเชิงการเขียนโปรแกรมได้!
ความคิดเห็นจาก Hacker News
ผู้เขียนได้เขียนหนังสือเพื่อให้สามารถลองสร้างระบบปฏิบัติการด้วยตัวเองได้ในช่วงสุดสัปดาห์ และสามารถใช้ภาษาโปรแกรมที่ชอบอย่าง Rust หรือ Zig แทน C ได้
จากประสบการณ์การเขียนระบบปฏิบัติการแบบ "hobby" แนะนำให้เพิ่มการตั้งค่าดีบักด้วย GDB ให้เร็วที่สุดเท่าที่จะทำได้
คิดว่าการสร้างระบบปฏิบัติการขนาดเล็กสำหรับ RISC-V เป็นเรื่องที่ยอดเยี่ยม
สำหรับคนที่ชื่นชอบ Rust คู่มือของ phil-opp น่าจะเป็นแบบฝึกหัดที่สนุก
เริ่มศึกษาด้าน RISC-V แล้ว และพบว่า emulator ที่หนังสือที่กำลังอ่านให้มานั้นเรียบง่ายกว่า QEMU และมีไลเซนส์ที่ดูแปลก ๆ
คิดว่าน่าสนใจที่จะนำไปเปรียบเทียบกับ xv6-riscv
การพูดคุยระดับ low-level น่าสนใจอยู่เสมอ
ส่วนที่ยากที่สุดของการสร้างระบบปฏิบัติการคือการดีบัก
มีการกล่าวถึงสองโครงการ
เป็นแหล่งข้อมูลที่ดี และบันทึกเก็บไว้เพื่ออ่านในช่วงสุดสัปดาห์
ทำเคอร์เนลด้วย Nim...
คงสนุกน่าดูนะ