Skip to content
oraccha edited this page Jan 14, 2013 · 1 revision

IA32 の仮想マシン

  • [http://www.vmware.com/ 本家]
    • [http://www.vmware.com/jp/ 日本語]
  • [http://cuu.it-director.com/article.php?articleid=11427&tc=9 Interview with Diane Greene, CEO VMware] (IT-Director 2003-11-13)

Stanford Univ. で Disco とか SimOS といった仮想マシンの研究をしていた[http://simos.stanford.edu/~mendel/ Mendel Rosenblum]氏らのグループの面々が VMWare Inc. の共同設立者になっている.

  • IA アーキテクチャで VM/370 を作ると本人達も明言していたらしい.
  • IA アーキテクチャで仮想化する際のいやらしい部分は,動的にコードを変換することで対応している.この部分は VMWare の特許になっている.

性能を出すために,グラフィックまわりは穴を開けているらしい.あと,ディスクI/Oが遅いので,たとえば仮想記憶が動きはじめると使いものにならなくなってくる.ディスクI/Oも仮想化しないという選択肢があってもいいかもね.

  • [http://www15.big.or.jp/~yamamori/sun/sd-2000-08/ VMWareとbochsを使ってみる] . YAMAMORI Takenori 氏のページ.
  • [http://www.etl.go.jp/~suzaki/NTC/ Network Transferable Computer] . 須崎さんの研究.
  • plex86 . plex86 は仮想マシンで,bochs は IA32 エミュレータ.

VMWare ESX ServerはホストOSがないタイプ(Xenと同じ)で,VMWare WorkstationはホストOS上で動作するタイプ.

仮想ネットワークを構築する方法には,次の三つがある.

  • ブリッジ
  • ホストオンリ
  • NAT

Thu Apr 6 12:29:50 2006 [http://slashdot.jp/article.pl?sid=06/04/05/1242249 VMware、仮想マシン規格を無償公開] (SlashdotJapan 2006-04-05) 仮想マシン環境の定義とフォーマット設定に使用されるディスクフォーマットの規格を無償で公開すると発表. . Sun Feb 5 22:08:27 2006 [http://slashdot.jp/article.pl?sid=06/02/04/0715214 VMware GSX Server無償化か?] (SlashdotJapan 2006-02-04) ESX は従来通り. . Mon Oct 24 18:47:15 2005 りょうせい Plan9ML で VMWare Player ネタが盛り上がっているが,そこで紹介されていたハードディスクイメージコンバータ.[http://www.geocities.co.jp/SiliconValley/2994/tool/nhc.html HMC]. . Sat Oct 22 17:13:24 2005 りょうせい ちょっと違うのか? [http://www.forest.impress.co.jp/article/2005/10/21/vmwareplayer.html VMware、同社/MS/Symantec製の仮想PCを実行できるフリーソフトを公開] (窓の杜 2005-10-21),[http://slashdot.jp/article.pl?sid=05/10/21/1443250 無償のVMWare Playerが登場、VMの作成・編集は不可] (SlashdotJapan 2005-10-21) . Sat Oct 22 15:49:06 2005 りょうせい 機能限定無料版.[http://www.vmware.com/products/player/ VMWare Player] . ほぉ,EMC に買収されるのですか.[http://slashdot.jp/articles/03/12/16/0028205.shtml?topic=105 EMCがVMWareを買収] (SlashdotJapan 2003-12-16) . [http://slashdot.jp/articles/03/02/01/181235.shtml?topic=81 VMware Version e.x.p 試用レポート] (SlashdotJapan 2003-02-02)


[http://www.extremetech.com/print_article/0,3428,a%253D20322,00.asp Virtual Machines & VMware, Part I] (ExtremeTech 2001-12-21) . 仮想マシンの歴史,仕組み,エミュレータとの違い,そして VMWare Workstation 3.0 for Windows の解説.VMWare の動きに興味がある人にはお勧め.Part II も楽しみだ.

  • Stand Alone Virtual Machine と Hosted Virtual Machine
    • 前者は VM/370 のようにベアマシンの上に VMM(Virtual Machine Monitor) が実装されるもので,後者は VMWare のようにホストOS上に VMM が実装されるもの.
    • Stand Alone VM の場合,VMM が PC における多種多用なハードウェアをサポートする必要があるが,Hosted VM の場合,ホストOSのデバイスドライバを利用することができる.
      • 実行時のオーバヘッドはあるが,IA32 アーキテクチャでは後述するセンシティブ命令の扱いが問題になるし,ホストOSのデバイスドライバが利用できることから,Hosted VM の方が向いている.
  • 特権命令とセンシティブ命令 . Intel が仮想マシンを動かすことを考えてプロセッサを作らなかったため,IA アーキテクチャ(32も64も)で Stand Alone VM を動かすことは困難である(結論から言えば完全な仮想マシンをIAアーキテクチャ上で作るのは無理だと思う).
    • 仮想マシンを作るためには,非特権モードで実行した特権命令をすべてトラップできる必要がある.正確には「特権命令 = センシティブ命令」である必要がある.センシティブ命令にはコントロールとビヘイビアにセンシティブなものに分けることができ,コントロールセンシティブ命令とは資源割当て(特にメモリ)を変更したり,プロセッサ動作モードを変更する命令.ビヘイビアセンシティブ命令とは実メモリの位置やモードに動作の振舞いが依存する命令.
      • 仮想化できない命令は VMM に制御を移すようなトラップ命令に置き換えるなどの解決策がある.
        • plex86 では ScanBeforeExecute って手法を使っている.
      • 例えば,sgdt,sidt,smsw,str は仮想化する必要があるのに特権命令じゃない.pushf/popf は ring0 と ring3 では振舞いが違う.
        • lgdt は特権命令なので,特権違反でトラップして,エミュレーションできるが,sgdt は非特権命令なので,実マシンの GDT を読んでしまい,エミュレーションできない.で,sgdt を書き変えてトラップできるようにする.
    • [http://angel.bsdclub.org/d/d199911b.html#15 仮想マシンの謎] (アクマくんにお願い 1999-11-15) . 例えば,"push cs" などセグメントセレクタを「読む」コードは仮想化できない.
    • [http://www.rcollins.org/articles/pvi1/pvi1.html Pentium Protected Mode Virtual Interrupts (PVI)] (Intel Secrets)
    • [http://citeseer.nj.nec.com/331358.html Analysis of the Intel Pentium's Ability to Support a Secure Virtual Machine Monitor]
  • VMWare は VMM,VMWare ドライバ,VMWare アプリケーションから構成される. VMM(Virtual Machine Monitor),VMWare ドライバはリングレベル0で動作し,VMWare アプリケーションはリングレベル3で動作する.VMM が特権命令のエミュレート,VMWare アプリが I/O 命令のエミュレートを行なう. . 例えば,ゲストOS が I/O 命令(ポートに対する in/out)を発行した場合,VMM でトラップし,VMWare ドライバ,VMWare アプリを介してホストOS への要求(read/write システムコール)に振り替える.
  • 上記のように I/O 命令のエミュレートは空間切替えのオーバヘッドが大きいので,スループットが必要な I/O 操作用の最適化がなされているらしい.

[http://www.extremetech.com/print_article/0,3428,a%253D20455,00.asp Virtual Machines & VMware, Part II] (ExtremeTech 2001-12-28) . VMware の使い方が中心という感じ.

[http://slashdot.org/developers/02/05/09/2142258.shtml?tid=99 VMware vs Virtual PC vs Bochs] (Slashdot 2002-05-09)

Clone this wiki locally