WD vyvíja NVMe ovládač v jazyku Rust. Experimenty s Rustom vo FreeBSD

Na prebiehajúcej konferencii Linux Plumbers 2022 inžinier zo spoločnosti Western Digital predstavil prednášku o vývoji experimentálneho ovládača pre SSD úložiská s rozhraním NVM-Express (NVMe), napísaného v jazyku Rust a fungujúceho na úrovni jadra Linuxu. Napriek tomu, že projekt je zatiaľ v ranom štádiu vývoja, vykonané testovanie ukázalo, že výkon NVMe ovládača v jazyku Rust zodpovedá existujúcemu ovládaču NVMe napísanému v jazyku C.

WD vyvíja NVMe ovládač v jazyku Rust. Experimenty s Rustom vo FreeBSD
WD vyvíja NVMe ovládač v jazyku Rust. Experimenty s Rustom vo FreeBSD

Vo prednáške sa uvádza, že aktuálny NVMe ovládač v jazyku C úplne vyhovuje developerom, ale subsystém NVMe je dobrým miestom na preskúmanie uskutočniteľnosti vývoja ovládačov v jazyku Rust, pretože je dostatočne jednoduchý, široko používaný, má vysoké požiadavky na výkon, má overenú referenčnú implementáciu na porovnanie a podporuje rôzne rozhrania (dev, pci, dma, blk-mq, gendisk, sysfs).

Je pozoruhodné, že PCI NVMe ovládač na Rust už poskytuje potrebnú funkčnosť na prácu, ale zatiaľ nie je pripravený na široké využitie, pretože si vyžaduje ďalšie úpravy. Medzi budúce plány patrí odstránenie existujúcich unsafe blokov, podpora operácií odstraňovania zariadení a odpojenia ovládača, podpora sysfs rozhrania, implementácia oneskorenej inicializácie, vytvorenie ovládača pre blk-mq a experimenty s využitím asynchrónneho modelu programovania pre queue_rq.

Prehrajte video

Ďalej možno spomenúť experimenty uskutočňované spoločnosťou NCC Group pri vývoji ovládačov v jazyku Rust pre jadro FreeBSD. Ako príklad sa podrobne skúma jednoduchý echo-ovládač, ktorý vracia údaje zapísané do súboru /dev/rustmodule. V nasledujúcej fáze experimentov NCC Group zvažuje možnosť prepracovania základných komponentov jadra v jazyku Rust s cieľom zvýšiť bezpečnosť sieťových a súborových operácií.

Aj keď sa preukázala možnosť vytvorenia jednoduchých modulov v jazyku Rust, hlbšia integrácia Rustu do jadra FreeBSD si bude vyžadovať ďalšiu prácu. Napríklad sa spomína potreba vytvorenia sady vrstiev abstrakcie nad subsystémami a štruktúrami jadra, podobnými rozšíreniam pripraveným projektom Rust for Linux. V budúcnosti sa plánuje uskutočniť podobné experimenty s jadrom Illumos a vyčleniť spoločné abstrakcie v Rust, ktoré by sa mohli používať v ovládačoch napísaných v Rust pre Linux, BSD a Illumos.

Podľa spoločností Microsoft a Google je približne 70 % zraniteľností v ich softvérových produktoch spôsobených nebezpečnou prácou s pamäťou. Predpokladá sa, že použitie jazyka Rust zníži riziko vzniku zraniteľností spôsobených nebezpečnou prácou s pamäťou a vylúči vznik takých chýb, ako je prístup k oblasti pamäte po jej uvoľnení a prekročenie hranice bufferu.

Bezpečná práca s pamäťou je v Rust zabezpečená počas kompilácie prostredníctvom overovania referencií, sledovania vlastníctva objektov a zohľadnenia životnosti objektov (oblasti viditeľnosti), ako aj prostredníctvom hodnotenia správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred pretečením celočíselných hodnôt, vyžaduje povinnú inicializáciu hodnôt premenných pred ich použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolených a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster