Western Digital вже працює над драйвером NVMe, написаним на Rust

RustLinux

Інтеграція Rust у Linux отримала високий рівень сприйняття спільнотою та розробниками

Під час конференції «Linux Plumbers 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.