Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WasmOS: Wasmを実行する自作Microkernel

r1ru
March 10, 2024

WasmOS: Wasmを実行する自作Microkernel

r1ru

March 10, 2024
Tweet

More Decks by r1ru

Other Decks in Programming

Transcript

  1. 6 Features Safe • 実行前に検証され、様々なチェックが入る • Sandbox環境で実行され様々なチェックが入る Validation • 型検査

    • 未定義関数呼び出しの検知 Execution • 隔離されたメモリ空間 • 範囲外参照の検知
  2. 8 Microkernel • Kernelには最小限の機能のみ実装 • それ以外の全ての”OS”の機能は Userlandで動くServerプロセスで実装 User Space Kernel

    Space Kernel Space IPC Memory Management Process Process Application Process Process Device Driver TCP/IP Message passing File System
  3. 9 Features Small and Secure • 小さいkernel • Device Driverがユーザーランドで動く

    User Space Kernel Space Kernel Space IPC Memory Management Process Process Application Process Process Device Driver TCP/IP File System Message passing
  4. 10 Features Customizable • ユーザーが自由にOSの機能を拡張可能 • 合意を取る必要がない User Space Kernel

    Space Kernel Space IPC Memory Management Process Process Application Process Process Device Driver TCP/IP File System File System Message passing
  5. 11 Features Slow • “システムコール”がプロセス間通信で実 現されるため、必然的にパフォーマンス が悪くなる User Space Kernel

    Space Kernel Space IPC Memory Management Process Process Application Process Process Device Driver TCP/IP File System Message passing
  6. 14 User Space Kernel Space Kernel Space IPC Memory Management

    Process Process TCP/IP Features Device Driver Wasmを直接実行 • Wasmからタスクを生成するシステムコールを持つ
  7. Kernel Space Kernel Space IPC Memory Management Process Process TCP/IP

    User Space 15 Features Device Driver kernel空間で実行 • Wasmはkernel空間でもある程度安全に実行可能 • Kernel空間で実行することでIPCを高速化 • 安全性を保ったままmicrokernelの短所を解決
  8. Kernel Space Kernel Space IPC Memory Management Process Process TCP/IP

    User Space 16 Features Device Driver kernel空間で実行 • Wasmはkernel空間でもある程度安全に実行可能 • Kernel空間で実行することでIPCを高速化 • 安全性を保ったままmicrokernelの短所を解決 “OS”の機能をユーザーランドで実 現するという、microkernelの考え 方に反してない?
  9. Kernel Space Kernel Space IPC Memory Management Process Process TCP/IP

    User Space 17 Features Device Driver kernel空間で実行 • Wasmはkernel空間でもある程度安全に実行可能 • Kernel空間で実行することでIPCを高速化 • 安全性を保ったままmicrokernelの短所を解決 “User空間”の再定義 Ring Protection, Paging, Wasm Hardware Software Wasm “User Space”
  10. Kernel Space Kernel Space IPC Memory Management Process Process TCP/IP

    User Space 18 Features Device Driver IPC用の関数を提供 • Message Passing用の関数をWasmに提供 • シンプルかつ汎用的なシステムインタフェース Message passing Wasm “User Space”
  11. 19 Wasm web server User Space Process Device driver Microkernel

    Kernel Space Process TCP/IP Wasm_webapi server
  12. 20 Wasm web server User Space Process Device driver Microkernel

    Kernel Space Process TCP/IP Message passing Wasm_webapi server 1. Listen on port 80
  13. 21 Wasm web server User Space Process Device driver Microkernel

    Kernel Space Process TCP/IP Wasm_webapi server 2. Access from browser
  14. 22 Wasm web server User Space Process Device driver Microkernel

    Kernel Space Process TCP/IP Wasm_webapi server 3. Receive the response
  15. 23 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Wasm_proxy server
  16. 24 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Wasm_proxy server 1. shell> echo aaa
  17. 25 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Message passing Wasm_proxy server 2. shell> echo aaa aaa
  18. 26 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Wasm_proxy server 3. Listen on port 80
  19. 27 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Wasm_proxy server 4. $ aaa Remote access
  20. 28 Wasm proxy User Space Process Shell server Microkernel Kernel

    Space Process Echo server Wasm_proxy server 5. $ aaa aaa
  21. 30 Let’s talk about modern applications Service Service Service Service

    Service • 複数のサービスをイベントで繋ぐことで一つのサービス を構築するmicroservice architecture • 分散システムを前提としたアーキテクチャ
  22. 31 Containers Node Node Let’s talk about modern applications •

    複数のサービスをイベントで繋ぐことで一つのシステ ムを構築するmicroservice architecture • 分散システムを前提としたアーキテクチャ • コンテナで配布、デプロイされるように
  23. 32 Containers Node Node Let’s talk about modern applications •

    複数のサービスをイベントで繋ぐことで一つのシステ ムを構築するmicroservice architecture • 分散システムを前提としたアーキテクチャ • コンテナで配布、デプロイされるように 新しいOSの提案、開発
  24. 33 Barrelfish Andrew Baumann, et al. “The Multikernel: A new

    OS architecture for scalable multicore systems”. https://dl.acm.org/doi/10.1145/1629575.1629579 “Your computer is already a distributed system. Why isn’t your OS?”
  25. 34 Galen C. Hunt and James R. Larus. “Singularity: Rethinking

    the Software Stack”. https://dl.acm.org/doi/10.1145/1243418.1243424 Singularity, Fuchsia https://fuchsia.dev/fuchsia-src/get-started/sdk/learn/intro/components Manifest-based Programs
  26. 35 Theseus Kevin Boos, et al. “Theseus: an Experiment in

    Operating System Structure and State Management”. https://dl.acm.org/doi/10.5555/3488766.3488767 • Rustで書かれたOS • Kernel自身が動的リンカになっている • Kernelやapplicationのモジュール(crate)をobject fileとして動的にロード, リンクする • Fault RecoveryやLive Updateを実現