V jedru bi lahko uvedli okvir v Rustu za izboljšanje gonilnikov

Zarjavelo jedro Linuxa

Josh Triplett, podjetje s sedežem v Intelu in član odbora za nadzor razvoja Crates.io, pred dnevi že predstavil delovno skupino v svojem govoru na odprtokodnem tehnološkem vrhu katerega cilj je, da se Rust pri programiranju jedra Linuxa izenači s C.

V delovni skupini, ki je v nastajanju, Razvijalci rje, skupaj z Intelovimi inženirji, bodo pripravili specifikacije ki lahko poudari funkcionalnost, ki jo mora Rust uporabiti za programiranje v jedru Linuxa. Sistemsko programiranje pogosto zahteva manipulacije na nizki ravni, kot je izvajanje privilegiranih navodil procesorja in pridobivanje podrobnih informacij o stanju procesorja.

Od podobnih zmogljivosti, ki se že razvijajo za Rust, podprta je neimenovana struktura, sindikati (unija), vstavki sestavljavca (makro "asm!") in format številke s plavajočo vejico BFLOAT16.

Josh verjame, da je prihodnost sistemskega programiranja Rust, jezik C v sodobni realnosti pa trdi, da je mesto Assemblerja v preteklosti. Rust razvijalcev ne razbremeni le določenih jezikovnih težav, ki nastanejo zaradi nizko nivojskega dela s pomnilnikom, temveč tudi uporabnost pri razvoju sodobnih programskih paradigem.

Med razpravo o Joshovem govoru je bila izražena ideja:

v jedro Linuxa dodati zmožnost razvijanja gonilnikov v jeziku Rust, kar bi z minimalnim naporom omogočilo ustvarjanje boljših in varnejših gonilnikov, ki bi olajšali težave, kot so dostop do območja pomnilnika po njegovem sprostitvi, sklicevanje na ničelne kazalce in izhod izven meja odbojnika.

Greg Kroah-Hartman, odgovoren za vzdrževanje stabilne veje jedra Linuxa inx izrazil pripravljenost dodati jedro ogrodja Rust, če ima resnične prednosti pred C, na primer, zagotovil bo varne vezave nad jedrom API. Greg tudi meni, da je ta okvir samo privzeto neaktiven, da Rust ne bo vključen v število odvisnosti jedra sklopa.

Izkazalo se je, da v tej smeri že deluje več ekip. Na primer, razvijalci Fish in a Barrel so pripravili komplet orodij za pisanje naložljivih modulov za jedro Linuxa v jeziku Rust z uporabo nabora abstraktnih plasti na vrhu vmesnikov in struktur jedra za povečanje varnosti.

Vmesni sloji se samodejno generirajo na podlagi datotek glave jedra, ki so na voljo s pripomočkom bindgen. Clang se uporablja za gradnjo vmesnih slojev. Sestavljeni moduli poleg plasti uporabljajo tudi paket staticlib.

Hkrati se razvija še en projekt, ki se osredotoča na razvoj krmilnikov za vgrajene sisteme in naprave Internet of Things, ki prav tako uporabljajo bindgen za ustvarjanje ovratnikov na podlagi datotek z glavami jedra.

Okvir vam omogoča izboljšanje varnosti gonilnikov, ne da bi spreminjali jedro; Namesto ustvarjanja dodatnih stopenj izolacije za gonilnike v jedru je predlagano, da težave v fazi prevajanja blokiramo z varnejšim jezikom Rust.

Proizvajalci opreme naj bi ta pristop lahko hitro razvili brez ustrezne revizije.

Še ni bila uvedena vsa načrtovana funkcionalnost, vendar je ogrodje že povsem primerno za to delo in se uporablja za zapis delovnega gonilnika za priloženi LAN9512 USB Ethernet krmilnik na ploščo Raspberry Pi 3.

Obstoječi gonilnik smsc95xx je bil napisan kot referenčna izvedba pri pisanju gonilnika Rust v jeziku C.

Opozoriti je treba, da velikost modula in režijski stroški komponent med izvajanjem niso pomembni pri razvoju gonilnika za Rust, ki vam omogoča uporabo ogrodja za naprave z omejenimi viri.

vir: https://hub.packtpub.com


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   L1ch je dejal

    V izvoru ne najdem informacij o gonilniku smsc95xx ali o tem, da se bo nekaj izvajalo v Rustu na Linuxu.