仮想マシン
Virtual Machine
狭義では,特権命令や入出力を仮想化し,単一の計算機上で複数の計算機イメージを提供するもの(例. VM/370,VMWare).
広義では,ある種の命令セットインタフェースを提供するものと考えられる(例. JavaVM,Inferno の Dis).
狭義の仮想マシンは VMM へ.
広義の仮想マシン
- JavaVM
Javaバイトコードが動作する仮想的なマシン.
仮想的な命令セットインタフェースを提供するという意味で仮想マシンと呼ばれる
広義な意味での仮想マシン.
- PVM(Parallel Vertual Machine)
ネットワーク接続された複数のUnixを単一の分散共有メモリ型計算機として利用することができる.
デーモンとインタフェースを提供するライブラリから構成される.
- 一歩間違え(?)ば、これが俺の飯の種になってたのかも…
- 数値計算屋さん方面で使われてる、とか聞きました。
- ロードバランスとかをユーザーアプリの側から考慮する必要があり、
完璧に抽象化されたVMというわけじゃない、んじゃなかったかなこれ?
- この分野は明るくないけど,SCoreみたいなクラスタ用OSみたいなもの
とはどう違うんだろう?
- 今は PVM は絶滅寸前で,MPI を使う方がトレンドなようですが.
- MPI-2 を使えば,かなりの部分で同じことができそう.
- 昔MPICHは内部でPVMを通信機構に使ってたらしい.MPICHのソースコードにその名残りが残ってる.
- Windows
- VirtualMachineOverview
Windows3.x/9x における仮想マシン(このページにカテゴライズするのは
どうかとも思うが).
要は DOS との下位互換性を保つための機構.Unix的なプロセスの変種って
考えればいいのかな.
VMM(Virtual Machine Manager),VxD(Virtual X Device)...
- ICVM (Internet C++ Virtual Machine)
なんかC++の仮想マシンだそうな.gccを改造したコンパイラや開発キットがあるみたい.APはというと,ゲームばっかりだけど.実用になっているのか?
- Parrot
- Perl6のインタプリタコア
- 高級なような低級なような。
- 一応レジスタマシン。
- Mite
Reuben Thomas 氏によるプロジェクト.元々Forth屋さんなのかな.
vmgen
スタック型仮想マシンのインタプリタ生成系.
書き方はバイトコード名と引数,戻り値とそれに対応するCコードの組合せで記述する.
<name> ( <argument-stack-items> -- <result-stack-items> )
<c-code>
例えば,JVM の iadd は次のような感じになる.
iadd ( i1 i2 -- i )
i = i1 + i2;
このアプローチは実装にべったりなので,もう少し形式的に書けてもいいかもしれない.
lcc の定義ファイルってどんな感じなんだろう?
(最終更新 Tue Nov 18 21:49:33 2008)