Western Digital že dela na gonilniku NVMe, napisanem v Rustu

RustLinux

Skupnost in razvijalci so visoko sprejeli integracijo Rusta v Linux

Med konferenco “Linux Plumbers 2022”. ki je potekal te dni, inženir družbe Western Digital je predstavil razvoj krmilnika eksperimentalno za SSD NVM-Express (NVMe), napisano v Rust in deluje na ravni jedra Linuxa.

Čeprav projekt je še v zgodnji fazi razvoja, izvedeni testi so pokazali, da zmogljivost gonilnika Rust NVMe ustreza gonilniku NVMe, napisanem v C v jedru.

Sem Matthew Wilcox, sem eden od avtorjev specifikacije NVMe, jaz sem bil tisti, ki je predlagal, naj naredim gonilnik NVMe, da pokažem vrednost Rusta. Uspešno je preseglo moja najbolj nora pričakovanja. 

Glede predstavljenega poročila trenutni gonilnik NVMe C naj bi bil povsem zadovoljiv za razvijalce, vendar je podsistem NVMe dobra platforma za raziskovanje izvedljivosti razvoja gonilnikov v Rustu, saj je precej preprost, široko uporabljen, ima visoke zahteve glede zmogljivosti, ima dokazano referenčno izvedbo za primerjavo in podpira različne vmesnike ( dev, pci, dma, blk-mq, gendisk, sysfs).

Opaziti je, da gonilnik Rust PCI NVMe že zagotavlja potrebno funkcionalnost za delovanje, vendar še ni pripravljen za široko uporabo, saj zahteva ločene izboljšave.

Načrti za prihodnost vključujejo odpravo obstoječih nevarnih blokov, podpora za odstranitev naprave in prenos gonilnika, podpira vmesnik sysfs, implementirajte leno inicializacijo, ustvarite krmilnik za blk-mq in eksperimentirajte z modelom asinhronega programiranja za queue_rq.

Poleg tega lahko pokažemo izvedeni poskusi skupine NCC za razvoj krmilnikov v jeziku Rust za jedro FreeBSD. Kot primer preprost krmilnik odmeva, ki vrne podatke, zapisane v /dev/rustmodule. V naslednji fazi eksperimentiranja skupina NCC razmišlja o predelavi osrednjih jedrnih komponent v Rustu za izboljšanje varnosti omrežnih in datotečnih operacij.

Čeprav je bilo dokazano, da je mogoče ustvariti preproste module v Rustu, tesnejša integracija Rusta v jedro FreeBSD bo zahtevala dodatno delo.

Na primer, omenja potrebo po ustvarjanju niza abstraktnih plasti nad podsistemi in strukturami jedra, podobnih vtičnikom, ki jih je pripravil projekt Rust za Linux. V prihodnosti nameravamo izvesti podobne poskuse z jedrom Illumos in izpostaviti skupne abstrakcije v Rustu, ki bi jih lahko uporabili v gonilnikih, ki jih je Rust napisal za Linux, BSD in Illumos.

Po mnenju Microsofta in Googla je približno 70 % ranljivosti v njunih programskih izdelkih posledica nezanesljivega upravljanja pomnilnika.

Uporaba jezika Rust naj bi zmanjšala tveganje za ranljivosti povzroči nezanesljivo ravnanje s pomnilnikom in bo odpravilo pojav napak, kot je dostop do območja pomnilnika po tem, ko je bil osvobojen, in prekoračitev medpomnilnika.

Varnost pomnilnika je v Rustu zagotovljena v času prevajanja s preverjanjem referenc, sledenjem lastništvu objektov in življenjske dobe objekta (obseg), kot tudi z ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode.

Rust zagotavlja tudi zaščito pred celoštevilskim prelivom, zahteva, da se spremenljivke inicializirajo pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uveljavlja koncept nespremenljivih spremenljivk in referenc ter ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Treba je omeniti, da je možno, da bo prihodnje delo potekalo z roko v roki z delom, ki ga je Miguel Ojeda predstavil na svojih gonilnikih "Rust for Linux", ki so bili predstavljeni kot serija popravkov.

Končno če vas zanima več o tem, podrobnosti lahko preverite v naslednjo povezavo.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.