Original-URL des Artikels: https://www.golem.de/news/wasmjit-webassembly-laufzeit-entsteht-als-linux-kernel-modul-1809-136814.html    Veröffentlicht: 27.09.2018 10:04    Kurz-URL: https://glm.io/136814

Wasmjit

Webassembly-Laufzeit entsteht als Linux-Kernel-Modul

Das Projekt Wasmjit soll als Modul im Linux-Kernel zum Einsatz kommen und dort als Laufzeitumgebung Webassembly ausführen. Der Code ist in C geschrieben, soll gut portierbar sein und Webassembly aus dem Browser herausholen.

Das Webassembly-Projekt (Wasm) soll eigentlich einen einheitlichen Bytecode für das Web erstellen, der dann schnell und sicher in Browsern ausgeführt werden kann. Das Projekt Wasmjit will die Nutzung von Webassembly allerdings aus dem Browser herausholen und im Ring O, also im Kernel, umsetzen. Der Kern der Laufzeit ist in C geschrieben (nach dem ISO-Standard C90) und soll daher leicht auf andere Umgebungen portiert werden können. Die gewünschten Kernel-Module sollen mit dem Werkzeug Emscripten in Wasm kompiliert werden.

Da die ausgeführten Webassembly-Module im Ring 0 laufen, ermögliche das den Zugriff auf Systemaufrufe über normale Funktionsaufrufe. Die Entwickler sehen die Vorzüge dieser Konstellation darin, dass Kontextwechsel zwischen User- und Kernelspace damit vermieden werden können, ebenso wie der Mehraufwand beim Tausch der Seitentabellen. Webserver oder Fuse-basierte Dateisysteme, die Systemaufrufe einsetzen, seien so deutlich leistungsfähiger, vor allem in einem Post-Spectre/Meltdown-Szenario, das den Mehraufwand der neuen Verwaltung der Seitentabellen miteinbezieht, die sogenannte Page-Table-Isolation (PTI).

Derzeit verwende die Software bei der Nutzung mit dem Linux-Kernel jedoch noch vmalloc(), was zwar Seitenauslagerungen auf die Festplatte vermeide, aber Systeme auch anfällig für lokale DoS-Angriffe mache. Eine Speichernutzungsbegrenzung für das virtuelle Gerät /dev/wasm soll das künftig jedoch verhindern.

Auf POSIX-Systemen lasse sich Wasmjit zudem im Userspace ausführen, um Webassembly-Module zu nutzen, ohne den kompletten Browser betreiben zu müssen. Die Software steht unter der MIT-Lizenz und läuft aktuell auf POSIX-konformen x86_64-Systemen wie Linux, OS X und BSD. Wer die Software in ihrem frühen Stadium einsetzen möchte, braucht neben einem C-Compiler und Make ein Emscripten SDK sowie, unter Linux, die passenden Kernel-Header. Mehr Infos und Anleitungen liefert eine Übersicht auf Github.  (kki)


Verwandte Artikel:
Mozilla: Firefox beschleunigt Webassembly-Aufrufe über Javascript   
(06.07.2018, https://glm.io/135353 )
C++-Framework: Qt arbeitet an Webassembly-Support   
(24.04.2018, https://glm.io/134027 )
Namespace: Linux-Kernel soll Zeit containerisieren   
(24.09.2018, https://glm.io/136737 )
Kernel: Linux-Patches für AMDs Raven2 und Picasso veröffentlicht   
(20.09.2018, https://glm.io/136666 )
Google: Chrome OS verteilt Linux-App-Unterstützung   
(19.09.2018, https://glm.io/136642 )

© 1997–2019 Golem.de, https://www.golem.de/