Western Digital jau strādā pie NVMe draivera, kas rakstīts Rust valodā

RustLinux

Rust integrācija operētājsistēmā Linux ir saņēmusi augstu sabiedrības un izstrādātāju piekrišanu

Konferences “Linux Plumbers 2022” laikā kas notika šajās dienās, Western Digital inženieris sniedza prezentāciju par kontroliera izstrādi eksperimentāls SSD NVM-Express (NVMe) rakstīts Rust un darbojas Linux kodola līmenī.

Kaut gan projekts vēl ir attīstības sākuma stadijā, veiktie testi parādīja, ka Rust NVMe draivera veiktspēja atbilst NVMe draiverim, kas kodolā ierakstīts C valodā.

Es esmu Metjū Vilkokss, es esmu viens no NVMe specifikācijas autoriem, es biju tas, kurš man ieteica izveidot NVMe draiveri, lai parādītu Rust vērtību. Tas ir izdevies, pārsniedzot manas visdrosmīgākās cerības. 

Attiecībā uz iesniegto ziņojumu tiek uzskatīts, ka pašreizējais NVMe C draiveris ir pilnībā apmierinošs izstrādātājiem, bet NVMe apakšsistēma ir laba platforma, lai izpētītu Rust draiveru izstrādes iespējas, jo tā ir diezgan vienkārša, plaši izmantota, tai ir augstas veiktspējas prasības, tai ir pārbaudīta atsauces ieviešana salīdzināšanai un tā atbalsta dažādas saskarnes ( dev, pci, dma, blk-mq, gendisk, sysfs).

Tiek novērots, ka Rust PCI NVMe draiveris jau nodrošina darbībai nepieciešamo funkcionalitāti, taču tas vēl nav gatavs plašai lietošanai, jo tam nepieciešami atsevišķi uzlabojumi.

Nākotnes plānos ietilpst atbrīvoties no esošajiem nedrošajiem blokiem, atbalsts ierīces noņemšanai un draivera lejupielādei, atbalsta sysf interfeisu, ieviest slinku inicializēšanu, izveidot kontrolieri blk-mq un eksperimentēt ar asinhronās programmēšanas modeli queue_rq.

Turklāt mēs varam norādīt veiktajiem eksperimentiem NCC grupa izstrādāt kontrolierus Rust valodā FreeBSD kodols. Piemēram, vienkāršs echo kontrolleris, kas atgriež datus, kas ierakstīti /dev/rustmodule. Nākamajā eksperimentu fāzē NCC grupa apsver Rust galveno galveno komponentu pārstrādi, lai uzlabotu tīkla un failu darbību drošību.

Tomēr, lai gan ir pierādīts, ka Rust ir iespējams izveidot vienkāršus moduļus, ciešāka Rust integrācija FreeBSD kodolā prasīs papildu darbu.

Piemēram, viņš min nepieciešamību izveidot abstrakcijas slāņu komplektu virs kodola apakšsistēmām un struktūrām, līdzīgi kā Rust projekta sagatavotajiem spraudņiem Linux. Nākotnē mēs plānojam veikt līdzīgus eksperimentus ar Illumos kodolu un izcelt parastās Rust abstrakcijas, kuras varētu izmantot Rust rakstītajos draiveros Linux, BSD un Illumos.

Saskaņā ar Microsoft un Google datiem, aptuveni 70% ievainojamību viņu programmatūras produktos ir saistītas ar nedrošu atmiņas pārvaldību.

Ir paredzēts, ka Rust valodas izmantošana samazina ievainojamību risku ko izraisa nedroša atmiņas apstrāde, un novērsīs kļūdu rašanos, piemēram, piekļūšanu atmiņas apgabalam pēc tās atbrīvošanas un bufera pārpildes.

Atmiņas drošība Rust tiek nodrošināta kompilēšanas laikā, pārbaudot atsauces, izsekojot objektu īpašumtiesības un objekta kalpošanas laiku (tvērumu), kā arī novērtējot atmiņas piekļuves pareizību koda izpildes laikā.

Rūsa nodrošina arī veselu skaitļu pārpildes aizsardzību, prasa pirms lietošanas inicializēt mainīgos, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma ievieš nemainīgu mainīgo un atsauču jēdzienu un piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Ir vērts pieminēt, ka, iespējams, turpmākais darbs ies roku rokā ar darbu, ko Migels Ojeda ir prezentējis pie saviem "Rust for Linux" draiveriem, kas tika prezentēti kā ielāpu sērija.

Beidzot ja jūs interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt sadaļā šo saiti.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.