Wasmjit führt Webassembly-Module in Ring 0 aus

Wasmjit soll als Modul für den Linux-Kernel zum Einsatz kommen und als Runtime mit Emscripten generierte Webassembly-Module ausführen.

Der Kern der Runtime sei in C geschrieben (nach dem ISO-Standard C90) und daher leicht auf andere Umgebungen zu portieren. Die ausgeführten Webassembly-Module laufen in Ring 0, was den Zugriff auf System Calls über normale Funktionsaufrufe ermögliche.

Die Entwickler sehen die Vorzüge dieser Konstellation darin, dass sie Kontext-Switches zwischen User- und Kernelspace vermeidet, aber auch Mehraufwand beim Page-Table-Austausch. Webserver oder Fuse-basierte Dateisysteme, die Systemaufrufe einsetzen, würden so deutlich performanter laufen, vor allem in einem Post-Spectre/Meltdown-Szenario, der den Page Table Isolation Overhead mit einbezieht.

Einen Wermutstropfen gibt es auch: Aktuell verwende die Software “vmalloc()”, was zwar Page-Auslagerungen auf die Festplatte vermeide, aber Systeme auch anfällig für DoS-Angriffe mache. Eine Speichernutzungsbegrenzung für “/dev/wasm” soll das künftig verhindern.

Läuft auch im Userspace

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 CC und Make ein Emscripten SDK sowie, unter Linux, die passenden Kernel-Header. Mehr Infos und Anleitungen liefert eine Übersicht auf Github.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Comments
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben