Et rammeverk i Rust kan implementeres i kjernen for å forbedre driverne

Rust Linux-kjernen

Josh Triplett, et Intel-basert selskap og medlem av Crates.io utviklingskontrollkomité, presenterte allerede en arbeidsgruppe for noen dager siden i sin tale på Open Source Technology Summit som har som mål å bringe Rust på nivå med C i Linux-kjerneprogrammering.

I arbeidsgruppen, som er i ferd med å bli opprettet, Rustutviklere vil sammen med Intel-ingeniører utarbeide spesifikasjoner som kan markere funksjonaliteten som Rust trenger å implementere for programmering i Linux-kjernen. Systemprogrammering krever ofte manipulasjoner på lavt nivå, for eksempel å utføre privilegerte prosessorinstruksjoner og få detaljert informasjon om prosessorstatus.

Av lignende funksjoner som allerede er utviklet for Rust, støtte for ikke navngitte strukturer støttes, fagforeninger (union), montørinnsatser ("asm!" -makroen) og BFLOAT16-tallformatet for flytende punkt.

Josh mener at fremtiden for systemprogrammering ligger hos Rust, og C-språket i moderne realiteter hevder å være Assemblers sted tidligere. Rust avlaster ikke bare utviklere av spesifikke C-språkproblemer som oppstår på grunn av lavt nivåarbeid med minne, men gir også brukbarhet i utviklingen av moderne programmeringsparadigmer.

Under diskusjonen av Joshs tale ble ideen uttrykt for:

legge til muligheten til å utvikle rustkspråklige drivere til Linux-kjernen, noe som med minimal innsats kan skape bedre og sikrere drivere som lindrer problemer som å få tilgang til minneområdet etter å ha frigjort det, referere til nullpekere og gå ut mer enn grensene av bufferen.

Greg Kroah-Hartman, ansvarlig for å opprettholde en stabil gren av Linux-kjernen, ogx uttrykte vilje til å legge til et Rust driver-rammeverk til kjernen hvis den har noen reelle fordeler over C, for eksempel vil det gi trygge bindinger over kjernen API. Greg anser dette rammeverket bare som et alternativ som ikke er aktivt som standard, for ikke å inkludere Rust i antall kjernemonteringsavhengigheter.

Det viste seg at flere lag allerede jobber i denne retningen. For eksempel forberedte utviklere av Fish in a Barrel et verktøysett for å skrive lastbare moduler for Linux-kjernen på Rust-språket, ved hjelp av et sett med abstrakte lag på toppen av kjernegrensesnitt og strukturer for å øke sikkerheten.

Mellomlag genereres automatisk basert på kjernens headerfiler som er tilgjengelige ved hjelp av bindgen-verktøyet. Clang brukes til å bygge mellomlag. Monterte moduler, i tillegg til lag, bruker staticlib-pakken.

Samtidig utvikles et nytt prosjekt med fokus på utvikling av kontrollere for innebygde systemer og Internet of Things-enheter, som også bruker bindgen til å generere krager basert på kjernehodefiler.

Rammeverket lar deg forbedre sjåførens sikkerhet uten å gjøre endringer i kjernen; I stedet for å opprette ekstra isolasjonsnivåer for drivere i kjernen, foreslås det å blokkere problemer på kompileringsstadiet med et sikrere Rust-språk.

Det antas at utstyrsprodusenter kan utvikle denne tilnærmingen i en hast uten ordentlig revisjon.

Ikke alle planlagte funksjoner er implementert ennå, men rammeverket er allerede ganske egnet for jobben og brukes til å skrive en arbeidsdriver for den medfølgende LAN9512 USB Ethernet-kontrolleren på Raspberry Pi 3-kortet.

Eksisterende smsc95xx driver ble skrevet som en referanseimplementering når du skriver Rust-driveren på C-språk.

Det bemerkes at modulstørrelsen og overhead for kjøretidskomponentene ikke har betydning når du utvikler en driver for Rust, som lar deg bruke rammeverket for enheter med begrensede ressurser.

Fuente: https://hub.packtpub.com


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   L1ch sa

    Jeg finner ikke informasjon for en smsc95xx-driver i kilden, eller at noe skal implementeres i Rust på Linux.