質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

1回答

2232閲覧

ホストOS型仮想マシンからの実ハードウェア制御について

GrassfieldK

総合スコア50

VMware

VMwareとは、 ハードウェアで動作するOS上で仮想マシンを作成、実行するソフトウェアです。 Windows上でUNIX系OSを動作させたり、他のOS上で別の仮想OSを動作することが可能です。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

0グッド

0クリップ

投稿2016/12/28 01:14

###疑問
ホストOS型仮想化ソフト内でハードウェアを使用するとき、
ゲストOSから直接実ハードウェアを制御することを禁止(一度仮想化ソフト、ホストOSを介させる)するためゲストOSがハードウェアを使用しようとする度に例外を投げさせ、
それを仮想化ソフトウェアがキャッチして通常の手順、つまり一度ホストOSを介してハードウェアを制御する、
と理解しています。

ですが、これだとゲストOSは結局ハードウェアを使用できていないことになる気がします。
そうなると、どうして仮想マシンは通常通り稼働するのでしょうか?
ゲストOSはハードウェアが使用できないと例外を投げるのに、どうして通常通りOS以上のソフトウェアを稼働させられるのでしょうか?

そもそも認識が違うのかもしれませんが、ご回答お願いします。

一応、以下に疑問が生じた経緯を書いておきます。

###疑問が生じた経緯
仮想サーバ構築に関するとあるeラーニングを受けていた(有料講座であるため内容へのリンクなどは貼れませんが)ところ、ホストOS型仮想化ソフトウェアの仮想マシンが実ハードウェアを使用するときは、以下のような処理がなされていると説明されていました。

  • まず、ソフトウェアがCPUなどのハードウェアを使うときは、OSを介して使用されている
  • OSはソフトウェアからの要求を受け、OSの特別権限でハードウェアを使用する(命令を下す)
  • このため、ゲストOSはホストOSを介さずに特別権限で実ハードウェアを直接制御できてしまう
  • 当然それは問題になるため、仮想化ソフトウェアは、ゲストOSのハードウェア使用要求を禁止する
  • するとゲストOSはハードウェアを使用しようとする度に例外を投げ、それを仮想化ソフトウェアがキャッチしてホストOSにハードウェア使用要求を投げる
  • 以上により、ゲストOSが直接実ハードウェアを制御することはなく、通常通りホストOSを介してきちんとした手順でハードウェアを使用できる

これについて、ゲストOSに直接ハードウェアを制御させないため、ゲストOSからのハードウェア使用命令を禁止して例外を投げさせ、それをもとに仮想化ソフトウェアがホストOSにハードウェア使用要求を送る、という理解でいるのですが、そうなると疑問が生じました。

###生じた疑問
まず、ゲストOSはハードウェアを使用しようとしても仮想化ソフトウェアにより禁止されているため例外を投げるのであれば、ゲストOSは「CPUも使えないんじゃソフトウェアに計算結果を返せないな」という状態になっているのではないでしょうか?
すると、結局仮想マシンは一向に処理が進まず…ということになってしまう気がします。
そのあたり、何かここに書いてある以外の仕組みが働いているのでしょうか?
もしくは、僕の認識がそもそも違っているのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「疑問が生じた経緯」に書かれている理解は概ね合っています。

ゲストOSは「CPUも使えないんじゃソフトウェアに計算結果を返せないな」という状態になっているのではないでしょうか?

仮想マシンには、仮想CPUと仮想のメモリ(仮想記憶の意味での仮想じゃなくてVM的な意味での仮想)がありますので、その上でプログラムが稼働することは可能です。
CPUの一般命令が、物理メモリ割り当て済のメモリ上で動く分には、そのまま物理CPUと物理メモリで動きます。
I/O等の特権命令実行時や、物理メモリ割り当て範囲外へのメモリアクセスがあった時点で、VMモニタが介入して、仮想OSに見えないところで、まるでその命令実行が成功したかのごとく取り繕います。

投稿2016/12/28 01:40

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GrassfieldK

2017/01/04 07:49

ご回答ありがとうございます。ここにお礼文を書いている途中で割り込みが入って、そのまま返信を忘れて年を越してしまっていました(笑) まだ完全に理解(納得)できたわけではありませんが、ホスト端末内では、基本的には仮想ハードウェアを通常通り利用(そしてそれはVMソフトウェアがとりもち)し、特権命令などのときのみVMモニタにより細かい制御が入るということでいいのでしょうか? 講座を受けて少し気になったのでここで質問した、というだけですので、あまり詳しく理解するのはまたの機会にしたいと思いますが、ひとまずそのような理解で行こうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問