WD Rust жүйесінде NVMe драйверін әзірлеуде. FreeBSD жүйесінде Rust арқылы тәжірибе жасау

Осы күндері өтіп жатқан Linux Plumbers 2022 конференциясында Western Digital компаниясының инженері Rust тілінде жазылған және Linux ядросында жұмыс істейтін NVM-Express (NVMe) интерфейсі бар SSD дискілеріне арналған тәжірибелік драйверді әзірлеу туралы презентация жасады. деңгейі. Жоба әлі де дамудың бастапқы кезеңінде екеніне қарамастан, тестілеу NVMe драйверінің Rust тіліндегі өнімділігі ядрода қол жетімді 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 Group жүргізген эксперименттерді атап өтуге болады. Мысал ретінде біз /dev/rustmodule файлына жазылған деректерді қайтаратын қарапайым эхо драйверін егжей-тегжейлі қарастырамыз. Эксперименттің келесі кезеңінде NCC Group желілік және файлдық операциялардың қауіпсіздігін жақсарту үшін Rust тілінде ядроның негізгі компоненттерін қайта өңдеу мүмкіндігін қарастыруда.

Дегенмен, Rust тілінде қарапайым модульдерді жасауға болатыны көрсетілсе де, Rust бағдарламасының FreeBSD ядросына неғұрлым тығыз интеграциясы қосымша жұмысты қажет етеді. Мысалы, олар Linux үшін Rust жобасы дайындаған қондырмаларға ұқсас ішкі жүйелер мен ядро ​​құрылымдарының үстінен абстракциялық қабаттар жинағын жасау қажеттілігін айтады. Болашақта біз Illumos ядросымен ұқсас эксперименттер жүргізуді жоспарлап отырмыз және Rust жүйесінде Linux, BSD және Illumos үшін жазылған драйверлерде қолдануға болатын жалпы абстракцияларды анықтауды жоспарлап отырмыз.

Microsoft пен Google мәліметтері бойынша, олардың бағдарламалық өнімдеріндегі осалдықтардың шамамен 70% жадты қауіпсіз өңдеуден туындайды. Rust тілін пайдалану жадпен қауіпсіз жұмыс істеуден туындаған осалдықтардың қаупін азайтады және оны босатқаннан кейін жад аймағына кіру және буферді шамадан тыс толтыру сияқты қателердің пайда болуын жояды деп күтілуде.

Жадтың қауіпсіздігі Rust бағдарламасында компиляция уақытында анықтамалық тексеру, объект иеленуі мен объектінің қызмет ету мерзімін (ауқымын) қадағалау, сондай-ақ кодты орындау кезінде жадқа қол жеткізудің дұрыстығын бағалау арқылы қамтамасыз етіледі. Rust сонымен қатар бүтін сандардың толып кетуінен қорғауды қамтамасыз етеді, пайдалану алдында айнымалы мәндерді міндетті түрде инициализациялауды талап етеді, стандартты кітапханада қателерді жақсы өңдейді, әдепкі бойынша өзгермейтін сілтемелер мен айнымалылар тұжырымдамасын қолданады, логикалық қателерді азайту үшін күшті статикалық теруді ұсынады.

Ақпарат көзі: opennet.ru

пікір қалдыру