WD vyvíjí ovladač NVMe v Rustu. Experimentování s Rustem na FreeBSD

Na konferenci Linux Plumbers 2022, která se koná v těchto dnech, přednesl inženýr ze společnosti Western Digital prezentaci o vývoji experimentálního ovladače pro SSD disky s rozhraním NVM-Express (NVMe), napsaného v jazyce Rust a běžícího na linuxovém jádře. úroveň. Navzdory skutečnosti, že projekt je stále v rané fázi vývoje, testování ukázalo, že výkon ovladače NVMe v jazyce Rust odpovídá ovladači NVMe napsanému v jazyce C dostupném v jádře.

WD vyvíjí ovladač NVMe v Rustu. Experimentování s Rustem na FreeBSD
WD vyvíjí ovladač NVMe v Rustu. Experimentování s Rustem na FreeBSD

Zpráva uvádí, že aktuální ovladač NVMe v jazyce C je pro vývojáře zcela vyhovující, ale subsystém NVMe je dobrou platformou pro zkoumání proveditelnosti vývoje ovladačů v Rustu, protože je poměrně jednoduchý, široce používaný, má vysoké požadavky na výkon a má osvědčená referenční implementace pro srovnání a podporuje různá rozhraní (dev, pci, dma, blk-mq, gendisk, sysfs).

Je třeba poznamenat, že ovladač PCI NVMe pro Rust již poskytuje funkce nezbytné pro provoz, ale ještě není připraven pro široké použití, protože vyžaduje individuální vylepšení. Plány do budoucna zahrnují zbavení kódu existujících nebezpečných bloků, podporu operací odstranění zařízení a uvolnění ovladačů, podporu rozhraní sysfs, implementaci líné inicializace, vytvoření ovladače pro blk-mq a experimentování s použitím asynchronního programovacího modelu pro queue_rq.

Navíc si můžeme všimnout experimentů provedených NCC Group za účelem vývoje ovladačů v jazyce Rust pro jádro FreeBSD. Jako příklad podrobně prozkoumáme jednoduchý ovladač echo, který vrací data zapsaná do souboru /dev/rustmodule. V další fázi experimentování NCC Group zvažuje možnost přepracování základních komponent jádra v jazyce Rust, aby se zlepšila bezpečnost síťových a souborových operací.

Ačkoli se však ukázalo, že je možné vytvářet jednoduché moduly v jazyce Rust, těsnější integrace Rustu do jádra FreeBSD bude vyžadovat další práci. Zmiňují například nutnost vytvořit sadu abstrakčních vrstev nad subsystémy a strukturami jádra, podobně jako doplňky připravené projektem Rust pro Linux. V budoucnu plánujeme provádět podobné experimenty s jádrem Illumos a identifikovat běžné abstrakce v Rustu, které by mohly být použity v ovladačích napsaných v Rustu pro Linux, BSD a Illumos.

Podle společností Microsoft a Google je asi 70 % zranitelností v jejich softwarových produktech způsobeno nebezpečným zacházením s pamětí. Očekává se, že použití jazyka Rust sníží riziko zranitelnosti způsobených nebezpečnou prací s pamětí a eliminuje výskyt chyb, jako je přístup k oblasti paměti po jejím uvolnění a přetečení vyrovnávací paměti.

Bezpečnost paměti je v Rustu poskytována v době kompilace prostřednictvím kontroly referencí, sledováním vlastnictví objektu a životnosti objektu (rozsahu) a také prostřednictvím vyhodnocování správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně aplikuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Zdroj: opennet.ru

Přidat komentář