Un framework in Rust potrebbe essere implementato nel kernel per migliorare i driver

Kernel Linux Rust

Josh Triplett, un'azienda basata su Intel e membro del comitato di supervisione dello sviluppo di Crates.io, ha già presentato un gruppo di lavoro qualche giorno fa nel suo discorso all'Open Source Technology Summit che mira a portare Rust alla pari con C nella programmazione del kernel Linux.

Nel gruppo di lavoro, che è in fase di creazione, Gli sviluppatori Rust, insieme agli ingegneri Intel, prepareranno le specifiche che può evidenziare la funzionalità che Rust deve implementare per la programmazione all'interno del kernel Linux. La programmazione del sistema spesso richiede manipolazioni di basso livello, come l'esecuzione di istruzioni del processore privilegiato e l'ottenimento di informazioni dettagliate sullo stato del processore.

Delle capacità simili già sviluppate per Rust, supporto per strutture senza nome è supportato, unions (unione), inserti assembler (la macro "asm!") e il formato numerico in virgola mobile BFLOAT16.

Josh crede che il futuro della programmazione di sistema risieda in Rust, e il linguaggio C nelle realtà moderne afferma di essere il posto di Assembler nel passato. Rust non solo solleva gli sviluppatori da specifici problemi del linguaggio C che sorgono a causa del lavoro di basso livello con la memoria, ma fornisce anche l'applicabilità nello sviluppo di paradigmi di programmazione moderni.

Durante la discussione del discorso di Josh, l'idea è stata espressa a:

aggiungere la possibilità di sviluppare driver in linguaggio Rust al kernel Linux, il che consentirebbe con il minimo sforzo di creare driver migliori e più sicuri che alleviano problemi come l'accesso all'area di memoria dopo averla liberata, fare riferimento a puntatori nulli e uscire oltre i limiti del buffer.

Greg Kroah Hartman, responsabile del mantenimento di un ramo stabile del kernel Linux ex ha espresso la volontà di aggiungere un framework di driver Rust al kernel se ha dei vantaggi reali rispetto a C, per esempio, fornirà collegamenti sicuri sull'API principale Inoltre, Greg considera questo framework solo come un'opzione che non è attiva per impostazione predefinita, in modo da non includere Rust nel numero di dipendenze dell'assembly principale.

Si è scoperto che diversi team stanno già lavorando in questa direzione. Ad esempio, gli sviluppatori di Fish in a Barrel hanno preparato un toolkit per scrivere moduli caricabili per il kernel Linux nel linguaggio Rust, utilizzando una serie di strati astratti sopra le interfacce e le strutture del kernel per aumentare la sicurezza.

I livelli intermedi vengono generati automaticamente in base ai file di intestazione del kernel disponibili utilizzando l'utilità bindgen. Clang è usato per costruire strati intermedi. I moduli assemblati, oltre ai livelli, utilizzano il pacchetto staticlib.

Allo stesso tempo, è in fase di sviluppo un altro progetto, incentrato sullo sviluppo di controllori per sistemi embedded e dispositivi Internet of Things, che utilizza anche bindgen per generare collar in base ai file di intestazione del kernel.

Il framework consente di migliorare la sicurezza dei driver senza apportare modifiche al kernel; Invece di creare livelli di isolamento aggiuntivi per i driver nel kernel, si propone di bloccare i problemi in fase di compilazione utilizzando un linguaggio Rust più sicuro.

I produttori di apparecchiature dovrebbero essere in grado di sviluppare questo approccio in fretta senza una verifica adeguata.

Non tutte le funzionalità pianificate sono state ancora implementate, ma il framework è già abbastanza adatto per il lavoro e viene utilizzato per scrivere un driver funzionante per il controller Ethernet USB LAN9512 in dotazione sulla scheda Raspberry Pi 3.

Il driver smsc95xx esistente è stato scritto come implementazione di riferimento quando si scrive il driver Rust in linguaggio C.

Si noti che la dimensione del modulo e il sovraccarico dei componenti di runtime non sono significativi quando si sviluppa un driver per Rust, che consente di utilizzare il framework per dispositivi con risorse limitate.

fonte: https://hub.packtpub.com


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   L1ch suddetto

    Non riesco a trovare informazioni per un driver smsc95xx nel codice sorgente o che qualcosa verrà implementato in Rust su Linux.