23 คะแนน โดย kuroneko 2023-08-31 | 10 ความคิดเห็น | แชร์ทาง WhatsApp
  • ความพยายามในการสร้างระบบปฏิบัติการแบบ Non-Unix ด้วย Rust
  • ตอนนี้รองรับการแสดงผลกราฟิก, การจัดสรรหน่วยความจำแบบไดนามิก, การทำงานพร้อมกัน, คีย์บอร์ด/เมาส์
  • จุดที่น่าสนใจคือออกแบบให้ทุกแอปทำงานได้ในรูปแบบฟังก์ชันเดียว
    • แอปจะทำงานโดยรับ Context ที่มีความสามารถของ OS รวมอยู่ด้วย จึงทำให้ทุกการโต้ตอบเกิดขึ้นผ่าน Context
    • ด้วยเหตุนี้ sandboxing, debugging ฯลฯ จึงทำได้ง่ายมาก และการคงสภาพหน่วยความจำก็ทำผ่าน Context เช่นกัน ทำให้รีสตาร์ตและพักเครื่องได้ง่าย
  • ตอนนี้การออกแบบเกี่ยวกับแอปยังไม่สมบูรณ์ จึงยังมีปัญหา เช่น ทุกแอปสามารถมองเห็นหน่วยความจำของกันและกันได้
  • ส่วนการรองรับ persistent storage, GPU, เครือข่าย ฯลฯ ยังเป็นสิ่งที่ต้องพัฒนาต่อ

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

 
honglu 2023-08-31

คอนเซปต์ดูเซ็กซี่ดีนะ ทั้งโลกกลายเป็น Rust หมดแล้ว.. 55555

 
botplaysdice 2023-08-31

"แอปสามารถมองเห็นหน่วยความจำของกันและกันได้"... :)

 
ahwjdekf 2023-08-31

ใช่ ตลกมากเลย

 
xguru 2023-08-31

VirGL - Virtual 3D GPU ที่ใช้งานได้ภายใน QEMU VM

รองรับ VirGL จึงสามารถติดตั้งบน QEMU เพื่อทดสอบได้

 
kuroneko 2023-08-31

อนาคตที่รันโปรแกรม Rust บน Rust OS... ? โลกทั้งใบกลายเป็น Rust ไปหมดแล้วนะ

 
heycalmdown 2023-08-31

ถ้ามีเธรด HN อยู่ในคอมเมนต์แล้วให้ neo สรุปให้อัตโนมัติก็น่าจะดีนะ 555 อยู่ไม่ได้แล้วถ้าไม่มี neo

 
kuroneko 2023-08-31

ต่อไปผมจะลองนำสรุปโดย AI มาด้วยครับ ดูแปลกดีที่เหมือนจะสรุปแยกตามข้ออ้างของแต่ละคน?

  • danhau: ตั้งข้อสงสัยว่าการจัดตารางแบบ cooperative จะล้มเหลวอย่างที่คนอื่นอ้างหรือไม่ และกังวลกับข้อเท็จจริงที่ว่าแอปต่าง ๆ ต้องร่วมมือกันอยู่แล้ว เขากังวลว่าการโจมตีแบบปฏิเสธการให้บริการอาจทำให้ระบบประเภทนี้หยุดทำงานได้อย่างง่ายดาย
  • aseipp: เห็นด้วยกับ danhau โดยบอกว่าการจัดตารางแบบ cooperative อาจทำให้ความผิดพลาดง่าย ๆ กลายเป็นปัญหาร้ายแรงต่อระบบได้ จึงอาจเป็นปัญหาสำหรับการรันโปรแกรมตามอำเภอใจ
  • gnulinux: เสนอว่าอาจไม่ใช่ทั้งหมด โดยบอกว่าอาจมีวิธีให้แอปแบบ cooperative ใช้งานได้พร้อมกับป้องกันไม่ให้ระบบค้างเพราะลูปไม่รู้จบ เช่น การตั้ง timeout หรือการตรวจจับลูป
  • DSMan195276: โต้แย้งว่าในความเป็นจริงแล้วไม่ใช่ทุกอย่าง เพราะโปรแกรมแบบ cooperative ตั้งอยู่บนสมมติฐานว่าจะไม่ถูก preempt และบอกว่าแม้เพียงลดระดับของการ preemption ลง ก็จำเป็นต้องเปลี่ยนวิธีเขียนโปรแกรมแล้ว
  • getpokedagain: บอกว่าไม่ใช่ทุกระบบปฏิบัติการจะต้องรันแอปหลายผู้ใช้ที่คาดเดาไม่ได้ และในระบบที่มีข้อจำกัดอย่างอุปกรณ์ embedded หรือเกมคอนโซล โมเดลแบบ cooperative อาจใช้งานได้
  • Symmetry: บอกว่า CPU สมัยใหม่มีหลายเธรด ดังนั้นถ้า OS สามารถกลับมาทำงานได้พร้อมตรวจสอบการใช้งานเกินพอดีของบางเธรด โมเดลของ Fomos ก็อาจทำงานได้โดยไม่หยุดชะงักทั้งหมด
  • cmrdporcupine: กล่าวว่ากรณีใช้งานเฉพาะทางอาจได้ประโยชน์จากโมเดลที่มอบหมายงานไปยังคอร์ที่ว่างโดยตรง แต่ก็ชี้ว่าความซับซ้อนของการจัดการ concurrency อาจไม่ได้ง่ายกว่าการทำ time-slicing มากนัก
  • JoeAltmaier: บอกว่าลูป while(true) บนเธรดหนึ่งอาจไม่กระทบเธรดอื่น แต่การใช้แบตเตอรี่และอุณหภูมิที่สูงขึ้นก็ยังแสดงให้เห็นว่าเป็นปัญหาด้านทรัพยากรที่ต้องจัดการ
  • keyle: ตื่นเต้นกับโปรเจ็กต์นี้และแนวทางแบบ minimalist พร้อมคาดหวังการพัฒนาเพิ่มเติม เช่น file system ที่ทำให้ตรงตามข้อกำหนดดั้งเดิมของการรัน DOOM
  • mepian: ชี้แจงว่าเมธอดของ Smalltalk ถูกเรียกระหว่างอ็อบเจ็กต์ ไม่ใช่ฟังก์ชันที่เป็นอิสระ และอธิบายว่า OS Lisp ยุคแรกบางตัวก็ใช้ฟังก์ชันก่อนที่จะมีระบบอ็อบเจ็กต์
 
xguru 2023-08-31

โชคดี? ที่ Neo จัดการโพสต์เดียวกันนี้ไปแล้ว 555

Fomos: ระบบปฏิบัติการทดลองที่สร้างด้วย Rust

 
xguru 2023-08-31

ปัญหาคือผมเองก็ดูลิงก์นั้นแล้วสรุปไปพร้อมกันเหมือนกัน เศร้า

คราวนี้ก็เชิญดูสรุปถึง 3 เวอร์ชันแล้วเทียบกันได้เลยครับ ฮ่า

  • อยากลองสร้าง OS แบบ Non-Unix ดู
  • Exo-Kernel น่าสนใจ แต่ส่วนใหญ่ยังเป็นแค่ทฤษฎี เลยช่วยให้เข้าใจแพตเทิร์นนี้ได้
  • ฟีเจอร์
    • แสดงผลกราฟิก, การจัดสรรหน่วยความจำแบบไดนามิก, ทุกแอปรันอยู่ในลูปแบบอะซิงก์
    • เมาส์/คีย์บอร์ด Virtio (ไดรเวอร์ก็เป็นอะซิงก์ทาสก์เช่นกัน)
    • การจัดตารางแบบร่วมมือกัน (แอปจะส่งต่อการควบคุมให้มากที่สุด)
    • หลังบูตแล้วไม่มี context switch
    • รองรับ Virgl™ เกือบทั้งหมด
  • จุดที่ไม่เหมือนใคร
    • ซิกเนเจอร์ของแอป pub extern "C" fn _start(ctx: &mut Context) -> i32
    • แอปไม่ต้องใช้ standard library และฟังก์ชันทั้งหมดของ OS จะถูกส่งให้แอปผ่าน Context
    • ใน Fomos แอปเป็นเพียง function เดียว นี่คือส่วนที่สำคัญที่สุด ไฟล์ executable ของระบบแบบ Unix/Windows ซับซ้อนกว่าฟังก์ชันมาก
 
roxie 2023-09-04

ไม่มีปุ่ม thumbs down แล้วคุณทำให้คาร์มาติดลบได้ยังไงเหรอ