126 คะแนน โดย GN⁺ 2025-01-09 | 14 ความคิดเห็น | แชร์ทาง WhatsApp
  • หนังสือเล่มนี้อธิบายวิธีสร้างระบบปฏิบัติการขนาดเล็กจากศูนย์แบบเป็นขั้นเป็นตอน
  • คำว่า ระบบปฏิบัติการ (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!

สารบัญของหนังสือ

  1. Intro
  2. Getting Started
  3. RISC-V 101
  4. Overview
  5. Boot
  6. Hello World!
  7. C Standard Library
  8. Kernel Panic
  9. Exception
  10. Memory Allocation
  11. Process
  12. Page Table
  13. Application
  14. User Mode
  15. System Call
  16. Disk I/O
  17. File System
  18. Outro

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

 
princox 2025-01-15

ปกติระบบปฏิบัติการเป็นสิ่งที่เคยได้เจอแค่ในหนังสือ พอได้เห็นเป็นโค้ดจริงก็เลยดีมากครับ

ขอบคุณที่แชร์ข้อมูลดี ๆ ครับ

 
yuhyun 2025-01-13

ขอบคุณสำหรับข้อมูลดี ๆ มาก ๆ !!!!!!!

 
reagea0 2025-01-10
  • หนังสือเล่มนี้เดิมเขียนขึ้นเป็นภาคผนวกของหนังสือภาษาญี่ปุ่นชื่อ "การออกแบบและการอิมพลีเมนต์ไมโครเคอร์เนล"

ผมอิจฉาคำพูดนี้มากเลยนะ ดูเหมือนว่าญี่ปุ่นจะมีหนังสือเฉพาะทางดี ๆ ออกมาเยอะจริง ๆ คงเป็นเรื่องของจำนวนประชากรสินะ?

 
gurugio 2025-01-11

พอมองหนังสือที่ถูกแปลแล้ว ดูเหมือนว่าจะไม่มีหนังสือที่ลงลึกมากในเชิงเทคนิค แต่ก็รู้สึกว่าเหมือนมีหนังสือออกมาหลากหลายสาขาอยู่เหมือนกัน สุดท้ายน่าจะเป็นเพราะตลาดใหญ่กว่านั่นแหละครับ

 
romakus 2025-01-10

ขอบคุณสำหรับข้อมูลดีๆ ครับ

 
skrevolve 2025-01-09

ลองทำดูสักครั้ง หรืออย่างน้อยถ้าเข้าใจจนถึงระดับหนึ่ง ภายหลังก็จะมองเห็นว่าระบบ Linux ทำงานอย่างไร จึงมีประโยชน์เวลาใช้งาน Linux

 
gurugio 2025-01-09

จนถึงช่วงต้นทศวรรษ 2000 การที่แต่ละคนลองสร้างเคอร์เนลเล็ก ๆ เองก็เคยเป็นกระแสอยู่พักหนึ่ง ผมเองก็เคยทำเหมือนกัน และด้วยเหตุนี้จึงได้ทำงานพัฒนา Linux kernel อยู่หลายปี ในประเทศเองก็มีหนังสือเกี่ยวกับการสร้างระบบปฏิบัติการออกมาหลายเล่มเหมือนกัน ถ้าลองค้นหาดูดี ๆ ก็น่าจะหาหนังสือที่อธิบายรายละเอียดได้มากกว่านี้มาอ่านได้
ถ้าไม่ได้จะย้ายงานไปสายที่เกี่ยวข้อง ทำเอาสนุกอย่างเดียวก็ไม่เลวนะ แต่ถ้าเป็นผม ทุกวันนี้คงแนะนำให้ไปศึกษาเรื่อง AI หรือ k8s มากกว่า ทุกวันนี้ก็ยังมีคนโพสต์ในที่อย่าง KLDP เป็นครั้งคราวว่าอยากเป็นนักพัฒนาเคอร์เนล แต่พอไปดูคอมเมนต์ก็มีแต่คนบอกให้ไปต่างประเทศกันหมด

 
bbulbum 2025-01-10

คงเป็นเพราะในประเทศเราไม่มีบริษัทที่ลงทุนในระดับเคอร์เนลสินะครับ..? 555

 
gurugio 2025-01-11

ไม่แน่ใจว่าเป็นเพราะไม่จำเป็นเลยไม่ทำ หรือเพราะทำไม่ได้กันแน่ แต่ที่แน่ ๆ คือไม่มีครับ

 
coma333 2025-01-09

ขอบคุณสำหรับข้อมูลดี ๆ ครับ

 
tsboard 2025-01-09

หนังสือแบบนี้นี่แหละคงเหมือนคัมภีร์ลับวิทยายุทธ์ที่พูดถึงกันในนิยายกำลังภายในสินะ 555

 
bbulbum 2025-01-09

น่าสนใจมากเลยครับ สักวันหนึ่งผมก็อยากลองศึกษาการเขียนโปรแกรมระบบดูสักครั้งเหมือนกัน และรู้สึกว่านี่น่าจะเป็นจุดเริ่มต้นที่ทำให้เข้าใจการทำงานของ OS ในเชิงการเขียนโปรแกรมได้!

 
GN⁺ 2025-01-09
ความคิดเห็นจาก Hacker News
  • ผู้เขียนได้เขียนหนังสือเพื่อให้สามารถลองสร้างระบบปฏิบัติการด้วยตัวเองได้ในช่วงสุดสัปดาห์ และสามารถใช้ภาษาโปรแกรมที่ชอบอย่าง Rust หรือ Zig แทน C ได้

    • โดยตัดให้เหลือเฉพาะส่วนที่จำเป็นเท่านั้น ไม่ได้ทำให้คล้ายกับ UNIX และการคิดเปรียบเทียบความแตกต่างกับ Linux หรือ Windows ก็สนุกดี
    • การออกแบบระบบปฏิบัติการก็เหมือนกับการสร้างโลกของตัวเอง
    • บางย่อหน้าอาจให้ความรู้สึกเหมือนแปลด้วยเครื่อง และหากมีเวลาก็ขอให้ส่ง PR มา
    • เนื้อหาเขียนด้วย Markdown
  • จากประสบการณ์การเขียนระบบปฏิบัติการแบบ "hobby" แนะนำให้เพิ่มการตั้งค่าดีบักด้วย GDB ให้เร็วที่สุดเท่าที่จะทำได้

    • QEMU มี GDB server ในตัว และต้องเชื่อมต่อ GDB client ของสถาปัตยกรรมเป้าหมาย (riscv) ไปยัง QEMU GDB server ผ่านเครือข่าย
  • คิดว่าการสร้างระบบปฏิบัติการขนาดเล็กสำหรับ RISC-V เป็นเรื่องที่ยอดเยี่ยม

    • ส่วนตัวเคยเขียนเคอร์เนลสำหรับ x86-64 ด้วย Nim และกำลังพัฒนา JetBrains plugin อยู่
  • สำหรับคนที่ชื่นชอบ Rust คู่มือของ phil-opp น่าจะเป็นแบบฝึกหัดที่สนุก

    • ตอนลองครั้งแรกเข้าใจเพียงประมาณ 5% แต่หลังจากนั้น 2-3 ปีก็กลับมาลองใหม่และค่อย ๆ ทบทวนหัวข้อทีละอย่าง
  • เริ่มศึกษาด้าน RISC-V แล้ว และพบว่า emulator ที่หนังสือที่กำลังอ่านให้มานั้นเรียบง่ายกว่า QEMU และมีไลเซนส์ที่ดูแปลก ๆ

    • ดูเหมือนเป็นโครงการเชิงวิชาการ และสงสัยว่ามีการใช้งานจริงหรือไม่
  • คิดว่าน่าสนใจที่จะนำไปเปรียบเทียบกับ xv6-riscv

    • มีการให้เวอร์ชัน HTML ของหนังสือ xv6 ด้วย
  • การพูดคุยระดับ low-level น่าสนใจอยู่เสมอ

    • พบคำผิดเล็กน้อยในหน้า "RISC-V 101" โดยเขียนเป็น "CPU" ผิดจากที่ควรเป็น "ISA"
  • ส่วนที่ยากที่สุดของการสร้างระบบปฏิบัติการคือการดีบัก

    • ยิ่งอายุมากขึ้นก็ยิ่งคิดว่าปัญหาที่ไม่ต้องใช้ความเชี่ยวชาญซับซ้อนสามารถแก้ได้ด้วยการลองซ้ำไปเรื่อย ๆ
  • มีการกล่าวถึงสองโครงการ

    • nuta/microkernel-book
    • mit-pdos/xv6-riscv
  • เป็นแหล่งข้อมูลที่ดี และบันทึกเก็บไว้เพื่ออ่านในช่วงสุดสัปดาห์

 
mhcoma 2025-01-14

ทำเคอร์เนลด้วย Nim...
คงสนุกน่าดูนะ