WD razvija gonilnik NVMe v Rustu. Eksperimentiranje z Rust na FreeBSD

Na konferenci Linux Plumbers 2022, ki poteka te dni, je inženir iz Western Digital predstavil razvoj eksperimentalnega gonilnika za pogone SSD z vmesnikom NVM-Express (NVMe), napisanega v jeziku Rust in delujočega v jedru Linuxa. raven. Kljub dejstvu, da je projekt še vedno v zgodnji fazi razvoja, je testiranje pokazalo, da zmogljivost gonilnika NVMe v jeziku Rust ustreza gonilniku NVMe, napisanem v jeziku C, ki je na voljo v jedru.

WD razvija gonilnik NVMe v Rustu. Eksperimentiranje z Rust na FreeBSD
WD razvija gonilnik NVMe v Rustu. Eksperimentiranje z Rust na FreeBSD

Poročilo navaja, da je trenutni gonilnik NVMe v C 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 in ima preverjena referenčna izvedba za primerjavo in podpira različne vmesnike (dev, pci, dma, blk-mq, gendisk, sysfs).

Opozoriti je treba, da gonilnik PCI NVMe za Rust že zagotavlja funkcionalnost, potrebno za delovanje, vendar še ni pripravljen za široko uporabo, saj zahteva posamezne izboljšave. Prihodnji načrti vključujejo odstranitev kode iz obstoječih nevarnih blokov, podporo operacij odstranjevanja naprav in razkladanja gonilnikov, podporo vmesniku sysfs, implementacijo lene inicializacije, ustvarjanje gonilnika za blk-mq in eksperimentiranje z uporabo asinhronega programskega modela za queue_rq.

Poleg tega lahko opazimo poskuse, ki jih je izvedla skupina NCC za razvoj gonilnikov v jeziku Rust za jedro FreeBSD. Kot primer podrobno preučujemo preprost gonilnik echo, ki vrne podatke, zapisane v datoteko /dev/rustmodule. V naslednji fazi eksperimentiranja skupina NCC razmišlja o možnosti predelave osnovnih komponent jedra v jeziku Rust za izboljšanje varnosti omrežnih in datotečnih operacij.

Čeprav se je izkazalo, da je mogoče ustvariti preproste module v jeziku Rust, bo tesnejša integracija Rusta v jedro FreeBSD zahtevala dodatno delo. Na primer, omenjajo potrebo po ustvarjanju nabora abstraktnih plasti nad podsistemi in strukturami jedra, podobnih dodatkom, ki jih pripravlja projekt Rust for Linux. V prihodnosti nameravamo izvesti podobne poskuse z jedrom Illumos in identificirati običajne abstrakcije v Rustu, ki bi jih lahko uporabili v gonilnikih, napisanih v Rustu za Linux, BSD in Illumos.

Po mnenju Microsofta in Googla je približno 70 % ranljivosti v njunih programskih izdelkih posledica nevarnega ravnanja s pomnilnikom. Pričakuje se, da bo uporaba jezika Rust zmanjšala tveganje za ranljivosti, ki jih povzroča nevarno delo s pomnilnikom, in odpravila pojav napak, kot je dostop do pomnilniškega območja po tem, ko je bil ta sproščen, in prekoračitev medpomnilnika.

Varno ravnanje s pomnilnikom je v Rustu zagotovljeno v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta in življenjske dobe (obsega) objekta ter z vrednotenjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Vir: opennet.ru

Dodaj komentar