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

Durante la conferenza Linux Plumbers 2022 in corso, un ingegnere della Western Digital ha presentato una relazione sullo sviluppo di un driver sperimentale per unità SSD con interfaccia NVM-Express (NVMe), scritto in Rust e funzionante a livello del kernel Linux. Sebbene il progetto sia ancora nelle fasi iniziali di sviluppo, i test condotti hanno dimostrato che le prestazioni del driver NVMe in Rust sono equivalenti a quelle del driver NVMe esistente nel kernel, scritto in C.

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

Nella relazione si afferma che l'attuale driver NVMe in C soddisfa completamente gli sviluppatori, ma il sottosistema NVMe rappresenta una buona piattaforma per esplorare la fattibilità dello sviluppo di driver in Rust, poiché è relativamente semplice, ampiamente utilizzato, presenta requisiti di prestazioni elevati, ha una implementazione di riferimento collaudata per il confronto e supporta diverse interfacce (dev, pci, dma, blk-mq, gendisk, sysfs).

Si osserva che il driver PCI NVMe in Rust fornisce già le funzionalità necessarie per il funzionamento, ma non è ancora pronto per un utilizzo generalizzato, poiché richiede ulteriori lavori. Tra i piani futuri è prevista l'eliminazione delle sezioni di codice unsafe, il supporto per le operazioni di rimozione dell'unità e scaricamento del driver, il supporto per l'interfaccia sysfs, la realizzazione di una inizializzazione ritardata, la creazione di un driver per blk-mq e esperimenti sull'uso di un modello di programmazione asincrona per queue_rq.

Guarda il video

In aggiunta, si possono notare gli esperimenti condotti dalla NCC Group sullo sviluppo di driver in Rust per il kernel FreeBSD. Come esempio, viene esaminato in dettaglio un semplice driver echo, che restituisce i dati scritti nel file /dev/rustmodule. Nella fase successiva degli esperimenti, la NCC Group sta considerando la possibilità di riscrivere in Rust i componenti fondamentali del kernel per migliorare la sicurezza delle operazioni di rete e file.

Tuttavia, sebbene sia stata mostrata la possibilità di creare moduli semplici nel linguaggio Rust, una integrazione più profonda di Rust nel kernel di FreeBSD richiederà ulteriori lavori. Ad esempio, viene menzionata la necessità di creare un insieme di livelli di astrazione sopra i sottosistemi e le strutture del kernel, simili a quelle preparate dal progetto Rust for Linux. In futuro, si prevede di condurre esperimenti simili con il kernel di Illumos e di estrarre astrazioni comuni in Rust che potrebbero essere utilizzate nei driver scritti in Rust per Linux, BSD e Illumos.

Secondo le aziende Microsoft e Google, circa il 70% delle vulnerabilità nei loro prodotti software sono causate da operazioni non sicure con la memoria. Si ipotizza che l'uso del linguaggio Rust possa ridurre il rischio di vulnerabilità causate da operazioni non sicure con la memoria e prevenire errori come l'accesso a aree di memoria dopo che sono state liberate e l'overflow del buffer.

La gestione sicura della memoria in Rust è garantita durante la compilazione attraverso il controllo dei riferimenti, il tracciamento della proprietà degli oggetti e la gestione del tempo di vita degli oggetti (ambito di visibilità), nonché attraverso la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche strumenti per proteggersi dai sovraccarichi interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di immutabilità (immutable) per riferimenti e variabili per impostazione predefinita e offre una forte tipizzazione statica per minimizzare gli errori logici.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster