Рамка в Rust може да бъде внедрена в ядрото за подобряване на драйверите

Rust Linux ядро

Джош Триплет, компания, базирана на Intel и член на комитета за надзор на развитието на Crates.io, вече представи работна група преди няколко дни в речта си на срещата на върха на технологиите с отворен код който има за цел да приведе Rust наравно с C в програмирането на ядрото на Linux.

В работната група, която е в процес на създаване, Разработчиците на ръжда, заедно с инженерите на Intel, ще изготвят спецификации които могат да подчертаят функционалността, която Rust трябва да внедри за програмиране в ядрото на Linux. Системното програмиране често изисква манипулации на ниско ниво, като изпълнение на привилегировани инструкции на процесора и получаване на подробна информация за състоянието на процесора.

От подобни възможности, които вече се разработват за Rust, поддържа се поддръжка за неназовани структури, обединения (съюз), вмъквания на асемблер (макросът "asm!") и формат на число с плаваща запетая BFLOAT16.

Джош вярва, че бъдещето на системното програмиране е на Rust, а езикът C в съвременните реалности твърди, че е мястото на Assembler в миналото. Rust не само облекчава разработчиците от специфични проблеми с езика C, които възникват поради работата на паметта на ниско ниво, но също така осигурява приложимост при разработването на съвременни парадигми за програмиране.

По време на обсъждането на речта на Джош беше изразена идеята да:

добавете способността за разработване на драйвери за език Rust към ядрото на Linux, което ще позволи с минимални усилия да се създадат по-добри и по-сигурни драйвери, които облекчават проблеми като достъп до паметта след освобождаването й, препращане към нулеви указатели и излизане извън границите буфера.

Грег Кроах-Хартман, отговорен за поддържането на стабилен клон на ядрото на Linux иx изрази готовност да добави Rust driver framework към ядрото, ако има някакви реални предимства пред C, например, той ще осигури безопасни обвързвания над основния API. Също така, Грег разглежда тази рамка само като опция, която не е активна по подразбиране, за да не включва Rust в броя на зависимостите на сглобката на ядрото.

Оказа се, че няколко екипа вече работят в тази посока. Например, разработчиците Fish in a Barrel подготвиха набор от инструменти за писане на зареждащи се модули за ядрото на Linux на езика Rust, използвайки набор от абстрактни слоеве върху интерфейсите и структурите на ядрото за повишаване на сигурността.

Междинните слоеве се генерират автоматично въз основа на заглавните файлове на ядрото, налични с помощта на помощната програма bindgen. Clang се използва за изграждане на междинни слоеве. Сглобените модули, в допълнение към слоевете, използват пакета staticlib.

В същото време се разработва друг проект, фокусиран върху разработването на контролери за вградени системи и устройствата на Internet of Things, които също използват bindgen за генериране на яки, базирани на заглавни файлове на ядрото.

Рамката ви позволява да подобрите сигурността на драйверите, без да правите промени в ядрото; Вместо да се създават допълнителни нива на изолация за драйвери в ядрото, се предлага да се блокират проблеми на етапа на компилация, като се използва по-сигурен език Rust.

Предполага се, че производителите на оборудване могат да разработят този подход в бързаме без подходящ одит.

Все още не е внедрена цялата планирана функционалност, но рамката вече е напълно подходяща за работата и се използва за записване на работещ драйвер за предоставения LAN9512 USB Ethernet контролер на платката Raspberry Pi 3.

Съществуващият smsc95xx драйвер беше написан като референтно изпълнение когато пишете драйвера Rust на език C.

Отбелязва се, че размерът на модула и натоварването на компонентите по време на изпълнение не са значителни при разработването на драйвер за Rust, който ви позволява да използвате рамката за устройства с ограничени ресурси.

Fuente: https://hub.packtpub.com


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   L1ch каза той

    Не мога да намеря информация за smsc95xx драйвер в източника или че нещо ще бъде внедрено в Rust на Linux.