WD กำลังพัฒนาไดรเวอร์ NVMe ใน Rust ทดลองกับ Rust บน FreeBSD

ในการประชุม Linux Plumbers 2022 ที่กำลังดำเนินอยู่ในปัจจุบัน วิศวกรจาก Western Digital ได้นำเสนอเกี่ยวกับการพัฒนาไดรเวอร์ทดลองสำหรับ NVM-Express (NVMe) SSD ที่เขียนด้วยภาษา Rust และทำงานที่ระดับเคอร์เนล Linux แม้ว่าโครงการจะยังอยู่ในช่วงเริ่มต้นของการพัฒนา แต่การทดสอบที่ดำเนินการแสดงให้เห็นว่าประสิทธิภาพของไดรเวอร์ Rust NVMe สอดคล้องกับไดรเวอร์ NVMe ที่เขียนด้วยภาษา C ในเคอร์เนล

WD กำลังพัฒนาไดรเวอร์ NVMe ใน Rust ทดลองกับ Rust บน FreeBSD
WD กำลังพัฒนาไดรเวอร์ NVMe ใน Rust ทดลองกับ Rust บน FreeBSD

รายงานระบุว่าไดรเวอร์ NVMe ในปัจจุบันในภาษา C เป็นที่น่าพอใจอย่างยิ่งสำหรับนักพัฒนา แต่ระบบย่อย NVMe เป็นแพลตฟอร์มที่ดีในการสำรวจความเป็นไปได้ในการพัฒนาไดรเวอร์ใน Rust เนื่องจากค่อนข้างง่าย ใช้กันอย่างแพร่หลาย มีข้อกำหนดประสิทธิภาพสูง และมี การใช้งานอ้างอิงที่ได้รับการพิสูจน์แล้ว สำหรับการเปรียบเทียบและรองรับอินเทอร์เฟซต่างๆ (dev, pci, dma, blk-mq, gendisk, sysfs)

มีข้อสังเกตว่าไดรเวอร์ Rust PCI NVMe มีฟังก์ชันที่จำเป็นสำหรับการทำงานอยู่แล้ว แต่ยังไม่พร้อมสำหรับการใช้งานอย่างแพร่หลายเนื่องจากต้องมีการปรับปรุงแยกต่างหาก แผนสำหรับอนาคต ได้แก่ การกำจัดบล็อกที่ไม่ปลอดภัยที่มีอยู่ การสนับสนุนในการถอดอุปกรณ์และการยกเลิกการโหลดไดรเวอร์ การสนับสนุนอินเทอร์เฟซ sysfs การใช้การเริ่มต้นแบบ Lazy การสร้างไดรเวอร์สำหรับ blk-mq และการทดลองกับโมเดลการเขียนโปรแกรมแบบอะซิงโครนัสสำหรับ Queue_rq

นอกจากนี้ เรายังสังเกตการทดลองที่ดำเนินการโดย NCC Group เพื่อพัฒนาไดรเวอร์ในภาษา Rust สำหรับเคอร์เนล FreeBSD ตามตัวอย่าง ไดรเวอร์ echo แบบธรรมดาที่ส่งคืนข้อมูลที่เขียนไปยังไฟล์ /dev/rustmodule จะถูกวิเคราะห์โดยละเอียด ในระยะต่อไปของการทดลอง NCC Group กำลังพิจารณาปรับปรุงส่วนประกอบหลักหลักใน Rust เพื่อปรับปรุงความปลอดภัยของการทำงานของเครือข่ายและไฟล์

ดังที่ได้กล่าวไปแล้ว แม้ว่าจะแสดงให้เห็นว่ามีความเป็นไปได้ที่จะสร้างโมดูลอย่างง่ายใน Rust ได้ แต่การรวม Rust เข้ากับเคอร์เนล FreeBSD อย่างแน่นหนายิ่งขึ้นนั้นจะต้องมีการทำงานเพิ่มเติม ตัวอย่างเช่น กล่าวถึงความจำเป็นในการสร้างชุดของเลเยอร์นามธรรมบนระบบย่อยและโครงสร้างเคอร์เนล คล้ายกับส่วนเสริมที่จัดทำโดยโปรเจ็กต์ Rust สำหรับ Linux ในอนาคต มีการวางแผนที่จะดำเนินการทดลองที่คล้ายกันกับแกน Illumos และเน้นนามธรรมทั่วไปใน Rust ที่สามารถใช้ในไดรเวอร์ที่เขียนโดย Rust สำหรับ Linux, BSD และ Illumos

จากข้อมูลของ Microsoft และ Google ประมาณ 70% ของช่องโหว่ในผลิตภัณฑ์ซอฟต์แวร์มีสาเหตุมาจากการจัดการหน่วยความจำที่ไม่ปลอดภัย สันนิษฐานว่าการใช้ภาษา Rust จะช่วยลดความเสี่ยงของช่องโหว่ที่เกิดจากการจัดการหน่วยความจำที่ไม่ปลอดภัย และกำจัดการเกิดข้อผิดพลาด เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ถูกปล่อยให้ว่างและบัฟเฟอร์โอเวอร์รัน

การจัดการที่ปลอดภัยต่อหน่วยความจำมีให้ใน Rust ณ เวลาคอมไพล์ผ่านการตรวจสอบการอ้างอิง การติดตามความเป็นเจ้าของอ็อบเจกต์และอายุอ็อบเจกต์ (ขอบเขต) ตลอดจนผ่านการประเมินความถูกต้องของการเข้าถึงหน่วยความจำระหว่างการเรียกใช้โค้ด สนิมยังให้การป้องกันการล้นของจำนวนเต็ม, จำเป็นต้องมีการกำหนดค่าเริ่มต้นที่จำเป็นของค่าตัวแปรก่อนใช้งาน, จัดการข้อผิดพลาดได้ดีขึ้นในไลบรารีมาตรฐาน, ใช้แนวคิดของการอ้างอิงและตัวแปรที่ไม่เปลี่ยนรูปแบบตามค่าเริ่มต้น, เสนอการพิมพ์แบบคงที่ที่แข็งแกร่งเพื่อลดข้อผิดพลาดเชิงตรรกะ

ที่มา: opennet.ru

เพิ่มความคิดเห็น