WD нь Rust-д NVMe драйвер боловсруулж байна. FreeBSD дээр Rust-тэй туршилт хийж байна

Энэ өдрүүдэд болж буй Linux Plumbers 2022 бага хуралд Western Digital компанийн инженер Rust хэлээр бичигдсэн, Linux цөм дээр ажилладаг NVM-Express (NVMe) интерфэйс бүхий SSD хөтчүүдэд зориулсан туршилтын драйверийг хөгжүүлэх талаар илтгэл тавив. түвшин. Төсөл хөгжлийн эхний шатандаа байгаа хэдий ч Rust хэл дээрх NVMe драйверын гүйцэтгэл нь цөмд байгаа C хэл дээр бичигдсэн NVMe драйвертай тохирч байгааг туршилт харуулж байна.

WD нь Rust-д NVMe драйвер боловсруулж байна. FreeBSD дээр Rust-тэй туршилт хийж байна
WD нь Rust-д NVMe драйвер боловсруулж байна. FreeBSD дээр Rust-тэй туршилт хийж байна

Уг тайланд C хэл дээрх одоогийн NVMe драйвер нь хөгжүүлэгчдэд бүрэн нийцэж байгаа боловч NVMe дэд систем нь Rust-д драйверуудыг хөгжүүлэх боломжийг судлахад тохиромжтой платформ юм, учир нь энэ нь маш энгийн, өргөн хэрэглэгддэг, гүйцэтгэлийн өндөр шаардлага тавьдаг бөгөөд харьцуулалтад зориулсан батлагдсан лавлагааны хэрэгжилт бөгөөд янз бүрийн интерфейсүүдийг (dev, pci, dma, blk-mq, gendisk, sysfs) дэмждэг.

Rust-д зориулсан PCI NVMe драйвер нь ажиллахад шаардлагатай функцийг аль хэдийн хангасан боловч бие даасан сайжруулалт шаарддаг тул өргөн хэрэглээнд хараахан бэлэн болоогүй байна. Ирээдүйн төлөвлөгөөнд одоо байгаа аюултай блокуудын кодыг арилгах, төхөөрөмжийг устгах болон драйверийг буулгах үйлдлүүдийг дэмжих, sysfs интерфейсийг дэмжих, залхуу эхлүүлэх, blk-mq-д драйвер үүсгэх, queue_rq-д асинхрон програмчлалын загвар ашиглах туршилт хийх зэрэг орно.

Нэмж дурдахад бид FreeBSD цөмд Rust хэлээр драйверуудыг хөгжүүлэх зорилгоор NCC группээс хийсэн туршилтуудыг тэмдэглэж болно. Жишээ болгон бид /dev/rustmodule файлд бичигдсэн өгөгдлийг буцаадаг энгийн цуурай драйверийг нарийвчлан авч үздэг. Туршилтын дараагийн шатанд NCC групп сүлжээний болон файлын үйлдлийн аюулгүй байдлыг сайжруулах үүднээс цөмийн үндсэн бүрэлдэхүүн хэсгүүдийг Rust хэл дээр дахин боловсруулах боломжийг судалж байна.

Гэсэн хэдий ч Rust хэл дээр энгийн модулиудыг үүсгэх боломжтой нь батлагдсан ч Rust-ийг FreeBSD цөмд илүү нягт нэгтгэх нь нэмэлт ажил шаардах болно. Тухайлбал, Linux-д зориулсан Rust төслөөс бэлтгэсэн нэмэлтүүдтэй адил дэд системүүд болон цөмийн бүтцүүд дээр хийсвэрлэх давхаргын багцыг бий болгох шаардлагатайг тэд дурджээ. Ирээдүйд бид Illumos цөмтэй ижил төстэй туршилтуудыг хийж, Linux, BSD болон Illumos-д зориулсан Rust дээр бичигдсэн драйверуудад ашиглаж болох Rust дахь нийтлэг хийсвэрлэлүүдийг тодорхойлохоор төлөвлөж байна.

Майкрософт болон Google-ийн мэдээлснээр тэдний програм хангамжийн бүтээгдэхүүн дэх эмзэг байдлын 70 орчим хувь нь санах ойн аюулгүй ажиллагаанаас үүдэлтэй байдаг. Rust хэлийг ашигласнаар санах ойтой аюулгүй ажилласнаас үүсэх эмзэг байдлын эрсдлийг бууруулж, санах ойн талбарыг сулласны дараа хандах, буфер хэтрүүлэх зэрэг алдаа гарахыг арилгах болно.

Санах ойн аюулгүй ажиллагааг Rust-д хөрвүүлэх үед лавлагаа шалгах, объектын эзэмшил болон объектын ашиглалтын хугацааг (хамрах хүрээ) хянах, мөн кодыг гүйцэтгэх явцад санах ойд нэвтрэх зөв эсэхийг үнэлэх замаар хангадаг. Rust нь бүхэл тоон хэтрэхээс хамгаалж, ашиглахын өмнө хувьсагчийн утгыг заавал эхлүүлэх шаардлагатай, стандарт номын санд алдааг илүү сайн зохицуулдаг, өөрчлөгддөггүй лавлагаа, хувьсагчийн ойлголтыг анхдагчаар ашигладаг, логик алдааг багасгахын тулд хүчтэй статик бичихийг санал болгодог.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх