WD sta sviluppando un driver NVMe in Rust. Sperimentare con Rust su FreeBSD

Alla conferenza Linux Plumbers 2022 che si è tenuta in questi giorni, un ingegnere di Western Digital ha presentato lo sviluppo di un driver sperimentale per unità SSD con interfaccia NVM-Express (NVMe), scritto in linguaggio Rust e funzionante sul kernel Linux livello. Nonostante il progetto sia ancora in una fase iniziale di sviluppo, i test hanno dimostrato che le prestazioni del driver NVMe in linguaggio Rust corrispondono al driver NVMe scritto in linguaggio C disponibile nel kernel.

WD sta sviluppando un driver NVMe in Rust. Sperimentare con Rust su FreeBSD
WD sta sviluppando un driver NVMe in Rust. Sperimentare con Rust su FreeBSD

Il rapporto afferma che l'attuale driver NVMe in C è completamente soddisfacente per gli sviluppatori, ma il sottosistema NVMe è una buona piattaforma per esplorare la fattibilità dello sviluppo di driver in Rust, poiché è abbastanza semplice, ampiamente utilizzato, ha requisiti di prestazioni elevate e ha un'implementazione di riferimento comprovata per il confronto e supporta varie interfacce (dev, pci, dma, blk-mq, gendisk, sysfs).

Va notato che il driver PCI NVMe per Rust fornisce già le funzionalità necessarie per il funzionamento, ma non è ancora pronto per un uso diffuso, poiché richiede miglioramenti individuali. I piani futuri includono l'eliminazione del codice dai blocchi non sicuri esistenti, il supporto delle operazioni di rimozione del dispositivo e di scaricamento dei driver, il supporto dell'interfaccia sysfs, l'implementazione dell'inizializzazione pigra, la creazione di un driver per blk-mq e la sperimentazione dell'utilizzo di un modello di programmazione asincrono per Queue_rq.

Inoltre, possiamo segnalare gli esperimenti condotti dal Gruppo NCC per sviluppare driver nel linguaggio Rust per il kernel di FreeBSD. Ad esempio, esaminiamo in dettaglio un semplice driver echo che restituisce i dati scritti nel file /dev/rustmodule. Nella prossima fase di sperimentazione, il Gruppo NCC sta valutando la possibilità di rielaborare i componenti core del kernel nel linguaggio Rust per migliorare la sicurezza delle operazioni di rete e di file.

Tuttavia, nonostante sia stato dimostrato che è possibile creare semplici moduli nel linguaggio Rust, una più stretta integrazione di Rust nel kernel di FreeBSD richiederà ulteriore lavoro. Ad esempio, menzionano la necessità di creare una serie di livelli di astrazione sui sottosistemi e sulle strutture del kernel, simili ai componenti aggiuntivi preparati dal progetto Rust per Linux. In futuro, prevediamo di condurre esperimenti simili con il kernel Illumos e identificare astrazioni comuni in Rust che potrebbero essere utilizzate nei driver scritti in Rust per Linux, BSD e Illumos.

Secondo Microsoft e Google, circa il 70% delle vulnerabilità nei loro prodotti software sono causate da una gestione non sicura della memoria. Si prevede che l'uso del linguaggio Rust ridurrà il rischio di vulnerabilità causate da un lavoro non sicuro con la memoria ed eliminerà il verificarsi di errori come l'accesso ad un'area di memoria dopo che è stata liberata e il sovraccarico del buffer.

La gestione sicura della memoria viene fornita in Rust in fase di compilazione attraverso il controllo dei riferimenti, tenendo traccia della proprietà dell'oggetto e della durata dell'oggetto (ambito), nonché attraverso la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche protezione contro gli overflow di numeri interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita, offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

Fonte: opennet.ru

Aggiungi un commento