WD is besig om 'n NVMe-bestuurder in Rust te ontwikkel. Eksperimenteer met Rust op FreeBSD

By die Linux Plumbers 2022-konferensie wat deesdae plaasvind, het 'n ingenieur van Western Digital 'n aanbieding gelewer oor die ontwikkeling van 'n eksperimentele drywer vir SSD-aandrywers met die NVM-Express (NVMe)-koppelvlak, geskryf in die Rust-taal en loop by die Linux-kern vlak. Ten spyte van die feit dat die projek nog in 'n vroeë stadium van ontwikkeling is, het toetsing getoon dat die werkverrigting van die NVMe-drywer in die Rust-taal ooreenstem met die NVMe-drywer geskryf in die C-taal wat in die kern beskikbaar is.

WD is besig om 'n NVMe-bestuurder in Rust te ontwikkel. Eksperimenteer met Rust op FreeBSD
WD is besig om 'n NVMe-bestuurder in Rust te ontwikkel. Eksperimenteer met Rust op FreeBSD

Die verslag meld dat die huidige NVMe-bestuurder in C heeltemal bevredigend is vir ontwikkelaars, maar die NVMe-substelsel is 'n goeie platform om die haalbaarheid van die ontwikkeling van drywers in Rust te ondersoek, aangesien dit redelik eenvoudig is, wyd gebruik word, hoë werkverrigtingvereistes het, en het 'n bewese verwysingsimplementering vir vergelyking en ondersteun verskeie koppelvlakke (dev, pci, dma, blk-mq, gendisk, sysfs).

Daar word kennis geneem dat die PCI NVMe-bestuurder vir Rust reeds die funksionaliteit verskaf wat nodig is vir werking, maar nog nie gereed is vir wydverspreide gebruik nie, aangesien dit individuele verbeterings vereis. Toekomstige planne sluit in die verwydering van die kode van bestaande onveilige blokke, die ondersteuning van toestelverwydering en die aflaai van die bestuurder, die ondersteuning van die sysfs-koppelvlak, die implementering van lui initialisering, die skep van 'n drywer vir blk-mq, en eksperimentering met die gebruik van 'n asinchroniese programmeringsmodel vir queue_rq.

Daarbenewens kan ons let op die eksperimente wat deur die NCC-groep uitgevoer is om drywers in die Rust-taal vir die FreeBSD-kern te ontwikkel. As voorbeeld ondersoek ons ​​in detail 'n eenvoudige eggo-bestuurder wat data terugstuur wat na die lêer /dev/rustmodule geskryf is. In die volgende fase van eksperimentering oorweeg die NCC Groep die moontlikheid om die kernkomponente van die kern in die Rust-taal te herwerk om die sekuriteit van netwerk- en lêerbedrywighede te verbeter.

Alhoewel dit egter bewys is dat dit moontlik is om eenvoudige modules in die Rust-taal te skep, sal 'n strenger integrasie van Rust in die FreeBSD-kern addisionele werk verg. Hulle noem byvoorbeeld die behoefte om 'n stel abstraksielae oor die substelsels en kernstrukture te skep, soortgelyk aan die byvoegings wat deur die Rust for Linux-projek voorberei is. In die toekoms beplan ons om soortgelyke eksperimente met die Illumos-kern uit te voer en algemene abstraksies in Rust te identifiseer wat gebruik kan word in drywers wat in Rust geskryf is vir Linux, BSD en Illumos.

Volgens Microsoft en Google word ongeveer 70% van kwesbaarhede in hul sagtewareprodukte veroorsaak deur onveilige geheuehantering. Daar word verwag dat die gebruik van die Rust-taal die risiko van kwesbaarhede wat veroorsaak word deur onveilige werk met geheue sal verminder, en die voorkoms van foute sal uitskakel, soos toegang tot 'n geheue-area nadat dit vrygestel is en die buffer oorskry.

Geheueveiligheid word tydens samestellingstyd in Rust verskaf deur verwysingskontrolering, hou van objekeienaarskap en objekleeftyd (omvang), asook deur evaluering van die korrektheid van geheuetoegang tydens kode-uitvoering. Roes bied ook beskerming teen heelgetal-oorvloei, vereis dat veranderlikes geïnisialiseer word voor gebruik, hanteer foute beter in die standaardbiblioteek, pas die konsep van onveranderlike verwysings en veranderlikes by verstek toe, en bied sterk statiese tik om logiese foute te minimaliseer.

Bron: opennet.ru

Voeg 'n opmerking