WD razvija NVMe drajver u Rustu. Eksperimentisanje sa 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 sa NVM-Express (NVMe) interfejsom, napisanog na Rust jeziku i koji radi na Linux kernelu nivo. Uprkos činjenici da je projekat još uvek 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. Eksperimentisanje sa Rustom na FreeBSD-u
WD razvija NVMe drajver u Rustu. Eksperimentisanje sa Rustom na FreeBSD-u

U izvještaju se navodi da je trenutni NVMe drajver u C-u potpuno zadovoljavajući za programere, ali je NVMe podsistem dobra platforma za istraživanje izvodljivosti 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 poređenje i podržava različite interfejse (dev, pci, dma, blk-mq, gendisk, sysfs).

Napominje se da PCI NVMe drajver za Rust već pruža funkcionalnost neophodnu za rad, ali još nije spreman za široku upotrebu, jer zahtijeva pojedinačna poboljšanja. Budući planovi uključuju oslobađanje koda od postojećih nesigurnih blokova, podršku uklanjanju uređaja i operacijama uklanjanja drajvera, podršku sysfs interfejsu, implementaciju lenje inicijalizacije, kreiranje drajvera za blk-mq i eksperimentisanje sa korišćenjem modela asinhronog programiranja za queue_rq.

Osim toga, možemo primijetiti eksperimente koje je sprovela NCC grupa za razvoj drajvera na Rust jeziku za FreeBSD kernel. Kao primjer, detaljno ćemo ispitati jednostavan eho drajver koji vraća podatke upisane u datoteku /dev/rustmodule. U sljedećoj fazi eksperimentiranja, NCC Grupa razmatra mogućnost prerade osnovnih komponenti kernela u Rust jeziku kako bi se poboljšala sigurnost operacija mreže i datoteka.

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, pominju potrebu za stvaranjem skupa slojeva apstrakcije nad podsistemima i strukturama kernela, slično dodacima koje je pripremio Rust za Linux projekt. U budućnosti planiramo da sprovedemo slične eksperimente sa Illumos kernelom i identifikujemo uobičajene apstrakcije u Rustu koje bi se mogle koristiti u drajverima napisanim u Rustu za Linux, BSD i Illumos.

Prema Microsoft-u i Google-u, oko 70% ranjivosti u njihovim softverskim proizvodima uzrokovano je nesigurnim rukovanjem memorijom. Očekuje se da će upotreba Rust jezika smanjiti rizik od ranjivosti uzrokovanih nesigurnim radom s memorijom i eliminirati pojavu grešaka kao što je pristup memorijskoj oblasti nakon što je ona oslobođena i prekoračenje bafera.

Sigurnost memorije je obezbeđena u Rustu u vreme kompajliranja kroz proveru referenci, praćenje vlasništva nad objektom i životnog veka objekta (opsega), kao i kroz procenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

izvor: opennet.ru

Dodajte komentar