WD ontwikkelt een NVMe-stuurprogramma in Rust. Experimenteren met Rust op FreeBSD

Op de Linux Plumbers 2022-conferentie die deze dagen plaatsvindt, gaf een ingenieur van Western Digital een presentatie over de ontwikkeling van een experimentele driver voor SSD-schijven met de NVM-Express (NVMe)-interface, geschreven in de Rust-taal en draaiend op de Linux-kernel niveau. Ondanks het feit dat het project zich nog in een vroeg ontwikkelingsstadium bevindt, hebben tests aangetoond dat de prestaties van het NVMe-stuurprogramma in de Rust-taal overeenkomen met het NVMe-stuurprogramma geschreven in de C-taal die beschikbaar is in de kernel.

WD ontwikkelt een NVMe-stuurprogramma in Rust. Experimenteren met Rust op FreeBSD
WD ontwikkelt een NVMe-stuurprogramma in Rust. Experimenteren met Rust op FreeBSD

Het rapport stelt dat het huidige NVMe-stuurprogramma in C volledig bevredigend is voor ontwikkelaars, maar dat het NVMe-subsysteem een ​​goed platform is om de haalbaarheid van het ontwikkelen van stuurprogramma's in Rust te onderzoeken, omdat het vrij eenvoudig is, veel wordt gebruikt, hoge prestatie-eisen stelt en een bewezen referentie-implementatie ter vergelijking en ondersteunt verschillende interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).

Opgemerkt wordt dat het PCI NVMe-stuurprogramma voor Rust al de functionaliteit biedt die nodig is voor gebruik, maar nog niet klaar is voor wijdverbreid gebruik, omdat hiervoor individuele verbeteringen nodig zijn. Toekomstige plannen omvatten het verwijderen van de code van bestaande onveilige blokken, het ondersteunen van apparaatverwijdering en het verwijderen van stuurprogramma's, het ondersteunen van de sysfs-interface, het implementeren van luie initialisatie, het creëren van een stuurprogramma voor blk-mq en het experimenteren met het gebruik van een asynchroon programmeermodel voor wachtrij_rq.

Daarnaast kunnen we de experimenten noteren die door de NCC Group zijn uitgevoerd om stuurprogramma's in de Rust-taal voor de FreeBSD-kernel te ontwikkelen. Als voorbeeld onderzoeken we in detail een eenvoudige echo-driver die gegevens retourneert die naar het bestand /dev/rustmodule zijn geschreven. In de volgende experimenteerfase overweegt de NCC Group de mogelijkheid om de kerncomponenten van de kernel in de Rust-taal te herwerken om de beveiliging van netwerk- en bestandsbewerkingen te verbeteren.

Hoewel is aangetoond dat het mogelijk is om eenvoudige modules in de Rust-taal te maken, zal een nauwere integratie van Rust in de FreeBSD-kernel extra werk vergen. Ze vermelden bijvoorbeeld de noodzaak om een ​​reeks abstractielagen over de subsystemen en kernelstructuren te creëren, vergelijkbaar met de add-ons die zijn voorbereid door het Rust for Linux-project. In de toekomst zijn we van plan soortgelijke experimenten uit te voeren met de Illumos-kernel en algemene abstracties in Rust te identificeren die kunnen worden gebruikt in stuurprogramma's die in Rust zijn geschreven voor Linux, BSD en Illumos.

Volgens Microsoft en Google wordt ongeveer 70% van de kwetsbaarheden in hun softwareproducten veroorzaakt door onveilige omgang met geheugen. De verwachting is dat het gebruik van de Rust-taal het risico op kwetsbaarheden veroorzaakt door onveilig werken met geheugen zal verminderen en het optreden van fouten zal elimineren, zoals het benaderen van een geheugengebied nadat dit is vrijgegeven en het overschrijden van de buffer.

Rust dwingt de geheugenveiligheid af tijdens het compileren door referentiecontrole, objecteigendom en het volgen van de levensduur van objecten (scopes), en door de juistheid van geheugentoegang tijdens runtime te evalueren. Rust biedt ook bescherming tegen overflows van gehele getallen, vereist dat variabelewaarden vóór gebruik worden geïnitialiseerd, heeft een betere foutafhandeling in de standaardbibliotheek, gebruikt standaard het concept van onveranderlijke referenties en variabelen en biedt sterke statische typering om logische fouten te minimaliseren.

Bron: opennet.ru

Voeg een reactie