Download presentation
Presentation is loading. Please wait.
1
全体ミーティング 2009/6/24 D3 西川 賀樹
2
発表内容 現在行っている研究について 研究テーマは完全仮想化によるARM向け仮想マシンモニタの設計と実装
3
研究の背景 携帯端末等のモバイル機器における性能の向上 モバイル機器へ汎用OSが導入されるようになってきている
多くの機器がネットワーク接続も可能となり、高機能化・多様化が進んでいる モバイル機器へ汎用OSが導入されるようになってきている 単純なRTOSでは多様なアプリケーションに対応できない 汎用OSを用いることにより、汎用計算機で用いられている既存アプリケーションの移植が容易になる しかしこれにより起こりうる問題も考えられる
4
モバイル機器の高機能化に伴う問題 セキュリティリスクの増大 リアルタイム処理における問題
ネットワーク接続を行うことにより、マルウェア等に感染するリスクが増大 汎用OSを用いることにより、汎用計算機における既存の攻撃手法が使用可能 リアルタイム処理における問題 多くの汎用OSはリアルタイム性の確保が不十分
5
目的 モバイル機器向けの仮想マシンモニタを開発 リアルタイム性の向上 セキュリティの向上
組み込みにおいて最も普及しているARMアーキテクチャを対象とする リアルタイム性の向上 RTOSと汎用OSを同時に動作させることができ、リアルタイム処理をRTOSで優先的に実行可能 セキュリティの向上 各OSをVM上で動作させることで、汎用OSでのマルウェア感染時等にRTOSへの影響を防げる
6
本研究の仮想マシンモニタ(VMM) Type-1での完全仮想化による実装 リアルタイム性を考慮したVMスケジューリング
ゲストOSの修正が必要ない 汎用OSに比べて組み込みOSは種類が多く、各OSに対して修正を加えることはコストが大きい ソースが公開されていないOSについても対応可能 現在完全仮想化により実装されたVMMは存在しない Type-2に比べ実行速度が高速 リアルタイム性を考慮したVMスケジューリング VMに実行優先度をつけ、RTOSを動作させる場合は最優先で実行する
7
関連研究 擬似仮想化によるVMM(Trango、VirtualLogix、Xen on ARM) Type-2 VMM(WB-VRT)
完全仮想化に比べ高速だが、ゲストOSの修正が必要 Xen on ARMはSEDFスケジューラを用いており、リアルタイム性が考慮されていない Type-2 VMM(WB-VRT) ホスト・ゲストOS共に修正が必要であり、プラットフォームが限られる Type-1に比べ実行速度が劣る リアルタイム性においては有利
8
本VMMの設計 CPU 時計 VMスケジューリング 例外・割り込み 割り込みコントローラ メモリ
9
CPU 対象とするCPUはARM1136(ARMv6) ユーザモード・特権モードの二つの動作モードを持つ
特権モードはさらに以下のような6つのプロセッサモードを持つ アボート、未定義、FIQ、IRQ、スーパーバイザ (この5種類を例外モードと呼ぶ) システム R0-15、CPSR、SPSR(例外モードのみ)のレジスタを持つ 各例外モードはバンクレジスタを持つ
10
レジスタの構成
11
CPU仮想化 VMMを特権モード、ゲストカーネル・アプリケーションをユーザモードで動作させる
そのためにセンシティブ命令を確実に検知し、その動作をエミュレーションしなければならない センシティブ命令はマシン状態を変更したり、マシン状態によって動作が変わる命令 ゲストカーネルがマシン状態を変更しようとした場合は、VMMが同様に仮想マシン状態を変更する ゲストカーネルが特権モードとユーザモードで動作が変化するような命令を実行した場合、VMMがその動作をエミュレーションし結果を返す
12
ARMにおけるセンシティブ命令 4種類のセンシティブ命令 MSR・MRS命令 SPSRがCPSRへコピーされる可能性がある命令
CPSR・SPSRレジスタの操作を行う SPSRがCPSRへコピーされる可能性がある命令 R15をデスティネーションレジスタとする算術命令・論理命令・LDM(3) MCR・MRC命令 コプロセッサのレジスタへの操作を行う ユーザモードレジスタにアクセスする命令 LDM(2)、STM(2)
13
センシティブ命令実行時の動作 (マニュアルにおける記述)
MSR・MRS命令 CPSRの特権ビット(割り込み制御ビット・モードビット)への操作は無視 SPSRへの操作は予測不能 SPSRがCPSRへコピーされる可能性がある命令 予測不能 MCR・MRC命令 v5までは全て未定義例外が発生 v6以降は一部の操作に限りユーザモードで実行可能 ユーザモードレジスタにアクセスする命令
14
センシティブ命令実行時の動作 (N810での実験結果)
MSR・MRS命令によるSPSRへの操作 例外は発生しない SPSRがCPSRへコピーされる可能性がある命令 ユーザモードレジスタにアクセスする命令
15
センシティブ命令のエミュレーション 予測不能なセンシティブ命令はプラットフォーム依存の可能性も考えられる
そのため全てのセンシティブ命令を動的に例外が発生する命令に書き換える その後、例外ハンドラにおいてエミュレーションコードを実行
16
センシティブ命令の処理 カーネルモード実行時のみ仮想PCから1ブロックの命令を読み込み、解析を行う
ブロックは条件分岐命令までの区間、もしくは一定最大区間 該当するセンシティブ命令を検知し、SWI命令に書き換える 各センシティブ命令に対して、SWI命令の下位24ビットの値を設定 Linux(OABI)では下位24ビットが”0x システムコール番号”と設定されるのでその範囲は使用しない Linux(EABI)では下位24ビットは常に0であり使用されない ゲストカーネルを実行させ、ソフトウェア割り込みが発生すると下位24ビットの値から対応するエミュレーション処理を判断・実行する 後の例外処理の部分でモード変更を例として具体的に説明します
17
時計 ゲストOSに仮想タイマ割り込みを発生させる 時刻の補正にCCNT(サイクルカウンタ)が使用されるのでそのエミュレーションを行う
タイマ割り込みハンドラの縮退によるずれ VMMがCCNTの値を取得し、それをゲストOSに返す CCNTは特権命令であるMCR命令により値を取得するため
18
VMスケジューリング RTOSを同時に動作させる場合はリアルタイム性を考慮する必要がある
割り込みが発生した場合、直ちにRTOSが動作するVMに実CPUを割り当てる 汎用OSはRTOSがアイドル状態になった場合にのみ実CPUを割り当て実行させる アイドル状態の判定はWFIモードへの移行を検知して行う
19
例外・割り込み 例外・割り込みが発生すると自動的に各例外モードにプロセッサモードが変更 各例外ベクタから実行が開始される
レジスタも各例外モードのバンクレジスタに切り替わる LR_bankには”例外が発生した命令+4もしくは+8”が代入 SPSR_bankには例外発生前のCPSRが代入 各例外ベクタから実行が開始される 例外ベクタは0x ~0x HIVECSを有効にしている場合は0xFFFF0000~0xFFFF0020 通常ハンドラ実行後、PCをRdとしたMOVSやSUBS等の命令で復帰(SPSR_bankがCPSRにコピーされる)
20
例外ベクタ
21
例外処理の流れ SP_usr、LR_usrをVSP_svc、VLR_svcもしくはVSP_usr、VLR_usrに保存
SPSRをVSPSR_bankに保存 CPSRをVCPSR、SPSRにコピー ゲストの例外ハンドラの開始アドレスから1ブロック読み込み解析・センシティブ命令の書き換え VSP_bankをSPにロード ユーザモードにモード変更し仮想例外を発生させる SPSRをユーザモードに更新し、ゲストの仮想ベクタアドレスをPCにロード
22
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM
ゲストアプリケーションがデータアボートが発生するような命令を実行 ゲストアプリケーション ゲストカーネル VMM
23
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM データアボート例外発生
SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_usr、VLR_usrに保存 SPSRをVSPSR_abtに保存 CPSRをVCPSR、SPSRにコピー データアボートのハンドラ開始アドレスから命令を1ブロック読み込み センシティブ命令の解析・書き換え SPにVSP_abtをセット SPSRをユーザモードに更新し、ゲストのハンドラをロード
24
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM 仮想データアボート例外発生 データアボートのハンドラを実行
普通ユーザモードのレジスタの保存等をしてスーパーバイザモードに移行 (本当のLinuxのハンドラコードは違いますが、ここではMSR命令でモードフラグを変更し移行したとする) ゲストカーネル VMM
25
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM ソフトウェア割り込み発生(センシティブ命令エミュレーション)
SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_abt、VLR_abtに保存 SPSRをVCPSRにコピーし、VCPSRをスーパーバイザモードに更新 LRを保存 SP、LRにVSP_svc、VLR_svcをセット 保存したLRをPCにセット(SPSRがCPSRにコピーされる命令で)
26
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM データアボートのハンドラを実行終了
ユーザモードへ移行(ここでは ”SUBS PC,LR,#4”実行したとする) ゲストカーネル VMM
27
例外処理の例(データアボート) ゲストアプリケーション ゲストカーネル VMM ソフトウェア割り込み発生(センシティブ命令エミュレーション)
SP、LR、SPSRがバンクレジスタに切り替わる SP_usr、LR_usrをVSP_svc、VLR_svcに保存 VSPSR_svcをVCPSRにコピー SP、LR、SPSRにVSP_usr、VLR_usr、VSPSR_svcをセット VLR_svc-4をPCにセット(SPSRがCPSRにコピーされる命令で)
28
例外処理の例(データアボート) ゲストアプリケーションが実行を再開 ゲストアプリケーション ゲストカーネル VMM
29
割り込みコントローラ ARMは2種類の割り込みコントローラを提供
Vectored Interrupt Controller(VIC) Generic Interrupt Controller(GIC) この2種類以外にも実際のチップ製造メーカーが提供する独自割り込みコントローラが多数ある ARM1136ではVICのPL192がサポートされており、そのエミュレーションを行う
30
PL192 PL192の特徴 0xFFFFF000(HIVECSが有効な時は0xFFFEF000)をベースアドレスとしてメモリにマップ
32個の割り込みベクタを持つ 各割り込みベクタに優先度・マスクを設定可能 ハードウェアで最も優先度の高い割り込みソースのサービスルーチンをロード 0xFFFFF000(HIVECSが有効な時は0xFFFEF000)をベースアドレスとしてメモリにマップ IRQ・FIQハンドラのアドレスからVICADDRESSに1命令でアクセスできるようにするため VICポートを用いる場合はVICADDRESSは使用されないのでレイテンシには影響ない
31
PL192のレジスタ(1)
32
PL192のレジスタ(2) ・・・ ・・・
33
PL192のレジスタ(3)
34
PL192のエミュレーション ゲストOSがPL192の仮想レジスタを直接管理
VMMはその仮想レジスタの値を見て、優先度・マスクから発生させる仮想割り込みを決定する マルチプロセッサ上だと一時的にこのページをread onlyにする、ただシングルプロセッサ上での実装を前提 仮想VICADDRESSレジスタにサービスルーチンのアドレスをロード VEを有効にしている(VICポートを使用)場合はゲストOSにサービスルーチンアドレスから実行を再開させる
35
メモリ 仮想化 保護 シャドウページテーブルを用いる ページアロケータによって物理ページの割り当て・回収
ゲストカーネル・アプリケーションが同じユーザモードで動作するため、動作モードによる保護ができない ARMのドメインを用いてゲストカーネル・アプリケーションの保護を行う
36
シャドウページテーブル シャドウページテーブルの2通りの管理方式 1つのシャドウページテーブルを用いる 複数のシャドウページテーブルを用いる
ゲストページテーブルが切り替わる度にシャドウページテーブルをフラッシュ 管理が簡単であり実装は容易 シャドウページテーブル更新のコストが非常に大きい 複数のシャドウページテーブルを用いる 各ゲストページテーブル毎にシャドウページテーブルを用意 シャドウページテーブルをフラッシュする必要がなく、更新のコストが少ない 全てのゲストページテーブルにシャドウページテーブルを用意するとメモリ使用量が非常に多くなる メモリ使用量を抑えるためには、一定量のメモリを使用するとページテーブルを解放し再利用する必要があり管理が複雑になる
37
本VMMのシャドウページテーブル 複数のシャドウページテーブルによる管理
ゲスト切り替えの度にシャドウページテーブルをフラッシュするのはあまりにコストが大きい ARMのTLBはASIDを持つので、各ゲストページテーブルとASIDを対応づければTLBのフラッシュの必要もなくなる ただし、組み込みのメモリ量は多くないので、シャドウページテーブルに使用するメモリを一定量に制限する
38
ドメイン ARMにはドメインを用いたアクセス制御機構がある 16個のドメイン
ページテーブル・TLBエントリには所属するドメインのフィールドがある DACRに16個の各ドメインに対してアクセス不可、クライアント、マネージャのいずれかを設定する クライアントはAPビットによるチェック、マネージャは常にアクセス許可
39
ドメインによる保護 このようにすることでゲストアプリケーションからゲストカーネル のメモリ領域を保護することができる
D0をVMM、D1をゲストカーネル、D2をゲストアプリケーションとする D0 D1 D2 VMM クライアント マネージャ ゲストカーネル ゲストアプリケーション アクセス不可 このようにすることでゲストアプリケーションからゲストカーネル のメモリ領域を保護することができる
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.