WD vyvíjí NVMe ovladač v jazyce Rust. Experimenty s Rustem na FreeBSD

Na konferenci Linux Plumbers 2022, která probíhá v těchto dnech, vystoupil inženýr z firmy Western Digital s prezentací o vývoji experimentálního ovladače pro SSD disky s rozhraním NVM-Express (NVMe), napsaného v jazyce Rust a fungujícího na úrovni jádra Linux. I když se projekt nachází teprve v rané fázi, vykonané testy ukázaly, že výkon NVMe ovladače napsaného v jazyce Rust odpovídá současnému ovladači NVMe v jádře, napsanému v jazyce C.

WD vyvíjí NVMe ovladač v jazyce Rust. Experimenty s Rustem na FreeBSD
WD vyvíjí NVMe ovladač v jazyce Rust. Experimenty s Rustem na FreeBSD

Ve zprávě se uvádí, že současný NVMe ovladač napsaný v jazyce C plně vyhovuje developerům, ale subsystém NVMe je dobrou platformou pro zkoumání proveditelnosti vývoje ovladačů v jazyce Rust, protože je dostatečně jednoduchý, široce používaný a vyžaduje vysoký výkon, má ověřenou referenční implementaci pro srovnání a podporuje různá rozhraní (dev, pci, dma, blk-mq, gendisk, sysfs).

Je zdůrazněno, že PCI NVMe ovladač v jazyce Rust již poskytuje potřebnou funkčnost, ale není připraven pro široké použití, protože vyžaduje další úpravy. Mezi plány na budoucnost patří odstranění nežádoucích bloků v kódu, podpora operací odstranění zařízení a vyjmutí ovladače, podpora rozhraní sysfs, implementace odložené iniciace, vytvoření ovladače pro blk-mq a experimenty s použitím asynchronního modelu programování pro queue_rq.

Přehrát video

Dále lze zmínit experimenty, které provádí společnost NCC Group na vývoji ovladačů v jazyce Rust pro jádro FreeBSD. Jako příklad je podrobně rozebrán jednoduchý echo-ovladač, který vrací data zapsaná do souboru /dev/rustmodule. Na dalším stupni experimentů zvažuje NCC Group možnost přepracování základních komponent jádra v jazyce Rust za účelem zvýšení bezpečnosti síťových a souborových operací.

Přestože se ukazuje možnost vytváření jednoduchých modulů v jazyce Rust, bližší integrace Rustu do jádra FreeBSD vyžaduje další práci. Například se zmiňuje potřeba vytváření sady abstrakčních vrstev nad podsouborovými systémy a strukturami jádra, podobných nadstavbám, které připravilo projektu Rust for Linux. V budoucnu se plánují podobné experimenty s jádrem Illumos a vyčlenění obecných abstrakcí v Rustu, které by mohly být použity v ovladačích napsaných v Rustu pro Linux, BSD a Illumos.

Podle údajů společností Microsoft a Google je přibližně 70 % zranitelností v jejich softwarových produktech způsobeno nebezpečnou manipulací s pamětí. Předpokládá se, že použití jazyka Rust sníží riziko vzniku zranitelností způsobených nebezpečnou manipulací s pamětí a vyloučí vznik chyb, jako je přístup k oblasti paměti po jejím uvolnění a přetečení bufferu.

Bezpečná práce s pamětí je zajištěna v Rustu během kompilace prostřednictvím kontroly odkazů, sledování vlastnictví objektů a zohlednění doby života objektů (oblastí viditelnosti), stejně jako hodnocením správnosti přístupu k paměti během vykonávání kódu. Rust také poskytuje prostředky k ochraně před přetečením celočíselných hodnot, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, aplikuje koncept neměnnosti (immutable) odkazů a proměnných ve výchozím nastavení, a nabízí silnou statickou typizaci pro minimalizaci logických chyb.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster