7 คะแนน โดย GN⁺ 2024-09-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • รีโพซิทอรีนี้มีซอร์สโค้ดของซีรีส์ Writing an OS in Rust ที่เผยแพร่บน os.phil-opp.com
  • หากมีคำถาม สามารถเปิด issue หรือพูดคุยใน Gitter ได้

ตำแหน่งของโค้ด

  • โค้ดของแต่ละโพสต์อยู่ใน git branch แยกกัน
  • สามารถตรวจสอบสถานะระหว่างทางหลังจบแต่ละโพสต์ได้
  • ดูโค้ดของโพสต์ล่าสุดได้ที่นี่
  • สามารถหา branch ของแต่ละโพสต์ได้โดยตามลิงก์ (source code) ในรายการโพสต์
  • branch ถูกตั้งชื่อในรูปแบบ post-XX (XX คือหมายเลขโพสต์)
  • ตัวอย่าง: โพสต์ VGA Text Mode คือ post-03, โพสต์ Hardware Interrupts คือ post-07
  • ดูคำแนะนำการ build ได้ใน Readme ของ branch นั้น
  • สามารถใช้ git worktree เพื่อ checkout branch ไปยังไดเรกทอรีย่อยได้
    git worktree add code post-10
    
  • คำสั่งข้างต้นจะสร้างไดเรกทอรีย่อยชื่อ code และมีโค้ดของโพสต์ลำดับที่ 10 ("Heap Allocation") อยู่ภายใน

โพสต์

  • เป้าหมายของโปรเจกต์นี้คือการนำเสนอทutorial แบบทีละขั้นผ่านบล็อกโพสต์แต่ละตอน
  • ปัจจุบันมีโพสต์ดังต่อไปนี้

Bare Bones:

Interrupts:

Memory Management:

Multitasking:

โพสต์ของฉบับแรก

  • เวอร์ชันปัจจุบันของบล็อกคือฉบับที่สอง และฉบับแรกไม่ได้รับการดูแลแล้ว
  • โพสต์ของฉบับแรกยังอาจมีประโยชน์อยู่
  • รายการโพสต์มีดังนี้

Bare Bones:

Memory Management:

Exceptions:

Additional Resources:

  • Cross Compile Binutils
  • Cross Compile libcore
  • Set Up GDB
  • Handling Exceptions using Naked Functions
  • Catching Exceptions (source code)
  • Better Exception Messages (source code)
  • Returning from Exceptions (source code)

ใบอนุญาต

  • โปรเจกต์นี้ ยกเว้นโฟลเดอร์ blog/content ใช้สัญญาอนุญาตแบบใดแบบหนึ่งต่อไปนี้
  • ใบอนุญาตของโฟลเดอร์ blog/content ให้ดูที่ blog/content/README.md

การมีส่วนร่วม

  • เว้นแต่จะมีการระบุไว้เป็นอย่างอื่นอย่างชัดเจน ผลงานที่ตั้งใจส่งเข้ามาทั้งหมดจะถูกรวมอยู่ภายใต้สัญญาอนุญาตคู่ข้างต้น ตามที่กำหนดไว้ในใบอนุญาต Apache-2.0

สรุปโดย GN⁺

  • โปรเจกต์นี้นำเสนอทutorial แบบทีละขั้นสำหรับการเขียนระบบปฏิบัติการด้วย Rust
  • แต่ละโพสต์ครอบคลุมหัวข้อเฉพาะแบบแยกจากกัน พร้อมคำอธิบายและตัวอย่างโค้ด
  • เป็นแหล่งข้อมูลที่มีประโยชน์มากสำหรับผู้ที่สนใจการพัฒนาระบบปฏิบัติการ
  • สามารถเรียนรู้วิธีพัฒนาระบบปฏิบัติการโดยใช้ประโยชน์จากความปลอดภัยและประสิทธิภาพของ Rust
  • โปรเจกต์อื่นที่มีฟังก์ชันคล้ายกันคือ Redox OS

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

 
GN⁺ 2024-09-15
ความคิดเห็นบน Hacker News
  • เมื่อหลายปีก่อนเคยทำฉบับที่สองจบและได้เรียนรู้อะไรมากมาย

    • คำอธิบายเกี่ยวกับการพัฒนา OS ทำได้ดี และยังเป็นประโยชน์ต่อการเรียนรู้ Rust ด้วย
    • ผู้เขียนเข้าใจสำนวนการใช้ภาษานี้เป็นอย่างดี ทำให้วิธีการเขียนโค้ดมีคุณค่าเชิงการสอน
    • คำอธิบายการทำ futures ใน Rust บนบล็อกนั้นน่าประทับใจเป็นพิเศษ
    • หวังว่า Phil จะกลับมาเริ่มทำฉบับที่สามที่ใช้ EFI อีกครั้ง
    • ฉบับที่สองยังคงเป็นวิธีที่ยอดเยี่ยมในการใช้เวลาพัฒนาช่วงสุดสัปดาห์
  • หลังจากทำบทสอนจบเมื่อ 5 ปีก่อน ก็เริ่มทำ MOROS

    • แนะนำอย่างยิ่งสำหรับคนที่สนใจ Rust และการพัฒนา OS
    • Phil ทุ่มเทความพยายามอย่างมาก และเห็นผลลัพธ์นั้นได้อย่างชัดเจน
    • หลังจากนั้นก็สามารถเรียนรู้ต่อผ่านวิกิ osdev ได้
  • แทนที่จะเขียน OS ด้วย Rust ควรไปสร้างแพลตฟอร์มข้อมูลที่สามารถรัน DML/DDL ได้

  • หลังจากเจาะลึกเรื่อง Rust และการพัฒนา OS ก็มาเจอเนื้อหานี้

    • ทึ่งกับคุณภาพของเนื้อหานี้ และได้เรียนรู้ทั้งประวัติและการออกแบบของ OS รวมถึงองค์ประกอบของ Rust
    • Phil ทำผลงานได้ยอดเยี่ยม
  • เนื้อหานี้ทำให้เริ่มใช้ Rust ในปี 2021

    • รู้สึกขอบคุณมากที่มีเนื้อหานี้อยู่
  • บทความของ Phil เกี่ยวกับการพัฒนา OS น่าอ่านเสมอ

  • ตอนนี้ทีม Harvey OS กำลังทำโครงการ R9OS อยู่

  • ขอแนะนำโพสต์ของฉบับดั้งเดิมเป็นพิเศษ

    • ฉบับปัจจุบันช่วยมากเกินไปเพราะจัดการกระบวนการบูตด้วย crate แบบเฉพาะทาง
  • เพิ่งกลับมาจาก Rustconf และมีการออก OS หลักที่เน้นระบบปฏิบัติการแบบเรียลไทม์อยู่ราว ๆ ห้าตัว

    • ไม่ใช่ทั้งหมดที่เป็นโอเพนซอร์ส
  • แหล่งข้อมูลดี ๆ อีกอย่างคือการสร้าง RISC-V OS ด้วย Rust