WD inatengeneza kiendeshi cha NVMe huko Rust. Kujaribu na Rust kwenye FreeBSD

Katika mkutano wa Linux Plumbers 2022 unaofanyika siku hizi, mhandisi kutoka Western Digital alitoa mada juu ya ukuzaji wa kiendeshi cha majaribio cha viendeshi vya SSD na kiolesura cha NVM-Express (NVMe), kilichoandikwa kwa lugha ya Rust na kinachoendeshwa kwenye kinu cha Linux. kiwango. Licha ya ukweli kwamba mradi bado uko katika hatua ya awali ya maendeleo, upimaji umeonyesha kuwa utendaji wa dereva wa NVMe katika lugha ya Rust unafanana na dereva wa NVMe iliyoandikwa katika lugha ya C inayopatikana kwenye kernel.

WD inatengeneza kiendeshi cha NVMe huko Rust. Kujaribu na Rust kwenye FreeBSD
WD inatengeneza kiendeshi cha NVMe huko Rust. Kujaribu na Rust kwenye FreeBSD

Ripoti hiyo inasema kwamba dereva wa sasa wa NVMe katika C ni wa kuridhisha kabisa kwa watengenezaji, lakini mfumo mdogo wa NVMe ni jukwaa nzuri la kuchunguza uwezekano wa kuendeleza madereva katika Rust, kwa kuwa ni rahisi sana, hutumiwa sana, ina mahitaji ya juu ya utendaji, na ina. utekelezaji wa marejeleo uliothibitishwa kwa kulinganisha na kuauni miingiliano mbalimbali (dev, pci, dma, blk-mq, gendisk, sysfs).

Ikumbukwe kwamba dereva wa PCI NVMe kwa Rust tayari hutoa utendaji muhimu kwa uendeshaji, lakini bado haujawa tayari kwa matumizi mengi, kwani inahitaji uboreshaji wa mtu binafsi. Mipango ya siku zijazo ni pamoja na kuondoa msimbo wa vizuizi visivyo salama, kusaidia uondoaji wa kifaa na shughuli za upakuaji wa viendeshaji, kusaidia kiolesura cha sysfs, kutekeleza uanzishaji wa uvivu, kuunda kiendeshi cha blk-mq, na kujaribu kutumia kielelezo cha programu kisichosawazisha kwa queue_rq.

Zaidi ya hayo, tunaweza kutambua majaribio yaliyofanywa na Kikundi cha NCC ili kuendeleza viendeshaji katika lugha ya Rust kwa kernel ya FreeBSD. Kama mfano, tunachunguza kwa undani kiendeshi rahisi cha echo ambacho kinarudisha data iliyoandikwa kwa faili /dev/rustmodule. Katika awamu inayofuata ya majaribio, Kundi la NCC linazingatia uwezekano wa kurekebisha vipengele vya msingi vya kernel katika lugha ya Rust ili kuboresha usalama wa uendeshaji wa mtandao na faili.

Walakini, ingawa imeonyeshwa kuwa inawezekana kuunda moduli rahisi katika lugha ya Rust, ujumuishaji mkali wa Rust kwenye kernel ya FreeBSD utahitaji kazi ya ziada. Kwa mfano, wanataja hitaji la kuunda seti ya tabaka za uondoaji juu ya mifumo ndogo na miundo ya kernel, sawa na nyongeza zilizoandaliwa na mradi wa Rust for Linux. Katika siku zijazo, tunapanga kufanya majaribio sawa na kernel ya Illumos na kutambua vifupisho vya kawaida katika Rust ambavyo vinaweza kutumika katika viendeshaji vilivyoandikwa katika Rust kwa Linux, BSD na Illumos.

Kulingana na Microsoft na Google, takriban 70% ya udhaifu katika bidhaa zao za programu husababishwa na utunzaji wa kumbukumbu usio salama. Inatarajiwa kuwa matumizi ya lugha ya Rust yatapunguza hatari ya udhaifu unaosababishwa na kazi isiyo salama ya kumbukumbu, na kuondoa kutokea kwa hitilafu kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa na kuzidi bafa.

Utunzaji wa kumbukumbu-salama hutolewa katika Rust wakati wa kukusanya kupitia ukaguzi wa kumbukumbu, kufuatilia umiliki wa kitu na maisha ya kitu (wigo), na pia kupitia tathmini ya usahihi wa ufikiaji wa kumbukumbu wakati wa utekelezaji wa nambari. Kutu pia hutoa ulinzi dhidi ya mafuriko kamili, inahitaji uanzishaji wa lazima wa maadili tofauti kabla ya matumizi, hushughulikia makosa vyema katika maktaba ya kawaida, hutumia dhana ya marejeleo yasiyobadilika na vigeu kwa chaguo-msingi, hutoa uchapaji thabiti wa tuli ili kupunguza makosa ya kimantiki.

Chanzo: opennet.ru

Kuongeza maoni