WD kehittää NVMe-ohjainta Rustissa. Rustin kokeilu FreeBSD:llä

Näinä päivinä järjestettävässä Linux Plumbers 2022 -konferenssissa Western Digitalin insinööri piti esitelmän NVM-Express (NVMe) -rajapinnalla varustetun SSD-asemien kokeellisen ajurin kehittämisestä, joka on kirjoitettu Rust-kielellä ja toimii Linux-ytimessä. taso. Huolimatta siitä, että projekti on vielä varhaisessa kehitysvaiheessa, testaus on osoittanut, että NVMe-ajurin suorituskyky Rust-kielellä vastaa ytimen C-kielellä kirjoitettua NVMe-ajuria.

WD kehittää NVMe-ohjainta Rustissa. Rustin kokeilu FreeBSD:llä
WD kehittää NVMe-ohjainta Rustissa. Rustin kokeilu FreeBSD:llä

Raportissa todetaan, että nykyinen NVMe-ajuri C-versiossa on täysin tyydyttävä kehittäjille, mutta NVMe-alijärjestelmä on hyvä alusta tutkia mahdollisuuksia kehittää ajureita Rustissa, koska se on melko yksinkertainen, laajalti käytetty, sillä on korkeat suorituskykyvaatimukset ja se on todistettu vertailutoteutus vertailua varten ja tukee erilaisia ​​rajapintoja (dev, pci, dma, blk-mq, gendisk, sysfs).

On huomattava, että Rustin PCI NVMe -ajuri tarjoaa jo käyttöön tarvittavat toiminnot, mutta ei ole vielä valmis laajaan käyttöön, koska se vaatii yksittäisiä parannuksia. Tulevaisuuden suunnitelmiin kuuluu poistaa koodi olemassa olevista vaarallisista lohkoista, tukea laitteiden poistoa ja ajurien purkamista, tukea sysfs-liitäntää, toteuttaa laiska alustus, luoda ajuri blk-mq:lle ja kokeilla asynkronisen ohjelmointimallin käyttöä queue_rq:lle.

Lisäksi voimme huomioida NCC Groupin tekemät kokeet Rust-kielen ohjaimien kehittämiseksi FreeBSD-ytimelle. Esimerkkinä tarkastelemme yksityiskohtaisesti yksinkertaista kaikuohjainta, joka palauttaa tiedostoon /dev/rustmodule kirjoitetut tiedot. Kokeilun seuraavassa vaiheessa NCC Group harkitsee mahdollisuutta muokata ytimen ydinkomponentit Rust-kieleksi verkko- ja tiedostotoimintojen turvallisuuden parantamiseksi.

Vaikka on kuitenkin osoitettu, että Rust-kielellä on mahdollista luoda yksinkertaisia ​​moduuleja, Rustin tiukempi integrointi FreeBSD-ytimeen vaatii lisätyötä. He mainitsevat esimerkiksi tarpeen luoda alijärjestelmien ja ydinrakenteiden päälle joukko abstraktiokerroksia, jotka ovat samanlaisia ​​kuin Rust for Linux -projektin valmistelemat lisäosat. Jatkossa aiomme tehdä samanlaisia ​​kokeita Illumos-ytimen kanssa ja tunnistaa Rustissa yleisiä abstraktioita, joita voitaisiin käyttää Rustilla kirjoitetuissa Linux-, BSD- ja Illumos-ajureissa.

Microsoftin ja Googlen mukaan noin 70 % heidän ohjelmistotuotteidensa haavoittuvuuksista johtuu muistin vaarallisesta käsittelystä. On odotettavissa, että Rust-kielen käyttö vähentää haavoittuvuuksien riskiä, ​​jotka aiheutuvat vaarallisesta muistityöstä, ja eliminoi virheiden esiintymisen, kuten muistialueen käytön sen jälkeen, kun se on vapautettu ja puskurin ylittäminen.

Muistiturvallista käsittelyä tarjotaan Rustissa käännöshetkellä referenssitarkistuksen, objektin omistajuuden ja objektin käyttöiän (laajuus) seurantaan sekä muistin käytön oikeellisuuden arviointiin koodin suorittamisen aikana. Ruoste tarjoaa myös suojan kokonaislukujen ylivuodoilta, vaatii muuttujien arvojen pakollisen alustamisen ennen käyttöä, käsittelee virheet paremmin standardikirjastossa, soveltaa oletusarvoisesti muuttumattomien viitteiden ja muuttujien käsitettä, tarjoaa vahvan staattisen kirjoittamisen loogisten virheiden minimoimiseksi.

Lähde: opennet.ru

Lisää kommentti