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

Na konferenci Linux Plumbers 2022 prezentoval inženýr společnosti Western Digital příspěvek o vývoji experimentálního ovladače pro SSD disky NVM-Express (NVMe), napsaného v Rustu a běžícího v linuxovém jádře. Přestože je projekt stále v rané fázi, testování ukázalo, že výkon ovladače NVMe založeného na Rustu se shoduje s výkonem stávajícího ovladače NVMe v jádře, napsaného v jazyce C.

 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 současný ovladač NVMe v jazyce C je pro vývojáře zcela uspokojivý, ale subsystém NVMe je dobrou platformou pro studium proveditelnosti vývoje ovladačů v Rustu, protože je poměrně jednoduchý, široce používaný, má vysoké požadavky na výkon, má osvědčenou referenční implementaci pro srovnání a podporuje různá rozhraní (dev, pci, dma, blk-mq, gendisk, sysfs).

Je třeba poznamenat, že ovladač PCI NVMe napsaný v Rustu již poskytuje potřebnou funkcionalitu, ale zatím není připraven k širokému použití, protože vyžaduje další vývoj. Budoucí plány zahrnují odstranění stávajících nebezpečných bloků z kódu, podporu operací odebírání zařízení a uvolňování ovladačů, podporu rozhraní sysfs, implementaci líné inicializace, vytvoření ovladače pro blk-mq a experimentování s asynchronním programovacím modelem pro queue_rq.

Přehrát video

Skupina NCC navíc provádí experimenty s vývojem ovladačů v Rustu pro jádro FreeBSD. Jako příklad lze uvést podrobně analyzovaný jednoduchý ovladač echo, který vrací data zapsaná do souboru /dev/rustmodule. V další fázi experimentů skupina NCC zvažuje přepsání základních komponent jádra v Rustu s cílem zlepšit zabezpečení síťových a souborových operací.

I když byla prokázána schopnost vytvářet jednoduché moduly v Rustu, užší integrace Rustu do jádra FreeBSD bude vyžadovat další práci. Zmiňuje se například potřeba vytvořit sadu abstrakčních vrstev nad subsystémy a strukturami jádra, podobných těm, které byly vyvinuty v rámci projektu Rust for Linux. Budoucí plány zahrnují provedení podobných experimentů s jádrem Illumos a identifikaci běžných abstrakcí 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 přibližně 70 % zranitelností v jejich softwarových produktech způsobeno nebezpečnou správou paměti. Očekává se, že používání jazyka Rust sníží riziko zranitelností souvisejících s pamětí a eliminuje chyby, jako je přístup po uvolnění paměti 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ář