WD razvija NVMe drajver u Rustu. Eksperimentiranje s Rustom na FreeBSD-u

Na konferenciji Linux Plumbers 2022 koja se održava ovih dana, inženjer iz Western Digitala održao je prezentaciju o razvoju eksperimentalnog drajvera za SSD diskove s NVM-Express (NVMe) sučeljem, napisanog u Rust jeziku i pokrenutog na Linux kernelu razini. Unatoč činjenici da je projekt još uvijek u ranoj fazi razvoja, testiranje je pokazalo da performanse NVMe drajvera u Rust jeziku odgovaraju NVMe drajveru napisanom u C jeziku dostupnom u kernelu.

WD razvija NVMe drajver u Rustu. Eksperimentiranje s Rustom na FreeBSD-u
WD razvija NVMe drajver u Rustu. Eksperimentiranje s Rustom na FreeBSD-u

Izvješće navodi da je trenutni NVMe drajver u C-u potpuno zadovoljavajući za programere, ali je NVMe podsustav dobra platforma za istraživanje izvedivosti razvoja drajvera u Rustu, budući da je prilično jednostavan, široko korišten, ima visoke zahtjeve za performansama i ima dokazana referentna implementacija za usporedbu i podržava različita sučelja (dev, pci, dma, blk-mq, gendisk, sysfs).

Napominje se da PCI NVMe upravljački program za Rust već pruža funkcionalnost potrebnu za rad, ali još nije spreman za široku upotrebu, jer zahtijeva individualna poboljšanja. Budući planovi uključuju oslobađanje koda od postojećih nesigurnih blokova, podržavanje operacija uklanjanja uređaja i učitavanja drajvera, podržavanje sysfs sučelja, implementaciju lijene inicijalizacije, stvaranje drajvera za blk-mq i eksperimentiranje s korištenjem asinkronog programskog modela za queue_rq.

Dodatno, možemo primijetiti eksperimente koje je provela NCC grupa za razvoj upravljačkih programa na jeziku Rust za FreeBSD kernel. Kao primjer, detaljno ispitujemo jednostavan upravljački program echo koji vraća podatke zapisane u datoteku /dev/rustmodule. U sljedećoj fazi eksperimentiranja, NCC grupa razmatra mogućnost prerade ključnih komponenti kernela u jeziku Rust kako bi se poboljšala sigurnost mrežnih i datotečnih operacija.

Međutim, iako se pokazalo da je moguće kreirati jednostavne module u Rust jeziku, čvršća integracija Rusta u FreeBSD kernel će zahtijevati dodatni rad. Na primjer, spominju potrebu za stvaranjem skupa slojeva apstrakcije preko podsustava i struktura jezgre, slično dodacima koje je pripremio projekt Rust za Linux. U budućnosti planiramo provesti slične eksperimente s jezgrom Illumosa i identificirati uobičajene apstrakcije u Rustu koje bi se mogle koristiti u upravljačkim programima napisanim u Rustu za Linux, BSD i Illumos.

Prema Microsoftu i Googleu, oko 70% ranjivosti u njihovim softverskim proizvodima uzrokovano je nesigurnim rukovanjem memorijom. Očekuje se da će korištenje jezika Rust smanjiti rizik od ranjivosti uzrokovanih nesigurnim radom s memorijom, te eliminirati pojavu pogrešaka poput pristupa memorijskom području nakon što je ono oslobođeno i prekoračenja međuspremnika.

Rukovanje sigurnim za memoriju omogućeno je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta i životnog vijeka objekta (opseg), kao i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.

Izvor: opennet.ru

Dodajte komentar