Western Digital уже работает над драйвером NVMe, написанным на Rust

РустЛинукс

Интеграция Rust в Linux получила высокую оценку сообщества и разработчиков.

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

Хотя проект все еще находится на ранней стадии разработки, проведенные тесты показали, что производительность драйвера Rust NVMe соответствует драйверу NVMe, написанному на C в ядре.

Я Мэтью Уилкокс, я один из авторов спецификации NVMe, я был тем, кто предложил мне сделать драйвер NVMe, чтобы продемонстрировать ценность Rust. Успех превзошел все мои самые смелые ожидания. 

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

Замечено, что драйвер Rust PCI NVMe уже обеспечивает необходимый для работы функционал, но он еще не готов к широкому использованию, так как требует отдельных доработок.

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

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

Тем не менее, хотя было показано, что в Rust можно создавать простые модули, более тесная интеграция Rust в ядро ​​FreeBSD потребует дополнительной работы.

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

По данным Microsoft и Google, около 70% уязвимостей в их программных продуктах связаны с небезопасным управлением памятью.

Предполагается, что использование языка Rust снижает риск уязвимостей. вызвано небезопасной обработкой памяти и устранит возникновение ошибок, таких как доступ к области памяти после ее освобождения и переполнение буфера.

Безопасность памяти обеспечивается в Rust во время компиляции путем проверки ссылок, отслеживания владения объектом и времени жизни объекта (область действия), а также путем оценки правильности доступа к памяти во время выполнения кода.

Ржавчина также обеспечивает целочисленную защиту от переполнения, требует инициализации переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемых переменных и ссылок по умолчанию и предлагает строгую статическую типизацию для минимизации логических ошибок.

Стоит отметить, что, возможно, будущая работа будет идти рука об руку с работой, которую Мигель Охеда представил над своими драйверами «Rust для Linux», которые были представлены в виде серии патчей.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.