Осы күндері өтіп жатқан конференцияда Linux Plumbers 2022 көрмесінде Western Digital инженері Rust тілінде жазылған NVM-Express (NVMe) SSD дискілеріне арналған эксперименттік ядро деңгейіндегі драйверді әзірлеу туралы есеп ұсынды. LinuxЖоба әлі де дамудың алғашқы сатысында болса да, тестілеу Rust негізіндегі NVMe драйверінің өнімділігі C тілінде жазылған ядро ішіндегі NVMe драйверімен салыстыруға болатынын көрсетті.


Есепте 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 ядросына тығыз интеграциялау қосымша жұмысты қажет етеді. Мысалы, Rust жобасы үшін әзірлеген фреймворктерге ұқсас ядро ішкі жүйелері мен құрылымдары үстінде абстракция қабаттарының жиынтығын жасау қажеттілігі айтылады. LinuxБолашақта біз Illumos ядросымен ұқсас эксперименттер жүргізуді және Rust тілінде жазылған драйверлерде қолданылуы мүмкін Rust тіліндегі кең таралған абстракцияларды анықтауды жоспарлап отырмыз. Linux, BSD және Illumos.
Microsoft пен Google мәліметтері бойынша, олардың бағдарламалық өнімдеріндегі осалдықтардың шамамен 70% жадты қауіпсіз өңдеуден туындайды. Rust тілін пайдалану жадпен қауіпсіз жұмыс істеуден туындаған осалдықтардың қаупін азайтады және оны босатқаннан кейін жад аймағына кіру және буферді шамадан тыс толтыру сияқты қателердің пайда болуын жояды деп күтілуде.
Жадтың қауіпсіздігі Rust бағдарламасында компиляция уақытында анықтамалық тексеру, объект иеленуі мен объектінің қызмет ету мерзімін (ауқымын) қадағалау, сондай-ақ кодты орындау кезінде жадқа қол жеткізудің дұрыстығын бағалау арқылы қамтамасыз етіледі. Rust сонымен қатар бүтін сандардың толып кетуінен қорғауды қамтамасыз етеді, пайдалану алдында айнымалы мәндерді міндетті түрде инициализациялауды талап етеді, стандартты кітапханада қателерді жақсы өңдейді, әдепкі бойынша өзгермейтін сілтемелер мен айнымалылар тұжырымдамасын қолданады, логикалық қателерді азайту үшін күшті статикалық теруді ұсынады.
Ақпарат көзі: opennet.ru
