WD dia manamboatra mpamily NVMe ao amin'ny Rust. Fanandramana amin'ny Rust amin'ny FreeBSD

На проходящей в эти дни конференции Linux Plumbers 2022 инженер из компании Western Digital выступил с докладом о разработке экспериментального драйвера для SSD-накопителей с интерфейсом NVM-Express (NVMe), написанного на языке Rust и работающего на уровне ядра Linux. Несмотря на то, что проект пока находится на раннем этапе развития, проведённое тестирование показало, что производительность NVMe-драйвера на языке Rust соответствует имеющемуся в ядре NVMe-драйверу, написанному на языке Си.

WD dia manamboatra mpamily NVMe ao amin'ny Rust. Fanandramana amin'ny Rust amin'ny FreeBSD
WD dia manamboatra mpamily NVMe ao amin'ny Rust. Fanandramana amin'ny Rust amin'ny FreeBSD

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

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

Дополнительно можно отметить проводимые компанией NCC Group эксперименты по разработке драйверов на языке Rust для ядра FreeBSD. В качестве примера подробно разбирается простой echo-драйвер, возвращающий данные, записанные в файл /dev/rustmodule. На следующем этапе экспериментов NCC Group рассматривает возможность переработки на языке Rust базовых компонентов ядра для повышения безопасности сетевых и файловых операций.

При этом, несмотря на то, что показана возможность создания простых модулей на языке Rust, более плотная интеграция Rust в ядро FreeBSD потребует проведения дополнительной работы. Например, упоминается необходимость создания набора слоёв абстракции над подсистемами и структурами ядра, похожих на надстройки, подготовленные проектом Rust for Linux. В дальнейшем планируется провести похожие эксперименты с ядром Illumos и выделить общие абстракции на Rust, которые могли бы использоваться в написанных на Rust драйверах для Linux, BSD и Illumos.

По данным компаний Microsoft и Google около 70% уязвимостей в их программных продуктах вызваны небезопасной работой с памятью. Предполагается, что использование языка Rust позволит снизить риск появления уязвимостей, вызванных небезопасной работой с памятью, и исключить появление таких ошибок, как обращение к области памяти после её освобождения и выход за границы буфера.

Ny harafesina dia manery ny fiarovana ny fitadidiana amin'ny fotoana fanangonana amin'ny alàlan'ny fanamarinana reference, ny fananana zavatra ary ny fanaraha-maso mandritra ny androm-piainana (scopes), ary amin'ny fanombanana ny fahamarinan'ny fidirana amin'ny fitadidiana amin'ny fotoana fandehanana. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky ny fanombohana ny soatoavina miovaova alohan'ny hampiasana azy, manana fikarakarana fahadisoana tsara kokoa ao amin'ny tranomboky mahazatra, mampiasa ny foto-kevitry ny fanondroana sy ny fari-pitsipika tsy azo ovaina amin'ny alàlan'ny default, ary manolotra sora-baventy matanjaka mba hampihenana ny lesoka lojika.

Source: opennet.ru

Add a comment