A WD NVMe illesztőprogramot fejleszt Rustban. Kísérletezés a Rusttal FreeBSD-n

A napokban zajló Linux Plumbers 2022 konferencián a Western Digital egyik mérnöke egy Rust nyelven írt és Linux kernel szinten futó NVM-Express (NVMe) SSD-k kísérleti meghajtójának fejlesztéséről tartott előadást. Annak ellenére, hogy a projekt még a fejlesztés korai szakaszában van, az elvégzett tesztelés kimutatta, hogy a Rust NVMe meghajtó teljesítménye megfelel a kernelben C nyelven írt NVMe meghajtónak.

A WD NVMe illesztőprogramot fejleszt Rustban. Kísérletezés a Rusttal FreeBSD-n
A WD NVMe illesztőprogramot fejleszt Rustban. Kísérletezés a Rusttal FreeBSD-n

A jelentés szerint a jelenlegi C-beli NVMe-illesztőprogram teljesen kielégítő a fejlesztők számára, de az NVMe alrendszer jó platform az illesztőprogramok Rust-ban való fejlesztésének megvalósíthatóságának vizsgálatára, mivel meglehetősen egyszerű, széles körben használt, magas teljesítményigényekkel rendelkezik, és egy jól bevált referencia implementáció.összehasonlításra és különféle interfészek támogatására (dev, pci, dma, blk-mq, gendisk, sysfs).

Megjegyzendő, hogy a Rust PCI NVMe meghajtó már biztosítja a működéshez szükséges funkcionalitást, de még nem áll készen a széleskörű használatra, mivel külön fejlesztéseket igényel. A jövő tervei között szerepel a meglévő nem biztonságos blokkoktól való megszabadulás, az eszköz eltávolításának és az illesztőprogram eltávolításának támogatása, a sysfs interfész támogatása, a lusta inicializálás megvalósítása, a blk-mq illesztőprogramjának létrehozása, valamint a queue_rq aszinkron programozási modellel való kísérletezése.

Emellett megjegyezhetjük az NCC Group által a Rust nyelvű meghajtóprogramok fejlesztésére a FreeBSD kernelhez végzett kísérleteit is. Példaként egy egyszerű visszhang-illesztőprogramot, amely a /dev/rustmodule fájlba írt adatokat ad vissza, részletesen elemzik. A kísérletezés következő szakaszában az NCC Group a Rust alapvető alapvető összetevőinek átdolgozását fontolgatja a hálózati és fájlműveletek biztonságának javítása érdekében.

Ennek ellenére, bár bebizonyosodott, hogy lehetséges egyszerű modulokat létrehozni a Rustban, a Rust szorosabb integrálása a FreeBSD rendszermagba további munkát igényel. Például megemlíti az absztrakciós rétegek halmazának szükségességét az alrendszerek és kernelstruktúrák felett, hasonlóan a Rust for Linux projekt által készített kiegészítőkhöz. A jövőben a tervek szerint hasonló kísérleteket hajtanak végre az Illumos maggal, és rávilágítanak a Rust azon gyakori absztrakcióira, amelyek felhasználhatók a Rust által írt Linux, BSD és Illumos meghajtókban.

A Microsoft és a Google szerint a szoftvertermékeik sebezhetőségeinek mintegy 70%-át a nem biztonságos memóriakezelés okozza. Feltételezhető, hogy a Rust nyelv használata csökkenti a nem biztonságos memóriakezelés által okozott sebezhetőségek kockázatát, és kiküszöböli az olyan hibák előfordulását, mint például a memóriaterület elérése annak felszabadítása után és a puffertúllépések.

A memóriabiztos kezelést a Rust fordítási időben biztosítja a referenciaellenőrzés, az objektum tulajdonjogának és az objektum élettartamának (hatókörének) nyomon követésével, valamint a kódvégrehajtás során a memória-hozzáférés helyességének értékelésével. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.

Forrás: opennet.ru

Hozzászólás