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

添加评论