WD 正在使用 Rust 開發 NVMe 驅動程式。 在 FreeBSD 上試驗 Rust

在近日舉行的Linux Plumbers 2022 會議上,西部數據的一位工程師介紹了一款用於SSD 驅動器的實驗性驅動程式的開發,該驅動器採用NVM-Express (NVMe) 接口,該驅動程式採用Rust 語言編寫並在Linux 核心上運行等級。 儘管該專案仍處於早期開發階段,但測試表明,Rust 語言的 NVMe 驅動程式的效能與核心中可用的 C 語言編寫的 NVMe 驅動程式的效能相當。

WD 正在使用 Rust 開發 NVMe 驅動程式。 在 FreeBSD 上試驗 Rust
WD 正在使用 Rust 開發 NVMe 驅動程式。 在 FreeBSD 上試驗 Rust

報告指出,目前C 語言的NVMe 驅動程式對開發人員來說完全令人滿意,但NVMe 子系統是探索用Rust 開發驅動程式可行性的一個很好的平台,因為它非常簡單、使用廣泛、效能要求高、並且具有用於比較的經過驗證的參考實現,支援各種介面(dev、pci、dma、blk-mq、gendisk、sysfs)。

值得注意的是,Rust 的 PCI NVMe 驅動程式已經提供了操作所需的功能,但尚未準備好廣泛使用,因為它需要單獨的改進。 未來的計劃包括消除現有不安全區塊的程式碼、支援裝置刪除和驅動程式卸載操作、支援 sysfs 介面、實作延遲初始化、為 blk-mq 建立驅動程序,以及嘗試為queue_rq 使用非同步程式設計模型。

此外,我們還可以注意到 NCC Group 為使用 Rust 語言為 FreeBSD 核心開發驅動程式而進行的實驗。 作為範例,我們詳細研究了一個簡單的 echo 驅動程序,該驅動程式會傳回寫入檔案 /dev/rustmodule 的資料。 在下一階段的實驗中,NCC Group正在考慮以Rust語言重新設計核心核心元件的可能性,以提高網路和檔案操作的安全性。

然而,儘管已經證明可以用 Rust 語言創建簡單的模組,但將 Rust 更緊密地整合到 FreeBSD 核心中將需要額外的工作。 例如,他們提到需要在子系統和核心結構上建立一組抽象層,類似於 Rust for Linux 專案準備的附加元件。 未來,我們計劃使用 Illumos 核心進行類似的實驗,並確定 Rust 中的常見抽象,這些抽象可用於用 Rust 編寫的 Linux、BSD 和 Illumos 驅動程式。

據微軟和谷歌稱,其軟體產品中約 70% 的漏洞是由不安全的記憶體處理引起的。 預計Rust語言的使用將降低因不安全的記憶體操作而導致的漏洞風險,並消除諸如存取已釋放的記憶體區域和溢位緩衝區等錯誤的發生。

Rust 在編譯時通過引用檢查、跟踪對象所有權和對像生命週期(範圍)以及在代碼執行期間評估內存訪問的正確性來提供內存安全。 Rust 還提供防止整數溢出的保護,要求在使用前強制初始化變量值,更好地處理標準庫中的錯誤,默認應用不可變引用和變量的概念,提供強靜態類型以最小化邏輯錯誤。

來源: opennet.ru

添加評論