Western Digital už pracuje na ovládači NVMe napísanom v jazyku Rust

RustLinux

Integrácia Rustu v Linuxe má vysokú úroveň prijatia komunitou a vývojármi

Počas konferencie „Linux Inštalatéri 2022“. ktorý v týchto dňoch prebiehal, inžinier Western Digital predniesol prezentáciu o vývoji ovládača experimentálne pre SSD NVM-Express (NVMe) napísaný v jazyku Rust a beží na úrovni jadra Linuxu.

Aj keď projekt je stále v počiatočnom štádiu vývoja, vykonané testy ukázali, že výkon ovládača Rust NVMe zodpovedá ovládaču NVMe napísanému v jazyku C v jadre.

Som Matthew Wilcox, som jedným z autorov špecifikácie NVMe, bol som ten, kto navrhol, aby som vytvoril ovládač NVMe, aby som demonštroval hodnotu Rustu. Bolo to úspešné nad moje najdivokejšie očakávania. 

Čo sa týka predloženej správy aktuálny ovládač NVMe C je vraj plne vyhovujúci pre vývojárov, ale subsystém NVMe je dobrou platformou na preskúmanie uskutočniteľnosti vývoja ovládačov v Ruste, pretože je pomerne jednoduchý, široko používaný, má vysoké požiadavky na výkon, má osvedčenú referenčnú implementáciu na porovnanie a podporuje rôzne rozhrania ( dev, pci, dma, blk-mq, gendisk, sysfs).

Je to pozorované ovládač Rust PCI NVMe už poskytuje potrebnú funkčnosť pre prevádzku, ale ešte nie je pripravený na široké použitie, pretože si vyžaduje samostatné vylepšenia.

Plány do budúcnosti zahŕňajú zbavenie sa existujúcich nezabezpečených blokov, podpora na odstránenie zariadenia a stiahnutie ovládača, podpora rozhrania sysfsimplementujte lenivú inicializáciu, vytvorte radič pre blk-mq a experimentujte s asynchrónnym programovacím modelom pre queue_rq.

Ďalej môžeme poukázať uskutočnené experimenty od skupiny NCC na vývoj ovládačov v jazyku Rust pre jadro FreeBSD. Ako príklad možno uviesť jednoduchý kontrolér ozveny, ktorý vracia údaje zapísané do /dev/rustmodule. V ďalšej fáze experimentovania NCC Group zvažuje prepracovanie základných komponentov v Ruste, aby sa zlepšila bezpečnosť sieťových a súborových operácií.

To znamená, že aj keď sa ukázalo, že je možné vytvárať jednoduché moduly v Ruste, užšia integrácia Rustu do jadra FreeBSD bude vyžadovať ďalšiu prácu.

Spomína napríklad potrebu vytvorenia množiny abstraktných vrstiev nad subsystémami a štruktúrami jadra, podobne ako pluginy, ktoré pripravil projekt Rust pre Linux. V budúcnosti plánujeme vykonať podobné experimenty s jadrom Illumos a upozorniť na bežné abstrakcie v Ruste, ktoré by sa dali použiť v ovládačoch napísaných Rustom pre Linux, BSD a Illumos.

Podľa Microsoftu a Google je približne 70 % zraniteľností v ich softvérových produktoch spôsobených nezabezpečenou správou pamäte.

Používanie jazyka Rust má znížiť riziko zraniteľnosti spôsobené nezabezpečenou manipuláciou s pamäťou a eliminuje výskyt chýb, ako je prístup k oblasti pamäte po jej uvoľnení a pretečenie vyrovnávacej pamäte.

Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie kontrolou referencií, sledovaním vlastníctva objektu a životnosti objektu (rozsahu), ako aj vyhodnocovaním správnosti prístupu do pamäte počas vykonávania kódu.

Hrdza tiež poskytuje ochranu proti pretečeniu celého čísla, vyžaduje, aby boli premenné pred použitím inicializované, lepšie zvláda chyby v štandardnej knižnici, štandardne presadzuje koncepciu nemenných premenných a odkazov a ponúka silné statické typovanie na minimalizáciu logických chýb.

Stojí za zmienku, že je možné, že budúca práca pôjde ruka v ruke s prácou, ktorú Miguel Ojeda predstavil na svojich ovládačoch „Rust for Linux“, ktoré boli prezentované ako séria záplat.

Konečne ak máte záujem dozvedieť sa o tom viac, môžete skontrolovať podrobnosti v nasledujúci odkaz.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.