Marc per escriure controladors segurs per al nucli Linux a Rust

Josh Triplett, que treballa a Intel i forma part del comitè que supervisa el desenvolupament de Crates.io, parlant a la cimera de tecnologia de codi obert introduït un grup de treball destinat a apropar el llenguatge Rust a la paritat amb el llenguatge C en l'àmbit de la programació de sistemes.

En un grup de treball que està en procés de creació, els desenvolupadors de Rust, juntament amb els enginyers d'Intel, prepararan especificacions definint la funcionalitat que cal implementar a Rust per a la programació de sistemes. La programació del sistema sovint requereix manipulació de baix nivell, com ara executar instruccions de processador amb privilegis i obtenir informació detallada sobre l'estat del processador. De les funcions similars que ja s'estan desenvolupant per a Rust, s'observa el suport per a estructures sense nom, unions, insercions de llenguatge assemblador (la macro "asm!") i el format de nombre de coma flotant BFLOAT16.

Josh creu que el futur de la programació de sistemes pertany a Rust, i el llenguatge C en les realitats modernes està reclamant el lloc que els anys passats va ocupar Assembly. Rovell
no només alleuja els desenvolupadors dels problemes inherents al llenguatge C que sorgeixen a causa del treball de baix nivell amb la memòria, sinó que també ofereix l'oportunitat d'utilitzar-lo en el desenvolupament de paradigmes de programació moderns.

Durant discussions actuacions
A Josh se li va ocórrer la idea d'afegir la capacitat de desenvolupar controladors al nucli Linux en llenguatge Rust, que permetria crear controladors més segurs i millors amb el mínim esforç, lliures de problemes com l'accés a la memòria després de l'alliberament, nul. desreferències de punter i desbordaments de memòria intermèdia.

Greg Kroah-Hartman, responsable de mantenir la branca estable del nucli de Linux, va expressar la seva disposició a afegir un marc per desenvolupar controladors en llenguatge Rust al nucli si té avantatges reals sobre C, per exemple, proporcionarà seguretat. enllaços sobre l'API del nucli. A més, Greg considera aquest marc només com una opció, no activa per defecte, per no incloure Rust com a dependència de compilació del nucli.

Va resultar que diversos equips ja estan treballant en aquesta direcció. Per exemple, els desenvolupadors de l'empresa "Fish in a Barrel" preparat un conjunt d'eines per escriure mòduls carregables per al nucli de Linux en el llenguatge Rust, utilitzant un conjunt de capes abstractes sobre les interfícies i estructures del nucli per augmentar la seguretat. Les capes es generen automàticament a partir dels fitxers de capçalera del nucli existents mitjançant la utilitat lligant. Clang s'utilitza per construir capes. A més de les capes intercalades, els mòduls muntats utilitzen el paquet staticlib.

Paral·lel s'està desenvolupant Un altre projecte es va centrar a desenvolupar controladors per a sistemes incrustats i dispositius IoT, que també utilitza Bindgen per generar capes basades en fitxers de capçalera del nucli. El marc us permet millorar la seguretat dels controladors sense fer canvis al nucli; en comptes de crear nivells d'aïllament addicionals per als controladors al nucli, es proposa bloquejar els problemes en l'etapa de compilació, utilitzant el llenguatge Rust més segur. Se suposa que aquest enfocament pot ser demanat pels fabricants d'equips que desenvolupin controladors propietaris amb pressa sense realitzar una auditoria adequada.

Encara no s'ha implementat tota la funcionalitat prevista, però el marc ja és bastant adequat per al treball i es va utilitzar per escriure un controlador de treball per al controlador Ethernet USB LAN9512 subministrat a la placa Raspberry Pi 3. El controlador smsc95xx existent, escrit per en llenguatge C. S'observa que la mida del mòdul i la sobrecàrrega dels components del temps d'execució quan es desenvolupa un controlador a Rust són insignificants, la qual cosa permet utilitzar el marc per a dispositius amb recursos limitats.

Font: opennet.ru

Afegeix comentari