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.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Wenn wir Treiber in WebAssembly schreiben, um Kontextwechsel zu vermeiden, die langsam...
Ich werde es mir auch noch genauer ansehen, allerdings befürchte ich das mehr möglich ist...
Genial
Das war ein Betriebssystem, bei dem Kernel und Userland im Ring 0 laufen, allerdings der...