89
1 仮想化な、 まああてにすな ひどすぎる乱立 組込みとVM実現技術の本質 たけおか@AXE 2010/MAY/12 2009/AUG/28

仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

1

仮想化な、まああてにすなひどすぎる乱立

組込みとVM実現技術の本質

たけおか@AXE2010/MAY/12

2009/AUG/28

Page 2: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

2

AXEって誰だ?

Page 3: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

3

(株)アックスの基本ソフトの採用実績UNIX,Linux系

•クラスタLinux雷神

•axLinux組込みLinux–家電、デジタルTV–ネットワーク機器–携帯機器–ロボット–航空防衛

•スケジューラを強化

•組込みBSD–ネットワーク機器

Page 4: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

4

(株)アックスの基本ソフトの採用実績

RTOS• XTAL

– ザウルス

– オリンパスデジカメ

• 絹;Posix1003.13 RTOS

• AUTOSAR

• JasParへの参加

• 実時間Linux

Page 5: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

5

アックスの国産CPUメーカとの協業

富士通富士通 FR/VFR/VルネサスエレクトロニクスルネサスエレクトロニクスSH-Mobile,SH2ASH-Mobile,SH2A

東芝東芝MePMeP

東芝東芝CELLCELL

セイコーエプソンセイコーエプソンC33/C17C33/C17

シャープシャープLH795xxLH795xx

サンヨーサンヨーLC690132LC690132

ルネサスルネサスエレクトロニクスエレクトロニクス

V850V850

Page 6: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

6

アックスは組込み仮想化を4年間に

渡り開発している• Linux と POSIX RTOS

• Linux と AUTOSAR

どちらも、実時間性を実現

最悪時間を、決定的に保証

リアルタイム通信も実現

Page 7: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

7

ABCD

• Intel ATOM用のブートローダ開発のサポート

– ブートローダ+OSの、トータルなサポートを提供します

• PC BIOS無しで、QNX, Linux, POSIX RTOS,AUTOSARなどが動作

• カスタマイズしたブートローダを供給します

• axLinux, 絹, AXE-AUTOSARなどと相性抜群

Page 8: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

8

蛍• 組込みCPUで仮想機械を実現する

• 世界に先駆けた組込み用ハイパバイザ

• 実時間性をもつ仮想機械を実現したハイパバイザ

• 1つのCPU上に複数の独立した仮想機械を実現

• 各仮想機械では、同時に個別に全く異なるOSを起動

• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなどと、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立

した仮想機械で実行

• アックス独自のスケジューリング技術で、最悪値を保証した仮想機械のスケジューリングを行う– ディフィニット・スケジューラで、時間スロットを必ず一定期間ごとに割り当てる

• 高度化する車載機器、高機能通信機器、高機能FA制御機器、ネッ

ト・オーディオなどに最適

• サポートCPU

– IA32, x86, MIPS, ARM(開発中), V850系(将来)

Page 9: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

9

蛍• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなど

と、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立

した仮想機械で実行

• 仮想機械の実績

– Linux + AUTOSAR

– Linux + 絹 (POSIX API RTOS)

– NetBSD + NetBSD

– MIPS, V850系, x86,ARM

Page 10: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

10

組込み仮想化が必要とされる

背景

Page 11: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

11

組込み仮想化の必要性 1

• 家電セット・メーカが仮想化を必要とする動機(1)製品力強化のための機能複合

(2)過去データフォーマットの救済と継承

(3)お客様ごとのアプリケーション変更

(4)白物含めたネットワーク整備

(5)監視プロセスによる信頼性向上

(6)ハードウェア進化に対応したスケーラビリティ担保

(7)ネットワーク経由・端末内で実装されるそれぞれの機能境界の自由な変更

– 仮想化により、過去のソフトウェアをある仮想機械で動かし、別な仮想機械で新しいOSとソフトウェアを動かす。

同時にひとつの同じハードウェア上で。

– ソフトウェア移行の一時のコストを下げられる

Page 12: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

12

家電セット・メーカの動機

ハードウェア(実機械)

ハイパバイザ

仮想機械

古いLinux(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

新しいLinux(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

既存安定している

新しいが不安が残る

Page 13: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

13

組込み仮想化の必要性 2

• オートモーティブ分野での動機

• 高信頼

– あるソフトウェアの問題で、すべてが停止しない

• 仮想機械間の絶縁により、悪い影響が他の機械に及ばない

– 多重化

• 一つの物理ハードウェアに、多くの仮想機械で多重化

• ソフトウェアのバグに強い– 数種類の異なった実装を動かせば安心(安全性が高まる)

– 高信頼を低コストで実現可能

Page 14: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

14

オートモーティブ

ハードウェア(実機械)

ハイパバイザ

仮想機械

RTOS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

RTOS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

Linux(スーパバイザ)

情報系アプリケーション

(

ユーザ・タスク)

情報系アプリケーション

(

ユーザ・タスク)

仮想機械

RTOS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

Page 15: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

15

組込み仮想化の必要性 3

• GPLなソフトウェアからの絶縁

– GPLライセンスのソフトウェアとプロプライエタリなソフト

ウェアを別々の仮想機械に入れて、絶縁する

• 単純で絶対に安全

– 徐々に、GPL側から、プロプライエタリなソフトウェアに

書き換えて移行が可能

Page 16: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

16

GPLとの絶縁

ハードウェア(実機械)

ハイパバイザ

仮想機械

Linux(スーパバイザ)

GP

L

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

商用OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

Page 17: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

17

仮想化技術乱立中

Page 18: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

18

有名な仮想化ソフトウェア

• Xen (Citrix)

• KVM

• VirtualBox (Sun)

• VMWare (VMWare (EMC))

• HyperV (Microsoft)

• Virtual PC (Microsoft)

• Parallels (Parallels)

Page 19: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

19

組込みに適用できる要件(最低限)

• マルチプラットフォーム– ホストOS、ゲストOS、CPU

– Windowsが動く必要なんか無い(?)

• ソースコードが供給される– オープンソースであれば、いじり易い(現状)

– 信頼性、品質の向上を独自におこなえる

• エンタープライズ・サーバと事情は近い– OS: Linux, UNIX(AIX, Solaris, HP-UX), 独自OS

– CPU: PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)

Page 20: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

20

組込みに適用できる

• LinuxとμiTRONが同時に動くのか???

– 可能です

• LinuxとAUTOSARも同時に動く

• Linuxと絹(Posix 1003.13 RTOS)も同時に動く

Page 21: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

21

仮想化とは?

Page 22: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

22

VM 対 VM !? 誤解無きよう

• OSのVMは、仮想マシン・インタープリタではない– 次の2つのVMはまったく別物

• 「仮想化技術(VM)」 はSystem Virtual Machine• Java仮想マシン(JavaVM)はProcess Virtual Machine

– なんでも「仮想マシン」とも「仮想機械」ともいう悪い風潮• 英語でも両者とも「Virtual Machine」

– UCSD-P Systemが悪いのです(多分)• 仮想マシン・インタープリタは「Pseudo Machine」とでもしてくれれば良かったのですが…

Page 23: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

23

仮想機械技術の分類

• 仮想機械技術の分類• Virtual Machines: Versatile Platforms for Systems and Processes英語版Wikipedia, Ravi Nair

(著) ISBN-10: 1558609105による。

• 英語版Wikipediaでも同様の分類 http://en.wikipedia.org/wiki/Virtual_machine

– System Virtual Machine

• type 1: ハードウェア上でじかにハイパバイザ(仮想マシン・モニタ)が動作する

• type 2: OSが存在し、そのもとでハイパバイザが動作。例えばWindows用のVMWareなど

– Process Virtual Machine

• アプリケーションとして動作するソフトウェアのインタープリタのこと。JavaVMなど。組込みで特に問題は無い

• 組込みでは、SystemVMとくにtype1が求められて

いる

Page 24: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

24

仮想マシン・インタープリタではない

ハードウェア(実機械)

ハイパバイザ

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

ハードウェア(実機械)

仮想マシン・インタープリタ

仮想機械

仮想マシン・インタープリタ(アプリケーションの一種)

ユーザ・タスク

バイトコード

(

ただのデータ列)

バイトコード

(

ただのデータ列)

バイトコード

(

ただのデータ列)

Page 25: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

25

VMの年表もどき• 1966

– System/360

– CP-40(ハイパバイザ), CMS(ゲストOS)

– System/360 model40 上で 14個の仮想機械

• 1972

– System/370-VS (仮想記憶システム)

– VM/370 (ハイパバイザなど)

• 1982

– 68010発表: 仮想機械と仮想記憶をサポートしたアーキテクチャ

• 2003

– Xen

– ケンブリッジ大学Computer Laboratory

Page 26: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

26

VMとは(1)

ハードウェア(実機械)

ハイパバイザ

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

Page 27: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

27

VMとは(2)

• 機械語命令は,そのまま実計算機で実行される

• しかし、機械が複数ある(ように見える)

• 完全なメモリの分離– それだけなら、マルチタスクOSでも可能

– それ以外にも…

Page 28: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

28

VMとは(3)• マルチタスクとどう違うのか?

• OSが仮想機械ごとに動く– マルチタスクはOSは一つ

– VMでは、仮想機械ごとにOSが必要(またはOSレス?)

• IOが独立– マルチタスクOSは、IOはシステム全体で共用

– VMでは、仮想化された独立IOが与えられる

• 仮想機械で実行されていることに気づかない– アプリケーションもOSも

• 仮想機械ごとに完全に独立、不干渉– 安全。バグの影響が伝播しない

– セキュリティ上も

Page 29: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

29

マルチタスクとどう違うのか?

ハードウェア(実機械)

ハイパバイザ

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

OS(スーパバイザ)

アプリケーション

(ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

ハードウェア(実機械)

マルチタスク仮想機械

Page 30: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

30

VMの簡単な構造• ハイパバイザ(仮想機械モニタ)が居る

– 実計算機の資源の管理を行う

• 仮想機械– 仮想機械を「ゲスト機械(マシン)」と呼ぶことはない

• 豆知識:「ゲスト・マシン」というのは、「ユニバーサル・ホスト」と

いう概念の計算機アーキテクチャで実現されるハードウェア計算機のことをいう言葉

• 仮想機械内で動作するOSを「ゲストOS」と呼んだり

• 「ホストOS」は、実計算機の実資源を駆動する

– ハイパバイザとの関係は後述

Page 31: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

31

VMとは(4)ハイパバイザの存在に気づかない(1)

• 仮想機械で実行されていることに気づかない– アプリケーションもOSも

– 仮想化管理ソフトウェアが存在するのに

– ハードウェア的にも…

• 仮想機械管理ソフトウェア– ハイパバイザ Hypervisor

• OSはスーパバイザ Supervisor

– IBM System370では「CP」

Page 32: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

32

ハイパバイザ用のレジスタが実機械にあったとしても、仮想機械は気がつかない

• ハイパバイザ用レジスタは、OS(特権レベル動作)にもアプリケーション(ユーザ権限動作)

にも見えない

– 空間が違って、アクセスできない

– 特殊なレジスタ・アクセス命令になっていて命令を発行できない

• ハイパバイザ特権命令とか

• あまつさえ、通常のステータス・レジスタさえ、ユーザ権限からはアクセスできなくする– IBM/360,370, 68010

Page 33: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

33

VMとは(6)ハイパバイザの存在に気づかない(3)

• ハイパバイザ用のレジスタが実機械にあったとしても、仮想機械は気がつかない

– 実機械の定義が重要

– ハイパバイザは、実機械のハイパバイザ・レジスタを見る、実は。

• 実機械って仮想機械と別物になってるじゃん!?

Page 34: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

34

VMとは(7)ハイパバイザの存在に気づかない(4)

• 歴史的には、ハイパバイザ用の特殊な機能は無しに、仮想化を行っていた

• 実機械と仮想機械は、完全に同じレジスタセット(ハードウェア機能)を持っていた

• IBM S/360, S/370では

– ハイパバイザだけが、巧妙にスーパバイザ・モードで走行し、

– 仮想機械のスーパバイザは、だまされて走行していた

– CPUステータス・レジスタを読み書きしようとすると、特

権例外が発生し、スーパバイザに制御が移る

• その後、ハイパバイザがよきに計らって、制御をOS

などに戻す

Page 35: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

35

ハイパバイザ(仮想機械モニタ)

のお仕事

Page 36: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

36

VMとは

• OSが仮想機械ごとに動く

– VMでは、仮想機械ごとにOSが必要(またはOSレス?)

• IOが独立

– マルチタスクOSは、IOはシステム全体で共用

– VMでは、仮想化された独立IOが与えられる

• 仮想機械で実行されていることに気づかない– アプリケーションもOSも

Page 37: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

37

ハイパバイザのお仕事

• 資源管理

• VM間通信

• IOシミュレート

Page 38: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

38

資源管理• 資源とは?

– 計算機一般の資源と同じ、ではあるが…

• 資源– メモリ

– CPU時間

– IO• HDD

• プリンタ

• 端末

• ネットワーク

• その他

– システム・レジスタ• スーパバイザが管理すべき特殊レジスタ(アクセスに特権が必要)

Page 39: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

39

資源管理メモリ(1)• 実計算機の実メモリを割り当てる

• 仮想空間も重要な資源– ページテーブル (仮想記憶用のアドレス変換テーブル)

– ページテーブルは有限• 機械ごとにページテーブルを持つことも可能だが…

• ページテーブルはかなり大きい– ページテーブルを仮想空間に置く事は可能だが、OS,ハイパバイザが

かなり複雑になる

– システムに一つの大きなページテーブルを持つ

• シャドー・ページテーブル

豆知識:マイクロ・カーネル Machも、仮想空間を資源とし

て管理してました

Page 40: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

40

資源管理メモリ(2)• 仮想空間も重要な資源

– ハイパバイザが隠したページテーブルを持つ

• シャドー・ページテーブル

– 仮想機械のゲストOSが、MMUのページテーブルに値

をセットするとき、トラップが発生してハイパバイザに制御が移る

• ハイパバイザは、実機械のメモリ番地を、MMUのページテーブルにセットする。そ

の後、正常復帰。

• MMUのページテーブルを読み出すときも同様にハイパバイザが介入し、実機械

のアドレスではなく、仮想機械内のアドレスが読み出せたように振舞う

• 通常、MMUアクセスは、特権命令や特権IOになっている

• 近代的なTLBしか無い機械では、TLBにセットする値を調整するだけ。より簡単。

– TLBミスによりハイパバイザを起動すると、オーバヘッドが少なくできたり

Page 41: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

41

メモリ管理模式図

• ハイパバイザが、だまして、実ハードウェア上のアドレスを指させる

• ゲストOSのMMUハードウェアのページテーブルや、TLB

へのアクセス時

– 値のセット時

– 値の参照時

に、ハイパバイザが介入する

仮想機械を生成するときに,

割り当ててもらった実メモリ。

ハードウェアのMMU(最近のRISCではTLBのみ)

仮想機械はここを指しているつもり

仮想機械

実機械の実メモリマップ仮想機械の実メモリマップ

ここに実メモリがマップされて欲しい

仮想機械の仮想空間シャドーページテーブルハイパバイザが管理する、ページテーブル(各VMの仮想

記憶アドレスを実機械の実アドレスに変換するテーブル)

ゲストOSが管理す

る、ページテーブル(仮想記憶のア

ドレス変換テーブル)

ゲストOS

1) ゲストOSがMMU(TLB)に、アド

レスをセットしようとする

ハイパバイザ

2)シャドーページ・テーブル

から実機械アドレスを取り出しMMU(TLB)にセット

Page 42: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

42

資源管理メモリ(3)• 仮想機械同士が干渉しないようにする

• 仮想機械間で情報が漏れないようにする

– 仮想機械は完全に独立

– 他の仮想機械のメモリを読み書きできてはいけない

• ページテーブル管理で実現

– 無関係な機械のメモリ・ページは絶対に、仮想機械の論理空間にマップさせない

Page 43: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

43

資源管理メモリ(4)• 仮想計算機の肝はページテーブル管理

– 仮想機械のアイソレーションは、メモリを読み書きさせない

– 無関係な機械のメモリ・ページは絶対に、仮想機械の論理空間にマップさせない

– 仮想記憶のための「アドレス変換機構」を使用して、ページ単位でアクセスを制御

– 仮想記憶用のページ・テーブルや、TLB(アドレス変換バッファ)へセットする値を、ハイパバイザが制御する

Page 44: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

44

資源管理 CPU時間• CPU時間が適切に割り当たるようにする

– 無限封鎖がない

– 公平がいいとは限らない• そもそも「公平」とは???

• 組み込みは実時間性が必要 (いつもか?)

• 実時間性– 割り込みルーチンは、仮想機械内で動くの?

• 実機械レベル=ハイパバイザ内で動くの???

• ハイパバイザで消費する時間は誰に付けるのか?

Page 45: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

45

資源管理 IO• IO

– HDD

– プリンタ

– 端末

– ネットワーク

– タイマ割り込み

– その他• パラレルIOポート (GPIOポート)

• シリアルIOポート

• その他が、組込みで重要

• そもそも大型機(System370)のIOとは…

Page 46: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

46

資源管理 IO• そもそも大型機(System370など)のIOとは

– IOチャンネルというものが普通

• 「チャンネル・プロセッサ」というものが居る– 高速DMAでIO処理を行う

– メインのプロセッサは、チャンネル・プロセッサを起動して、あとは終了割り込みを待つ

• アプリケーションは、(出力の場合)

1)DMAされる領域にデータを置き

2)チャンネル・プロセッサの起動を呼び出す

3)チャンネル・プロセッサが動作終了すると、コールバック・ルー

チンが呼び出される

※入力も同様。

IOチャンネルから、終了割り込みが来たら、指定した領域に

データが入っている

Page 47: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

47

資源管理 IO• IOチャンネルというものが普通

– (制御ブロックに終了結果を書くのが普通。だが略)

出力したいデータ(データの長さ情報なども)

CPU

チャンネル・プロセッサ1)データを置く

2)起動をかける

3)データを読み出し※ここで仮想機械とIOチャンネルのDMAアドレ

スに食い違いが出る。ハイパバイザは、DMAアドレスが仮想機械のも

のと合うように、仮想機械に知られないように、DMAアドレスを補正する。いわゆるIOMMUがあれば、ハイパバイザの負

担は軽減される。システムの実行も速くなる。

3.5)出力

4)終了割り込み

Page 48: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

48

資源管理 IO• IOチャンネルというものが普通

• なんでもIOチャンネルなので、仮想化が容易

– IOポートを直接叩いたりしていない(重要)

– 割り込みはシミュレートし易い

– HDDのセクタ読み出しも、IOチャンネル

• でも、だんだん高度なシミュレーションを

– プリンタもIOチャンネル

• スプーリングなどは、当然ソフトウェアだが

– ネットワークもIOチャンネル

• ネットワーク・プロセッサもどんどん賢くなっているが– プロトコル処理がどんどんネットワーク・プロセッサに…

Page 49: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

49

資源管理 IO• IOチャンネルの仮想化対応

– DMAと終了割り込みが基本であるから

• IOポートを直接叩いたりしていない(重要)

– IOチャンネルにセットするDMAアドレスを

仮想機械内の空間のアドレス->実アドレス

と変換すればよい

– 割り込みはハイパバイザが受け、ソフトウェア・割り込みで出しなおすなど

• 直接、仮想機械に割り込むことも、ハードウェア支援があれば難しくない

Page 50: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

50

資源管理 IO• HDD、ファイルは仮想化の中心のひとつ

– だんだん高度なシミュレーションを

– ファイルを本当にハンドリングするのは誰か?

• 特別なゲストOS

• ネットワーク

– そもそも速くないので、オーバヘッドが目立たない

– 仮想機械間の通信は、仮想的なネットワークI/Fにする

ことがよくある

Page 51: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

51

資源管理 IO• 組込みの世界にありがちな…

• IOポート

– それって仮想化できるの?

– 割り込み番号は?

• 極端な話、

まったく同じLinuxを、同時に複数の仮想機械で動かすとき、直接IOポートを叩いているデバイス・ドライバは、どうなるのか?

Page 52: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

52

資源管理 IO• IOポートを、仮想化するとした場合

– IOポートの番地は通常固定だが…

• ソフトウェアに気づかれずに、IOポートを見せるのは??

• アドレス変換が必須– 領域単位ででもアドレス変換をするハードウェアは必要

– 割り込み• 遅めであれば、ソフトウェア(ハイパバイザ)介在でなんとかで

きる場合も

• 高速割り込みなら、実ハードウェアと仮想機械の割り込み番号の食い違いは?

• 割り込みルーティングという技術を使って解決– 割り込み番号を仮想機械ごとに付け替えられるようにすべき

Page 53: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

53

資源管理 IO• IOポートのアドレス変換

– 理想的にはこうしたい

– IOポートは、バイト(ワード)単位でアドレスがついているから、変換するのが大変

– アクセス禁止も同様に大変

– 大きなIOのブロック単位(4kバイトごととかにするするか…(するとMMUと同じになる))

– いわゆるIOMMUではない

仮想機械1

実ハードウェア

IO空間の0x10番地

仮想機械2

IO空間の0x10番地

実IO空間の0x110番地

IOアドレス

変換器

実IO空間の0x210番地

Page 54: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

54

資源管理システム・レジスタ• スーパバイザしかアクセスできない、特権の必要なシステムの情報

の入ったレジスタのアクセスが発行された場合、

• すなわち、仮想機械上のゲストOSが、システム・レジスタにアクセス

したとき、

• トラップが発生して、ハイパバイザに制御が移る。

• ハイパバイザは、都合のいいように処理し、ゲストOSに制御を戻す

• 一般プロセスが、システム・レジスタにアクセスした場合も同様のシーケンスを行うが、最終的には、ゲストOSにより一般プロセスの例外

がハンドリングされる

Page 55: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

55

ハイパバイザは対話できない• 仮想機械でハイパバイザ管理アプリケーションを起動して管理

• ハイパバイザ単独では、ほぼ何もできない

– ハイパバイザは資源管理しかしない

• システム管理者であっても、ハイパバイザと直接やりとりする方法はない

※KVMは、ハイパバイザとホストOSが一体なので、例外的

ハードウェア(実機械)

ハイパバイザ

仮想機械

OS(スーパバイザ)

ハイパバイザ管理

アプリケーション

アプリケーション

(

ユーザ・タスク)

仮想機械

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

コンソール

Page 56: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

56

様々な仮想化方式

Page 57: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

57

Xen• ホストOSは仮想機械(Dom0)の一つ(のOS)が担当

– ゲストOSからの実IO要求をハイパバイザが受け

– ハイパバイザが、Dom0のOSに実際の要求を依頼

ハードウェア(実機械)

ハイパバイザ

仮想機械0Dom0

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械1Dom1

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械2Dom2

OS(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

IO要求

Page 58: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

58

Xen• http://www.xen.org/

• オープンソース

• ホストOS

– Linux, NetBSD

• ゲストOS

– Windows, Linux, Solaris, *BSD

• CPU

– 86, x86_64, IA64, PowerPC

Page 59: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

59

KVM• ホストOS兼ハイパバイザのLinuxが全部やる

– ゲストOSからの要求をホストOS Linuxが受けなんでも処理する。Linuxべったり

• 仮想機械のIO処理にQEMUを使ったのが特徴的。

• QEMUは仮想機械の空間で動く

• 仮想機械は、ホストLinuxのプロセスの一つ(プロセスの空間一つをもらって、仮想機械となり動く

ハードウェア(実機械)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

仮想機械1

Linux(スーパバイザ)

アプリケーション

(

ユーザ・タスク)

アプリケーション

(

ユーザ・タスク)

ハイパバイザ兼ホストOS Linux

IO要求QEMU

Page 60: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

60

KVM• http://www.linux-kvm.org/page/Main_Page

• オープンソース

• Linuxカーネルを拡張し、ハイパバイザ機能を付加

• ホストOS

– Linux

• ゲストOS

– Linux,Windows, Solaris,FreeBSD, OpenBSD, DOS

• ハイパバイザが複雑で、エラーやセキュリティ・ホールがあったら、ダメなのでは???

Page 61: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

61

蛍• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなど

と、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立

した仮想機械で実行

• 仮想機械の実績

– Linux + AUTOSAR

– Linux + 絹 (POSIX API RTOS)

– NetBSD + NetBSD

– MIPS, V850系, x86,ARM

Page 62: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

62

蛍• 組込みCPUで仮想機械を実現する

• 世界に先駆けた組込み用ハイパバイザ

• 実時間性をもつ仮想機械を実現したハイパバイザ

• 1つのCPU上に複数の独立した仮想機械を実現

• 各仮想機械では、同時に個別に全く異なるOSを起動

• 実時間OS μiTRON, 絹(POSIX 1003.13API準拠), AUTOSARなどと、Linux, BSD, Solaris, AndroidなどのIT情報系OSを、同時に独立

した仮想機械で実行

• アックス独自のスケジューリング技術で、最悪値を保証した仮想機械のスケジューリングを行う– ディフィニット・スケジューラで、時間スロットを必ず一定期間ごとに割り当てる

• 高度化する車載機器、高機能通信機器、高機能FA制御機器、ネッ

ト・オーディオなどに最適

• サポートCPU

– IA32, x86, MIPS, ARM(開発中), V850系(将来)

Page 63: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

63

仮想化用ハードウェア

Page 64: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

64

ハードウェア・サポートのある有名なCPUアーキテクチャ

• VT-x

• AMD-V

• 68010

Page 65: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

65

Intel VT-x

• Extended Page Tables (EPT)

– ページテーブルに、属性を増やす

• Intel's Virtualization Technology for DirectedI/O (VT-d)

– いわゆるIOMMU

• DMAするデバイスから出力されるアドレスを、アドレス

変換する

• IOチャンネルの仮想化が、非常に単純に!

• 64bitのゲストOSが動けるように配慮

Page 66: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

66

68010• 68010は仮想機械をサポート

– 仮想記憶(VS)もサポート。SUN2は仮想記憶のあるBSDが動作。

• “MOVE from SR” (CPUのシステム・ステータス・レジスタ読み出し)

を特権命令とした

– 68000は、ユーザモードでも読み出せた

• SR読み出しでもトラップして、Hypervisorを起動した

• IBMのCP (IBMのHypervisor)は、ゲストOSもユーザ・モードで動い

ていた

• SR読み出しで、OSがなにかをしようとしたら、Hypervisorで手当てし

た– ユーザ・アプリケーションがSRを見ることは、通常は無い

• メモリ空間のプロテクションは、外付けのアドレス変換ハードウェア(MMU) 68451への設定で行える

Page 67: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

67

デスクトップ/

エンタープライズ仮想化の

方向

Page 68: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

68

デスクトップOSの仮想化

• 典型的使用シーン– Windows7になってもWindowsXPが使える

– Windowsメインだが、組込み開発にLinuxも必要

– Windowsメインだが、同じx86でμiTRON開発ができれば素敵(夢)

– IntelMacユーザだが、Windowsも使う

Page 69: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

69

デスクトップOSの仮想化

• 求める性能– Windowsが欲しい

– IO性能がすごく良い必要はない

– ワープロ、Excel、ブラウザが普通に動けばいい

– デバッガが普通に動けばいい

– 各仮想機械(各ゲストOS)から、ファイルが便利にアクセ

スできればいい

• 結論: VMWareでも使えばよし

– Windowsを欲しい人とは、話すことがあまりないよね

Page 70: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

70

エンタープライズOSの仮想化

• 典型的使用シーン– 大型機ネイティブOS、各社UNIXとLinuxが動く

• SolarisとLinux, AIXとLinux, HP-UXとLinux,MVSとLinuxとか

– Linuxの動く仮想機械をカスタマごとに起動する

• ハードウェアのパワーに対して、各カスタマの処理トランザクションが小さい

– ひとつの案件を複数の仮想機械で実現

• ある仮想機械のバックアップを、別の仮想機械で行う

• LinuxのフォールトでゲストOSが停止しても、同じ実ハードウェ

ア上の、別仮想機械で即座にバックアップする

• ある仮想機械が、セキュリティを破られて(停止させて)も、即

座に別な仮想機械でバックアップする

Page 71: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

71

エンタープライズのOS,CPU

• エンタープライズ・サーバには各社の事情がある

• OS

– Linux, UNIX(AIX, Solaris, HP-UX), 独自OS

• CPU

– PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)

• Windows動きません

• 組込みと近い状況にある– PCは家電と同じ民生品なので、PC&家電が特殊と考え

るべき。本当のプロは。

Page 72: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

72

エンタープライズOSの仮想化

• 求める性能– CPUパワーより、トランザクション性能

• Web系だと、ネットワーク性能で抑えられる– CPUパワーが余りがちなので、仮想機械をたくさん作れる

– データベース・アクセスは速い方がいい

– 通常の仮想機械間通信はほぼ無い

– 仮想機械のマイグレーションはできるべき

• 結論: ホストOSは、各社ネイティブかLinuxだね

– Xen, VitualBox, KVMっていい感じ

Page 73: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

73

組込み分野について

Page 74: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

74

組込み分野の仮想化

• 想像できる典型的使用シーン– 情報系をLinuxかWindowsで、実時間系を

RTOS(μiTRON)で動かしたい

– 複数の仮想機械で、複数のRTOSを動作させる

• 一つのRTOS(仮想機械)がフォールトしても、他の仮想機械は

安全に動き続ける– 旧来のRTOSアプリケーションは、一つのメモリ・アクセス・エラーでシ

ステムが落ちる可能性がある

Page 75: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

75

組込みに適用できる

• LinuxとμiTRONが同時に動くのか???

– 動いている

Page 76: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

76

組込みに適用できる要件(最低限)

• マルチプラットフォーム– ホストOS、ゲストOS、CPU

– Windowsが動く必要なんか無い(?)

• ソースコードが供給される– オープンソースであれば、いじり易い(現状)

– 信頼性、品質の向上を独自におこなえる

• エンタープライズ・サーバと事情は近い– OS: Linux, UNIX(AIX, Solaris, HP-UX), 独自OS

– CPU: PowerPC, Sparc, IA64, PA-RISC, Mシリーズ(390)

Page 77: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

77

組込みに適用できる

• Xen (Citrix) http://www.xen.org/

– ホストOS, ゲストOSとも複数種類(Linux, NetBSD)

• KVM http://www.linux-kvm.org/page/Main_Page

– オープンソース

– ホストOS:Linuxべったり。ゲストOS:Linuxべったり

• VirtualBox (Sun) http://www.virtualbox.org/

– オープンソース

– CPU:Sparc, X86, etc...

– ホストOS:Solaris10,Windows,Linux,MacOS X

– ゲストOS:事実上あらゆるx86ベースのOSをサポートWindows (NT 4.0, 2000, XP, Server 2003, Vista, Windows 7), DOS/Windows 3.x, Linux(2.4 and 2.6), Solaris and OpenSolaris, and OpenBSD.

Page 78: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

78

本当の組込みの要件

• 実時間性

• コケてもコケない

Page 79: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

79

本当の組込みの要件

• 実時間性– CPUパワーの配分

• 適正な方式とは

• 実時間性を高めすぎて、他の仮想機械が動かなくなる?!

• スケジューリングの本質的な問題である

• Linux,Windowsが時間を取りすぎて、RTOSが動か

ないのは、ナンセンス

– 公平なスケジューリングなんか糞食らえ!

Page 80: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

80

本当の組込みの要件

• 実時間性– Linux,Windowsが時間を取りすぎて、RTOSが動かない

のは、ナンセンス

• 公平なスケジューリングなんか糞食らえ!

とは言え…

– LinuxやWindowsのデバイス・ドライバは仮想機械内で動いているので、それのサービスはさせないと…

• 全部、抽象IOにしてしまうか?

• 大型機, PCは、実時間性要請が低くていいなぁ(本当に)

Page 81: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

81

本当の組込みの要件

• 実時間性

• 結局、情報系ゲストOSのユーザが、

デバイス・ドライバをどこで動かしたいかに、大きく依存

• 情報系のデバイス・ドライバはコンソールと、低速なファイルIOデバイスだけにして頂きたい…

Page 82: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

82

本当の組込みの要件

• コケてもコケない– ハイリライアビリティ(高信頼性)

– ロバストネス(堅牢性)

– ディペンダビリティ(高可用性)

– ある仮想機械の影響は、絶対に他の仮想機械に影響してはいけない

• マイグレーション

– 仮想機械をまるごと引越し

• 他の実機械に

• 仮想機械がフォールトしたら、少し前の仮想機械イメージで再開

Page 83: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

83

本当の組込みの要件

• コケてもコケない対策

• マイグレーション

– 仮想機械をまるごと引越し

• 他の実機械に

• 仮想機械がフォールトしたら、少し前の仮想機械イメージで再開

– 適当なタイミングで、スナップショットを取る

• コミット・ポイント

• PCクラスタでは、かなり有効– HPC計算機は、ときどき落ちる

Page 84: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

84

本当の組込みの要件

• コケてもコケない

• マイグレーション

– 仮想機械アーキテクチャは、マイグレーションをやりやすい

– 性質がいい。健全

– ディペンダブルな(高可用性)組込みでは、仮想機械に

よるマイグレーションをするべきでしょう。

Page 85: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

85

組込み仮想化のこれから

Page 86: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

86

組込みのこれから• 実時間用のスケジューリング指定APIの標準化

– 実時間対応のパラメータとそれを設定するハイパバイザ・コール

• 割り込み処理方法の統一化(?)– 性能の低いCPUで、割り込み応答をする場合、どこでやるべきか?

• 特殊なゲストOS?

• ハイパバイザ?

• 割り込みルーチン⇔ゲストOS ⇔アプリケーション のインターフェースはどうするか?

– 特に、割り込み処理をハイパバイザの層でやった場合

• 今後、APIやフレームワークを決めて、プログラマが困らないようにしたい

Page 87: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

87

JASA 仮想化WGへのお誘い• 非営利の社団法人組込み技術協会(JASA)

OSS活用委員会仮想化技術WG

• 大目標– プログラマは、一通りの決まりを覚えれば、どの基本ソフトウェアでも仕事ができる

– 基本ソフトウェア作成者、半導体企業も助かる

• 具体的目標(議論により変わるかも)– 組込み全般に共通の問題の洗い出し

– 標準のフレームワーク,APIなどを決める• 実時間用のスケジューリング指定APIの標準化

• 割り込み処理方法の統一化(?)– 性能の低いCPUで、割り込み応答をする場合、どこでやるべきか?

– 性能指標を考える

Page 88: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

88

JASA仮想化技術WG 成果物案• 最大3年ぐらいで、JASA標準を作りたい

• ここで決めた仕組みをプログラマが一度覚えれば、ずっと仕事ができる

• プログラマが増えると、発注側も、基本ソフトウェア・メーカも、半導体メーカも助かる

– 割込み方式仕様書

– VM間通信仕様書

– ハードウェアへの要請を書く

– 教育的/啓蒙 文書• 効能がき

– デバッグ・ファシリティ

– 性能評価• 性能指標

• 何を測るか

Page 89: 仮想化な、 まああてにすな ひどすぎる乱立 · • OSのVMは、仮想マシン・インタープリタではない – 次の2つのVMはまったく別物 • 「仮想化技術(VM)」はSystem

89

参考文献など

• VM (OSシリーズ11)岡崎世雄/全先実著, 1981/AUG,共立出版,

ISBN4-320-02405-2

• Xenhttp://www.xen.org/

• KVMhttp://www.linux-kvm.org/page/Main_Page

• Kernel-based Virtual Machine (KVM) for Itanium Architecturehttp://www.ice.gelato.org/apr07/pres_pdf/gelato_ICE07apr_k

vm_yu_intel.pdf