Western Digital กำลังทำงานบนไดรเวอร์ NVMe ที่เขียนด้วยภาษา Rust

สนิมลินุกซ์

การรวม Rust ใน Linux ได้รับการยอมรับในระดับสูงจากชุมชนและนักพัฒนา

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

ถึงแม้ว่า โครงการยังอยู่ในช่วงเริ่มต้นของการพัฒนาการทดสอบที่ดำเนินการแสดงให้เห็นว่าประสิทธิภาพของไดรเวอร์ Rust NVMe สอดคล้องกับไดรเวอร์ NVMe ที่เขียนด้วยภาษา C ในเคอร์เนล

ฉันชื่อ Matthew Wilcox ฉันเป็นหนึ่งในผู้เขียนข้อกำหนด NVMe ฉันเป็นคนแนะนำให้ฉันสร้างไดรเวอร์ NVMe เพื่อแสดงคุณค่าของ Rust มันประสบความสำเร็จเกินความคาดหมายที่สุดของฉัน 

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

เป็นที่สังเกตว่า ไดรเวอร์ Rust PCI NVMe มีฟังก์ชันที่จำเป็นสำหรับการทำงานอยู่แล้ว แต่ยังไม่พร้อมสำหรับการใช้งานอย่างแพร่หลาย เนื่องจากต้องมีการปรับปรุงแยกต่างหาก

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

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

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

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

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

การใช้ภาษา Rust ควรลดความเสี่ยงของช่องโหว่ เกิดจากการจัดการหน่วยความจำที่ไม่ปลอดภัย และจะขจัดข้อผิดพลาดที่เกิดขึ้น เช่น การเข้าถึงพื้นที่หน่วยความจำหลังจากที่ว่างและบัฟเฟอร์ล้น

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

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

เป็นมูลค่าการกล่าวขวัญว่าอาจเป็นไปได้ว่างานในอนาคตจะควบคู่ไปกับงานที่ Miguel Ojeda นำเสนอในไดรเวอร์ "Rust for Linux" ของเขา ซึ่งนำเสนอเป็นชุดของแพตช์

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา