WD tab tom tsim NVMe tsav tsheb hauv Rust. Kev sim nrog Rust ntawm FreeBSD

Ntawm lub rooj sib tham Linux Plumbers 2022 hnub no, tus kws tshaj lij los ntawm Western Digital tau tshaj tawm txog kev txhim kho kev sim tsav rau SSD tsav nrog NVM-Express (NVMe) interface, sau ua lus Rust thiab khiav ntawm Linux kernel qib. Txawm hais tias qhov tseeb tias txoj haujlwm tseem nyob rau theem pib ntawm kev txhim kho, kev sim tau pom tias qhov ua tau zoo ntawm NVMe tsav tsheb hauv cov lus Rust sib raug rau NVMe tsav tsheb uas sau ua lus C muaj nyob hauv cov ntsiav.

WD tab tom tsim NVMe tsav tsheb hauv Rust. Kev sim nrog Rust ntawm FreeBSD
WD tab tom tsim NVMe tsav tsheb hauv Rust. Kev sim nrog Rust ntawm FreeBSD

Daim ntawv tshaj tawm hais tias tam sim no NVMe tsav tsheb hauv C yog qhov txaus siab rau cov neeg tsim khoom, tab sis NVMe subsystem yog lub platform zoo rau kev tshawb nrhiav qhov ua tau los tsim cov tsav tsheb hauv Rust, vim nws yooj yim heev, siv dav, muaj kev ua haujlwm siab, thiab muaj. kev siv pov thawj pov thawj rau kev sib piv thiab txhawb ntau qhov sib cuam tshuam (dev, pci, dma, blk-mq, gendisk, sysfs).

Nws tau sau tseg tias PCI NVMe tsav tsheb rau Rust twb muab cov haujlwm tsim nyog rau kev ua haujlwm, tab sis tseem tsis tau npaj rau kev siv dav, vim nws xav tau kev txhim kho tus kheej. Cov phiaj xwm yav tom ntej suav nrog kev tshem tawm cov cai ntawm cov blocks uas twb muaj lawm tsis muaj kev nyab xeeb, txhawb nqa kev tshem tawm cov cuab yeej thiab cov tsav tsheb thauj khoom, txhawb nqa sysfs interface, siv tub nkeeg pib, tsim tus tsav tsheb rau blk-mq, thiab sim siv asynchronous programming qauv rau queue_rq.

Tsis tas li ntawd, peb tuaj yeem nco ntsoov cov kev sim ua los ntawm NCC Pawg los tsim cov tsav tsheb hauv Rust lus rau FreeBSD kernel. Ua piv txwv, peb tshuaj xyuas kom meej ib qho yooj yim echo tsav tsheb rov qab cov ntaub ntawv sau rau hauv cov ntaub ntawv /dev/rustmodule. Nyob rau theem tom ntej ntawm kev sim, NCC Pawg tab tom txiav txim siab qhov muaj peev xwm rov ua haujlwm ntawm cov khoom tseem ceeb ntawm cov ntsiav hauv Rust hom lus los txhim kho kev ruaj ntseg ntawm kev sib koom tes thiab cov ntaub ntawv ua haujlwm.

Txawm li cas los xij, txawm hais tias nws tau pom tias nws muaj peev xwm tsim cov qauv yooj yim hauv cov lus Rust, kev sib koom ua ke ntawm Rust rau hauv FreeBSD kernel yuav xav tau kev ua haujlwm ntxiv. Piv txwv li, lawv hais txog qhov yuav tsum tau tsim cov txheej txheem ntawm abstraction txheej dhau ntawm cov txheej txheem subsystems thiab kernel qauv, zoo ib yam li cov add-ons npaj los ntawm Rust for Linux project. Yav tom ntej, peb npaj yuav ua qhov kev sim zoo sib xws nrog Illumos kernel thiab txheeb xyuas cov ntsiab lus tsis txaus ntseeg hauv Rust uas tuaj yeem siv rau hauv cov tsav tsheb sau hauv Rust rau Linux, BSD thiab Illumos.

Raws li Microsoft thiab Google, kwv yees li 70% ntawm qhov tsis zoo hauv lawv cov khoom lag luam software yog tshwm sim los ntawm kev tuav lub cim xeeb tsis zoo. Nws xav tias kev siv cov lus Rust yuav txo qhov kev pheej hmoo ntawm qhov tsis zoo los ntawm kev ua haujlwm tsis zoo nrog lub cim xeeb, thiab tshem tawm qhov tshwm sim ntawm qhov yuam kev xws li nkag mus rau thaj chaw nco tom qab nws tau tso tawm thiab dhau ntawm qhov tsis muaj.

Kev tuav pov hwm kev nco yog muab rau hauv Rust ntawm lub sijhawm los ntawm kev siv tshuaj xyuas, ua raws li cov tswv cuab ntawm cov khoom thiab lub neej ntawm cov khoom (scope), nrog rau kev ntsuas qhov tseeb ntawm kev nkag mus rau lub cim xeeb thaum lub sijhawm ua tiav cov lej. Rust kuj tseem muab kev tiv thaiv tus naj npawb overflows, yuav tsum tau pib pib ntawm qhov sib txawv ntawm qhov tseem ceeb ua ntej siv, tuav cov kev ua yuam kev zoo dua hauv cov tsev qiv ntawv tus qauv, siv lub tswv yim ntawm cov ntaub ntawv tsis hloov pauv thiab cov kev hloov pauv los ntawm lub neej ntawd, muaj kev ntaus ntawv zoo li qub kom txo qis cov kev ua yuam kev.

Tau qhov twg los: opennet.ru

Ntxiv ib saib