システム仮想マシンとJava仮想マシンの違いを示す図を描こうとしています。
最初の2つの画像は私には正しいように見えます。しかし、私は三番目を描く方法がわかりません。
画像1:
画像2:
画像3:
ご覧のとおり、赤いブロックと灰色のフレームの両方に同じキャプション「JVM」があります。私はそれが正しいとは思いません。キャプションは異なるはずです。灰色のフレームは「JVM」、赤いブロックは「何か違う」です。
3番目の図はどのように修正する必要がありますか?
あなたがそれを正しい方法で考えれば、それはそのままで結構です。
仮想マシンは、ハイパーバイザーで実行されるタスクと考えることができます。結局のところ、彼らは コンテキストスイッチ をほぼ同じ方法で取得します。タスクとアプリは同じものではありません。タスクは実行中にのみ存在します。アプリは、実行中のタスクを終了した後でも存在します。彼らはあなたが彼らを再び始めるのを待って周りに座っています。
ここに小さな例があります。
問題は、アプリとタスクの名前が同じであるため、混乱を招く可能性があるということです。特に、質問の他の画像が同じパターンに従っていない場合。通常のホストOSは、実行中のアプリの名前を認識しています(したがって、タスクに同じ名前を付けることができます)。ただし、ハイパーバイザーには、その上で実行されているゲストOSの名前がわかりません。つまり、「タスク」の独自の名前を構成します。「システムVM 1」などです。