Linuxカーネル内にWebAssemblyランタイムを実装し、ネイティブバイナリよりも高速に実行可能にする「Kernel-WASM」登場

2023年1月25日

代表的なWebAssemblyランタイムの1つであるWasmerを開発しているWasmer社は、Linuxカーネル内にWebAssemblyランタイムを実装することで、安全かつ通常のLinuxバイナリよりも高速にWebAssemblyバイナリを実行可能にするオープンソースソフトウェア「Kernel-WASM」を公開しています。

fig

Linuxカーネル内のWASMランタイムは第二のOS

同社はLinuxカーネル内にWebAssemblyランタイムを実装する理由として、性能と柔軟性が得られるとしています。

性能面では、WebAssemblyランタイムとはそもそも保護された仮想マシン内で命令セットを実行するものであるため、仮想マシンであるWebAssemblyランタイムをOS上のユーザー空間内で実装するよりも、カーネル内でランタイムを実装する方が、システムコール時のコンテキストスイッチやメモリ内容のコピーといったオーバーヘッドをなくせるとしています。

また、カーネル内での実装によって低レイヤでの制御ができることで、仮想メモリのような操作やパケットフィルタリングのようなカーネルでのイベント処理など、ユーザー空間で実行されるソフトウェアでは困難かもしくは処理が重くなってしまうような機能も高速に実行可能なソフトウェアが実現できるとしています。

これはある意味でLinuxの中に、WebAssemblyバイナリを実行対象とし、(Linuxのシステムコールを抽象化する)WASIをシステムコールとする第二のOSを埋め込むように見えます。

Wasmer社がKernel-WASMの前身として実装したCervusに関するブログ「Running WebAssembly on the Kernel」でも、Linuxカーネル内に実装されたWebAssemblyランタイムは「The Second OS」だと位置づけています。

LinuxにWebAssembyランタイムが組み込まれて、簡単にLinux上でWebAssemblyアプリケーションを実行できるようになれば、なかなか面白そうです。そしてそれがWindowsやmacOSなどほかのOSにも広がると想像すると、さらに面白いことになるのではないでしょうか。

WASIの実行は進行中、セキュリティもさらに強化

ただしKernel-WASMはまだ開発中で、WASIの実装は進行中。Linuxカーネルイベントのepollのサポートによる非同期ネットワーキングに対応、ソフトウェア障害を分離する完全なサンドボックスによる実行環境などは実装されており、ネイティブバイナリを上回る高速化、WebAssembly内でのeBPFの実装などはこれから実現とのことです。

またLinuxカーネル内でコードを実行することは非常に危険であるため、現時点でスタックオーバーフローのチェックやメモリ境界のチェックなどのセキュリティ確保のための仕組みはあるものの、今後さらにセキュリティ面の強化もしていくとしています。

このエントリーをはてなブックマークに追加
follow us in feedly


関連タグ Linux / OS / WebAssembly



タグクラウド(β版)

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本