ハイパーバイザーのことを調べていたら「結局ハイパーバイザーってなんなんだよ!!( ゚д゚ )」となったので
忘れたときのために分かりやすく解説しておきます・・・。
ハイパーバイザーとは?
ハイパーバイザーは「管理者」の上を行く「管理者たちの管理者」のこと。
これだけだと「は?何言ってんだコイツ」となるので順番に説明していくと
まず、OSのことを別名「スーパーバイザー」と呼びます。日本語訳すると「監督者」「管理者」などという意味になります。
例えばWindowsで言うと、Windowsの中にある中核部分(カーネル)がスーパーバイザーと呼ばれる存在で、このカーネルが
- 「HDDさん、これを記録しといて」
- 「CPUさん、これを計算しといて」
みたいにあれこれ指示するわけです。要するに管理者として働くわけです。
さていきなりですが、ここで仮想マシンの話をします。
仮想マシンいうのは「1つのパソコンで2つ以上のOSを同時に動かすこと」を指します。
例えば
パソコン ├ Windows └ Linux
という感じで
- 1つのパソコンの中にWindowsとLinuxをインストールする
- Windowsの中でLinuxを動かす
みたいな感じのことを仮想マシンといいます。(この場合、Linuxが仮想マシンです)
ただし、ここで問題があります。
それは
Linuxがパソコンに何か命令したいときは、Windows経由で「パソコンさん、これを計算しといて」という風に指示しないといけない
という点です。
このような余分な伝達のせいで動作が遅くなってしまいます。
これを何とかしようということで、ハイパーバイザーという仕組みが作られました。(そうなのかは知らないですが。。)
以下のように、パソコンの上にハイパーバイザーという名の土台を作って、その上に色々なOSを動かします。
パソコン
└ ハイパーバイザー
├ Windows(ホストOS)
└ Linux (ゲストOS)
このようにすることで、例えば
- Windowsがパソコンに何かさせたいときは・・・
- ハイパーバイザーに「パソコンにこれを計算させてください」と命令する
- ハイパーバイザーはPCに「パソコンさん、これを計算してください」と命令する
- Linuxがパソコンに何かさせたいときは・・・
- ハイパーバイザーに「パソコンにこれを計算させてください」と命令する
- ハイパーバイザーはPCに「パソコンさん、これを計算してください」と命令する
- Linux・Windowsがお互いに通信したいときは・・・
- ハイパーバイザー経由で通信する
という感じで、ハイパーバイザーがスーパーバイザーたちの管理者的なポジションになります。
すべてをハイパーバイザー経由にすることで、高速に動作するようになる・・・らしいです。
Windowsのハイパーバイザ → Hyper-V
例えばWindowsには「Hyper-V」という名前のハイパーバイザーがあり、Hyper-VをONにした状態で起動すると
パソコン
└ ハイパーバイザー(Hyper-V)
└ Window
という構成で起動します。
WSLとWSL2
WSL2(Windows純正の仮想マシンソフト)をインストールして、Windows上のWSL2でLinuxを動かすと
パソコン └ ハイパーバイザー(Hyper-V) ├ Windows(ホストOS) └ Linux (ゲストOS)
という感じで、ハイパーバイザー上で仮想マシンを動かせます。
ちなみにWSL(WSL2ではない)は、HyperーVを使わないらしいので
WSLでLinuxを動かした場合は以下のような感じになります。
パソコン └ Windows └ WSL └ Linux
なので、WSL2はWSLより高速らしいです。(どこで見たか忘れたのですが約6倍くらい早いとか)
VirtualBox → ハイパーバイザーではない?
例えば、WindowsでVirtualBoxをインストールして、VirtualBox上でLinuxを動かすと
パソコン └ Windows └ VirtualBox(ホスト型仮想マシン) └ Linux
という構成になります。
このとき起動したLinuxは、広義の意味では「ホスト型のハイパーバイザー」などと呼ぶらしいですが、狭義ではハイパーバイザーではなく、「ホスト型仮想マシン」などと呼ぶらしいです。
ザックリ説明するとこんな感じです。
おわり
コメント