仮想マシンとは言うけれど

投稿者名: 
Aqualight
ホストOS: 
N/A
ゲストOS: 
N/A
本文: 

 読者の皆様、こんにちは、こんばんは。 Aqualight です。
前回の投稿では、今回は「メモリー不足」に関する内容を予告していましたが、気まぐれ投稿しているもので… (苦笑)
そもそも、メモリー不足の詳細を知るには基礎知識が必要なんですよ。
単純には「メモリーが足りませんよ!」って事なのですが、その内容を吟味するとピンからキリまである訳で、
その発端から書いてみようかな…なんて思ったんです。
いぇ、難しい話ではありません。 むしろ、これは雑談ですから。
コンピュータの発展史を踏まえての雑談ですが、それを知った上で「メモリー不足」を理解すれば、
「なるほど!」と眼から鱗かもしれません。 (笑)

 

 まぁ、御託はどうでもいいんです。
読者の皆様は仮想マシンについて どのように考えていますか?
いぇいぇ、定義などと言った小難しい話ではありません。 単なる感想です。

 私は「VirtualBox や VMwara はエミュレータではない!」と思っています。
と同時に「x86 専用仮想化だ!」と思っています。
結局 インテル x86 コードでしか動作せず、拡張ハードウェアが利用できず閉じた環境だからです。
まぁ、だから sandbox 的な運用が可能なのですが。

 そもそもハードウェア無しに仮想マシンが運用可能なのでしょうか?
仮に「実体が無い」=「仮想」ならホスト・ハードウェア無しでも運用可能な筈です。
現実にはリアル・ハードウェアあっての仮想マシンです。
という事は”Virtal”という単語の解釈が問題なのであって、「実体が無い」≠「仮想」という事なのですね。

 「仮想」とは英語の " virtual " を翻訳した言葉で、
日本語のイメージからは「存在しない」だとか「架空の」が一般的だと思います。
ですが それこそ誤りで、本当は「事実上の」という意味で「現実の延長」と解釈する方が翻訳としてはより正解に近いと思われます。
試しに以下の URL から確認してみて下さい。

goo 英和辞書「virtual」:http://dictionary.goo.ne.jp/leaf/ej3/92365/m0u/virtual/

 という訳で、「仮想マシン」とは「事実上存在するマシン」な訳で、決して実体の無いマシンではありません。
むしろ仮想化運用可能なリアル・ハードウェアがあってこその仮想マシンという事です。

 

------- 雑談 -------

 その昔、とは言っても つい数年前の事ですが…
MSのOS販売で「ハードウェアの添付品」としてのライセンスがありましたよね?
つまりリテール版ではなく、DSP版の事です。 販売価格が安い代わりに、そのハードウェアが壊れると使用権が失われるというライセンスです。 MSではマザーボードを想定しての販売でしょうが、実はこの版は仮想マシンでも有効なのをご存知でしょうか?
それは仮想マシンとは言っても物理ハードウェア無くして動作不能だし、仮想マシンも物理ハードウェアを利用するからです。
だから契約ハードウェアが稼働可能ならホスト用のDSP版も仮想化可能で正式にゲストOSとして利用可能なのです。
ですが、そのOSからは完全に異なるハードウェアと認識し、登録時のハードウェアと異なると確認されるため、
電話での認証が必要になってしまいます。
また、このために、このライセンス確認方式では不正かどうかの確認が出来ません。
そもそも、当時のクライアントOSは仮想環境の一般化を考慮していなかった事による結果ですから。

 だから…かもしれませんが Windows 10 はライセンスの方式を従来とは改め、「デバイス」という曖昧な概念で…
MSにとってのビジネスモデルが変わったのは確かですが、アップルを真似たビジネスモデルでは…
MS批判はさておいて、真の仮想化を求めるなら、「ホストがハイパーバイザーでなければ業務用途には使えない。」とだけは
言えそうですが、その話は後日展開したいと思います。
何よりそれが「メモリー不足」を理解する上での最重要点なのですから。

------- 雑談オワリ -------

 

 さて、改めて「仮想化って何なの?」って疑問はありませんか?
「仮想化とはどういう事か?」という話なのです。 私は以前に「それはファイル化だ!」とも言っていますけどね。
実に様々な捉え方があるものです。 一面では正しくとも視点を変えると違って見える。
難しいものです。

 

 ところで、ゲーム専用仮想マシンをご存知でしょうか?
MAME(Multiple Arcade Machine Emulator) が その代表です。
参考:Wikipedia( MAME )

 MAME は VirtualBox や VMware player とは異なり CPU から完全エミュレーションです。
出来るだけ本物を忠実に再現する事を目標として開発されていると聞き及んでいます。
そのため、ホストマシンの CPU では実行不能な異種 CPU のコードを実行可能です。
当然、出力ハードウェアも全て仮想化しているため、PC上でゲームが再現可能です。
もっとも仮想ハードウェアとして実装されているのは音声&映像に関わる部分だけで、その出力はホストに頼ります。
再現に困るのは、パドルやハンドル、光線銃など入力デバイス程度なので、それさえ何とかなれば重大な問題は発生しません。

 では、なぜ VirtualBox や VMware player は CPU エミュレーションしないのでしょうか?
これも簡単な理屈で、完全エミュレーションだと動作速度が絶対的に遅くなるからです。
悪く言えば「それでは使い物にならない。」という事です。
そしてこれが、私の「VirtualBox はエミュレータではない!」と思う根拠です。

 でもね… VirtualBox も VMware player も違った部分でエミュレートしているんです。
それは、簡単に言ってしまえばマザーボードの機能です。
大部分のコードはリアルCPUが処理しますが、I/O やペリフェラルなどの処理もホストCPUが肩代わりしているのです。
何よりそれが仮想ハードウェアの核心だからです。
内部で済むものは仮想ハードウェア経由でリアルCPUが処理し、外部との遣り取りは仮想ドライバ経由で外部と…
実際、CD-ROM やキーボードなどはホストのデバイスが利用可能ですしね。

 結局、ユーザーとの対話部分についてはリアル・ハードウェアを使わざるを得ないのです。
それ以外の内部をエミュレートする事で成り立っている訳です。
OSを仮想化するという事は、OSのアプリケーション化とも言える訳で、ホストの1タスクとして運用可能にする事でもあります。
本来ならハードウェアに直接アクセスする部分をエミュレーションによって矛盾した動作を防ぎ、
あたかもPC内部にPCを構築したかのように動作させていると言えそうです。

 74LS04 だとか 74LS00 などという 74 シリーズ TTLロジックIC をご存知でしょうか?
内部にインバーターやNAND、NOR といった論理回路が組み込まれたICで、これを組み合わせる事で
簡単な論理回路が構成可能です。
現代では用途や集積度によって論理回路は PDL に焼きこまれユニット化され、これはソフトウェアの物理化とも呼べそうです。

 要するにソフトウェアは「論理回路」としてハードウェア化可能な訳で、その集大成が CPU であるならば、
仮想化によるエミュレーションは方向性としては真逆で、ハードウェアになった物を再びソフトウェアに
戻す行為と言えそうです。
処理高速化のために論理(ソフトウェア)をハードウェア化したのですから、この逆を行なえば遅くなって当たり前です。
その「遅くなる」をどう解決するかの手法として「エミュレーションを行わない」…
つまり可能なら直接 CPU に実行させ、不都合な部分だけエミュレーションさせる。
だから VirtualBox や VMWare 仮想マシンは x86 系専用になってしまった…という事でしょうね。

 という事で、今回は冒頭から雑談でしたが、次回はプログラム構造に関する雑談でも…と思います。
この「プログラム構造」を知ればスーパーバイザーやハイパーバイザーの理解の助けとなると思われます。
次回、お楽しみに♪ (え? 「誰も期待していない」ですって? やだぁ 笑)

 

コメントを追加

Filtered HTML

  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br />
  • 行と段落は自動的に折り返されます。

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
スパム投稿防止の為以下のテキストを入力してください
Image CAPTCHA
Enter the characters shown in the image.