Slide 1

Slide 1 text

Wasmを実行する自作 Microkernel 1 情報科学若手の会春の陣2024 WasmOS

Slide 2

Slide 2 text

3 WasmOS in SecHack365 Wasmを実行する自作Microkernel !!

Slide 3

Slide 3 text

4 WebAssembly (Wasm) • 仮想CPUの命令セット及びバイナリフォーマットの仕様 • 元々はブラウザ上で安全にコードを実行するための技術 • WASI (WebAssembly System Interface)の登場でブラウ ザの外でも動かせるようになった

Slide 4

Slide 4 text

5 Features C, Rust, Go Language-independent • 様々な言語からコンパイルすることが可能

Slide 5

Slide 5 text

6 Features Safe • 実行前に検証され、様々なチェックが入る • Sandbox環境で実行され様々なチェックが入る Validation • 型検査 • 未定義関数呼び出しの検知 Execution • 隔離されたメモリ空間 • 範囲外参照の検知

Slide 6

Slide 6 text

7 Features Portable Runtime Runtime Runtime • Wasm Runtimeがそれぞれの環境に翻訳して実行 • 異なる環境で同じバイナリを使うことができる

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

12 idea Wasm x Microkernel

Slide 12

Slide 12 text

13 WasmOS in SecHack365 Wasmを実行する自作Microkernel !!

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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の考え 方に反してない?

Slide 16

Slide 16 text

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”

Slide 17

Slide 17 text

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”

Slide 18

Slide 18 text

19 Wasm web server User Space Process Device driver Microkernel Kernel Space Process TCP/IP Wasm_webapi server

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

22 Wasm web server User Space Process Device driver Microkernel Kernel Space Process TCP/IP Wasm_webapi server 3. Receive the response

Slide 22

Slide 22 text

23 Wasm proxy User Space Process Shell server Microkernel Kernel Space Process Echo server Wasm_proxy server

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

28 Wasm proxy User Space Process Shell server Microkernel Kernel Space Process Echo server Wasm_proxy server 5. $ aaa aaa

Slide 28

Slide 28 text

29 What is modern operating systems? Motivation

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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?”

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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を実現

Slide 35

Slide 35 text

WasmOS Rethinking Operating Systems 36 https://github.com/r1ru/WasmOS Let`s create a new OS !!

Slide 36

Slide 36 text

WasmOS Rethinking Operating Systems 37 https://github.com/r1ru/WasmOS Let`s create a new OS !! Thanks!