Gumagawa na ang Western Digital sa isang driver ng NVMe na nakasulat sa Rust

RustLinux

Ang pagsasama ng Rust sa Linux ay nagkaroon ng mataas na antas ng pagtanggap ng komunidad at mga developer

Sa panahon ng kumperensya ng "Linux Plumbers 2022". na nagpapatuloy sa mga araw na ito, isang Western Digital engineer nagbigay ng isang pagtatanghal sa pagbuo ng isang controller eksperimental para sa SSD NVM-Express (NVMe) na nakasulat sa Rust at tumatakbo sa antas ng Linux kernel.

bagaman ang proyekto ay nasa maagang yugto pa ng pag-unlad, ang mga pagsubok na isinagawa ay nagpakita na ang pagganap ng Rust NVMe driver ay tumutugma sa NVMe driver na nakasulat sa C sa kernel.

Ako si Matthew Wilcox, isa ako sa mga may akda ng spec ng NVMe, ako ang nagmungkahi na gumawa ako ng NVMe driver para ipakita ang halaga ng Rust. Ito ay naging matagumpay na lampas sa aking pinakamaligaw na inaasahan. 

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

Naobserbahan na ang driver ng Rust PCI NVMe ay nagbibigay na ng kinakailangang pag-andar para sa operasyon, ngunit hindi pa ito handa para sa malawakang paggamit, dahil nangangailangan ito ng hiwalay na mga pagpapahusay.

Kasama sa mga plano para sa hinaharap ang pag-alis sa mga kasalukuyang hindi secure na block, suporta upang alisin ang device at i-download ang driver, suporta sa interface ng sysfs, magpatupad ng lazy initialization, lumikha ng controller para sa blk-mq, at mag-eksperimento sa isang asynchronous na modelo ng programming para sa queue_rq.

Higit pa rito, maaari nating ituro ang mga eksperimento na isinagawa ng NCC Group para bumuo ng mga controllers sa Rust language para sa ang FreeBSD kernel. Bilang halimbawa, isang simpleng echo controller na nagbabalik ng data na nakasulat sa /dev/rustmodule. 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, kahit na ipinakita na posible na lumikha ng mga simpleng module sa Rust, Ang mas mahigpit na pagsasama ng Rust sa FreeBSD kernel ay mangangailangan ng karagdagang trabaho.

Halimbawa, binanggit niya ang pangangailangang lumikha ng isang set ng abstraction layer sa mga kernel subsystem at istruktura, katulad ng mga plugin na inihanda ng Rust project para sa Linux. Sa hinaharap, plano naming magsagawa ng mga katulad na eksperimento sa Illumos core at i-highlight ang mga karaniwang abstraction sa Rust na maaaring gamitin sa mga driver na isinulat ni Rust para sa Linux, BSD, at Illumos.

Ayon sa Microsoft at Google, humigit-kumulang 70% ng mga kahinaan sa kanilang mga produkto ng software ay dahil sa hindi secure na pamamahala ng memorya.

Ang paggamit ng Rust na wika ay dapat na mabawasan ang panganib ng mga kahinaan sanhi ng hindi secure 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 overflow.

Ang kaligtasan ng memorya ay ibinibigay sa Rust sa oras ng pag-compile sa pamamagitan ng pagsuri sa mga sanggunian, pagsubaybay sa pagmamay-ari ng bagay, at panghabambuhay ng bagay (saklaw), gayundin sa pamamagitan ng pagsusuri sa kawastuhan ng pag-access sa memorya sa panahon ng pagpapatupad ng code.

Kalawang nagbibigay din ng proteksyon sa integer overflow, nangangailangan ng mga variable na masimulan bago gamitin, mas mahusay na pinangangasiwaan ang mga error sa karaniwang library, ipinapatupad ang konsepto ng mga hindi nababagong variable at mga sanggunian bilang default, at nag-aalok ng malakas na static na pag-type upang mabawasan ang mga lohikal na error.

Ito ay nagkakahalaga ng pagbanggit na maaaring posible na ang hinaharap na trabaho ay sasabay sa trabaho na ipinakita ni Miguel Ojeda sa kanyang "Rust for Linux" driver, na ipinakita bilang isang serye ng mga patch.

Sa wakas kung interesado kang malaman ang tungkol dito, maaari mong suriin ang mga detalye sa ang sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.