Rámec v Rustu by mohl být implementován do jádra, aby se zlepšily ovladače

Rezané jádro Linuxu

Josh Triplett, společnost se sídlem v Intel a člen výboru pro dohled nad vývojem Crates.io, již představil pracovní skupinu před několika dny ve svém projevu na Open Source Technology Summit jehož cílem je přiblížit Rusta na stejné úrovni jako C v programování jádra Linuxu.

V pracovní skupině, která se právě vytváří, Vývojáři společnosti Rust společně s inženýry společnosti Intel připraví specifikace které mohou zvýraznit funkčnost, kterou musí Rust implementovat pro programování v linuxovém jádře. Programování systému často vyžaduje manipulace na nízké úrovni, jako je provádění privilegovaných instrukcí procesoru a získání podrobných informací o stavu procesoru.

Z podobných schopností, které již byly vyvinuty pro Rust, podpora pro nepojmenované struktury je podporována, odbory (sjednocení), vložky assembleru (makro „asm!“) a formát čísla s plovoucí desetinnou čárkou BFLOAT16.

Josh věří, že budoucnost systémového programování leží na Rustovi a jazyk C v moderních realitách tvrdí, že je Assemblerovým místem v minulosti. Rust nejen zbavuje vývojáře konkrétních problémů jazyka C, které vznikají v důsledku práce s pamětí na nízké úrovni, ale také poskytuje použitelnost při vývoji moderních programovacích paradigmat.

Během diskuse o Joshově řeči byla vyjádřena myšlenka:

přidat do jádra Linuxu schopnost vyvíjet ovladače v jazyce Rust, což by s minimálním úsilím umožnilo vytvořit lepší a bezpečnější ovladače, které zmírní problémy, jako je přístup do oblasti paměti po jejím uvolnění, odkazování na nulové ukazatele a ukončení více za limity vyrovnávací paměti.

Greg Kroah-Hartman, odpovědný za udržování stabilní větve jádra Linuxu ax vyjádřil ochotu přidat rámec jádra Rust do jádra, pokud má oproti C nějaké skutečné výhody, například poskytne bezpečné vazby přes základní API. Také Greg považuje tento rámec pouze za možnost, která není ve výchozím nastavení aktivní, aby nezahrnul Rust do počtu závislostí sestavy jádra.

Ukázalo se, že v tomto směru již pracuje několik týmů. Například vývojáři Fish in a Barrel připravili sadu nástrojů pro psaní zaváděcích modulů pro linuxové jádro v jazyce Rust, pomocí sady abstraktních vrstev na rozhraní a strukturách jádra ke zvýšení zabezpečení.

Mezivrstvy se automaticky generují na základě souborů záhlaví jádra dostupných pomocí obslužného programu bindgen. Clang se používá k vytváření mezivrstev. Sestavené moduly kromě vrstev používají balíček staticlib.

Současně se vyvíjí další projekt zaměřený na vývoj řadičů pro vestavěné systémy a zařízení internetu věcí, která také pomocí bindgen generuje obojky na základě souborů záhlaví jádra.

Rámec umožňuje zlepšit zabezpečení ovladačů bez provedení změn v jádře; Místo vytváření dalších úrovní izolace pro ovladače v jádře se navrhuje blokovat problémy ve fázi kompilace pomocí bezpečnějšího jazyka Rust.

Výrobci zařízení by měli být schopni vyvinout tento přístup ve spěchu bez řádného auditu.

Dosud nebyly implementovány všechny plánované funkce, ale framework je pro tuto práci už docela vhodný a používá se k napsání funkčního ovladače pro dodaný řadič USB LAN9512 USB Ethernet na desku Raspberry Pi 3.

Byl napsán existující ovladač smsc95xx jako referenční implementace při psaní ovladače Rust v jazyce C.

Je třeba poznamenat, že velikost modulu a režie runtime komponenty nejsou významné při vývoji ovladače pro Rust, který umožňuje používat rozhraní pro zařízení s omezenými prostředky.

zdroj: https://hub.packtpub.com


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   L1ch řekl

    Nemohu najít informace o ovladači smsc95xx ve zdroji nebo o tom, že něco bude implementováno v Rustu na Linuxu.