Ang WD ay bumubuo ng isang NVMe driver sa Rust. Pag-eksperimento sa Rust sa FreeBSD

Sa patuloy na kumperensya ng Linux Plumbers 2022 sa mga araw na ito, gumawa ng presentasyon ang isang engineer mula sa Western Digital tungkol sa pagbuo ng isang eksperimentong driver para sa mga NVM-Express (NVMe) SSD na nakasulat sa Rust at tumatakbo sa antas ng Linux kernel. Sa kabila ng katotohanan na ang proyekto ay nasa maagang yugto pa ng pag-unlad, ang isinagawang pagsubok ay nagpakita na ang pagganap ng Rust NVMe driver ay tumutugma sa NVMe driver na nakasulat sa C sa kernel.

Ang WD ay bumubuo ng isang NVMe driver sa Rust. Pag-eksperimento sa Rust sa FreeBSD
Ang WD ay bumubuo ng isang NVMe driver sa Rust. Pag-eksperimento sa Rust sa FreeBSD

Sinasabi ng ulat na ang kasalukuyang driver ng NVMe sa C ay ganap na kasiya-siya para sa mga developer, ngunit ang NVMe subsystem ay isang mahusay na platform upang tuklasin ang pagiging posible ng pagbuo ng mga driver sa Rust, dahil ito ay medyo simple, malawak na ginagamit, may mataas na mga kinakailangan sa pagganap, at may isang napatunayang pagpapatupad ng sanggunian. para sa paghahambing at sumusuporta sa iba't ibang mga interface (dev, pci, dma, blk-mq, gendisk, sysfs).

Napansin na ang driver ng Rust PCI NVMe ay nagbibigay na ng pag-andar na kinakailangan para sa operasyon, ngunit hindi pa handa para sa malawakang paggamit, dahil nangangailangan ito ng hiwalay na mga pagpapabuti. Kasama sa mga plano para sa hinaharap ang pag-alis sa mga umiiral nang hindi ligtas na mga bloke, suporta para sa pag-alis ng device at pag-alis ng driver, pagsuporta sa interface ng sysfs, pagpapatupad ng lazy initialization, paggawa ng driver para sa blk-mq, at pag-eksperimento sa isang asynchronous na modelo ng programming para sa queue_rq.

Bukod pa rito, maaari nating tandaan ang mga eksperimento na isinagawa ng NCC Group upang bumuo ng mga driver sa Rust na wika para sa FreeBSD kernel. Bilang halimbawa, ang isang simpleng echo driver na nagbabalik ng data na nakasulat sa /dev/rustmodule file ay sinusuri nang detalyado. Sa susunod na yugto ng eksperimento, isinasaalang-alang ng NCC Group ang muling paggawa ng mga pangunahing pangunahing bahagi sa Rust upang mapabuti ang seguridad ng network at mga pagpapatakbo ng file.

Iyon ay sinabi, bagama't ipinakita na posible na lumikha ng mga simpleng module sa Rust, ang isang mas mahigpit na pagsasama ng Rust sa kernel ng FreeBSD ay mangangailangan ng karagdagang trabaho. Halimbawa, binanggit nito ang pangangailangang lumikha ng isang set ng abstraction layer sa mga subsystem at kernel structures, katulad ng mga add-on na inihanda ng Rust for Linux project. Sa hinaharap, pinlano na magsagawa ng mga katulad na eksperimento sa Illumos core at i-highlight ang mga karaniwang abstraction sa Rust na maaaring magamit sa Rust-written driver para sa Linux, BSD at Illumos.

Ayon sa Microsoft at Google, humigit-kumulang 70% ng mga kahinaan sa kanilang mga produkto ng software ay sanhi ng hindi ligtas na pamamahala ng memorya. Ipinapalagay na ang paggamit ng Rust na wika ay magbabawas sa panganib ng mga kahinaan na dulot ng hindi ligtas na paghawak ng memorya, at aalisin ang paglitaw ng mga error tulad ng pag-access sa isang lugar ng memorya pagkatapos na ito ay mapalaya at buffer overruns.

Ang kaligtasan ng memorya ay ibinibigay sa Rust sa oras ng pag-compile sa pamamagitan ng pagsuri sa sanggunian, pagsubaybay sa pagmamay-ari ng bagay at panghabambuhay ng bagay (saklaw), gayundin sa pamamagitan ng pagsusuri ng kawastuhan ng pag-access sa memorya sa panahon ng pagpapatupad ng code. Nagbibigay din ang kalawang ng proteksyon laban sa mga overflow ng integer, nangangailangan ng mandatoryong pagsisimula ng mga variable na halaga bago gamitin, mas mahusay na pinangangasiwaan ang mga error sa karaniwang library, inilalapat ang konsepto ng hindi nababagong mga sanggunian at mga variable bilang default, nag-aalok ng malakas na static na pag-type upang mabawasan ang mga lohikal na error.

Pinagmulan: opennet.ru

Magdagdag ng komento