WD vyvíja ovládač NVMe v Ruste. Experimentovanie s Rustom na FreeBSD

Na konferencii Linux Plumbers 2022, ktorá sa koná v týchto dňoch, vystúpil inžinier zo spoločnosti Western Digital s prezentáciou o vývoji experimentálneho ovládača pre SSD disky s rozhraním NVM-Express (NVMe), napísaného v jazyku Rust a spusteného na linuxovom jadre. úrovni. Napriek tomu, že projekt je stále v ranom štádiu vývoja, testovanie ukázalo, že výkon ovládača NVMe v jazyku Rust zodpovedá ovládaču NVMe napísanému v jazyku C dostupnému v jadre.

WD vyvíja ovládač NVMe v Ruste. Experimentovanie s Rustom na FreeBSD
WD vyvíja ovládač NVMe v Ruste. Experimentovanie s Rustom na FreeBSD

V správe sa uvádza, že súčasný ovládač NVMe v jazyku C je pre vývojárov úplne uspokojivý, ale subsystém NVMe je dobrou platformou na skúmanie uskutočniteľnosti vývoja ovládačov v jazyku Rust, pretože je pomerne jednoduchý, široko používaný, má vysoké požiadavky na výkon a má osvedčená referenčná implementácia na porovnanie a podporuje rôzne rozhrania (dev, pci, dma, blk-mq, gendisk, sysfs).

Je potrebné poznamenať, že ovládač PCI NVMe pre Rust už poskytuje funkcie potrebné na prevádzku, ale ešte nie je pripravený na široké použitie, pretože vyžaduje individuálne vylepšenia. Plány do budúcnosti zahŕňajú zbavenie kódu existujúcich nebezpečných blokov, podporu operácií odstraňovania zariadení a uvoľnenia ovládačov, podporu rozhrania sysfs, implementáciu lenivej inicializácie, vytvorenie ovládača pre blk-mq a experimentovanie s použitím asynchrónneho programovacieho modelu pre queue_rq.

Okrem toho si môžeme všimnúť experimenty uskutočnené skupinou NCC na vývoj ovládačov v jazyku Rust pre jadro FreeBSD. Ako príklad podrobne preskúmame jednoduchý ovládač echo, ktorý vracia údaje zapísané do súboru /dev/rustmodule. V ďalšej fáze experimentovania NCC Group zvažuje možnosť prepracovania základných komponentov jadra v jazyku Rust, aby sa zlepšila bezpečnosť sieťových a súborových operácií.

Aj keď sa ukázalo, že je možné vytvárať jednoduché moduly v jazyku Rust, užšia integrácia Rustu do jadra FreeBSD si bude vyžadovať ďalšiu prácu. Spomínajú napríklad potrebu vytvorenia množiny abstraktných vrstiev nad subsystémami a štruktúrami jadra, podobne ako doplnky, ktoré pripravil projekt Rust for Linux. V budúcnosti plánujeme uskutočniť podobné experimenty s jadrom Illumos a identifikovať bežné abstrakcie v Ruste, ktoré by sa dali použiť v ovládačoch napísaných v Ruste pre Linux, BSD a Illumos.

Podľa Microsoftu a Google je asi 70 % zraniteľností v ich softvérových produktoch spôsobených nebezpečnou manipuláciou s pamäťou. Očakáva sa, že použitie jazyka Rust zníži riziko zraniteľností spôsobených nebezpečnou prácou s pamäťou a eliminuje výskyt chýb, ako je prístup k pamäťovej oblasti po jej uvoľnení a prekročenie vyrovnávacej pamäte.

Bezpečná manipulácia s pamäťou je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu a životnosti objektu (rozsahu), ako aj prostredníctvom hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.

Zdroj: opennet.ru

Pridať komentár