WD は Rust で NVMe ドライバーを開発しています。 FreeBSD で Rust を実験する

最近開催されている Linux Plumbers 2022 カンファレンスで、Western Digital のエンジニアが、Rust 言語で書かれ Linux カーネルで実行される、NVM-Express (NVMe) インターフェイスを備えた SSD ドライブ用の実験用ドライバーの開発についてプレゼンテーションを行いました。レベル。プロジェクトはまだ開発の初期段階にありますが、テストの結果、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 グループが FreeBSD カーネル用の Rust 言語でドライバーを開発するために実施した実験にも注目してください。例として、ファイル /dev/rustmodule に書き込まれたデータを返す単純なエコー ドライバーを詳しく調べます。実験の次の段階では、NCC グループは、ネットワークとファイル操作のセキュリティを向上させるために、Rust 言語でカーネルのコア コンポーネントを再加工する可能性を検討しています。

ただし、Rust 言語で単純なモジュールを作成できることが示されていますが、Rust を FreeBSD カーネルにさらに緊密に統合するには、追加の作業が必要になります。たとえば、Rust for Linux プロジェクトによって準備されたアドオンと同様に、サブシステムとカーネル構造上に一連の抽象化レイヤーを作成する必要性について言及しています。将来的には、Illumos カーネルで同様の実験を実施し、Linux、BSD、Illumos 用の Rust で書かれたドライバーで使用できる Rust の共通の抽象化を特定する予定です。

Microsoft と Google によると、自社のソフトウェア製品の脆弱性の約 70% は、安全でないメモリの処理が原因であるとのことです。 Rust言語を使用することで、メモリの安全でない作業による脆弱性のリスクが軽減され、解放後のメモリ領域へのアクセスやバッファのオーバーランなどのエラーの発生がなくなることが期待されています。

Rustのメモリ安全性は、参照チェック、オブジェクトの所有権とオブジェクトの有効期間(スコープ)の追跡、およびコード実行中のメモリアクセスの正確性の評価を通じて、コンパイル時に提供されます。 Rust は整数オーバーフローに対する保護も提供し、使用前に変数値の初期化を必須にし、標準ライブラリでエラーをより適切に処理し、デフォルトで不変参照と変数の概念を適用し、論理エラーを最小限に抑えるための強力な静的型付けを提供します。

出所: オープンネット.ru

コメントを追加します