仮想化
virtualization
ハードとOSの間に、OSもしくはOSのような層を差し込む
1つのハード上に複数のOSを安全に共存させる
ちゃんと理解していないので、このノートは割とカオスになっているmrsekut.icon
hypervisorやシステムVMなども踏まえてちゃんとまとめたい
プラットフォーム仮想化
https://ja.wikipedia.org/wiki/仮想化#プラットフォーム仮想化
エミュレーション
CPUを完全にエミュレーションする
別のハードウェアのソフトも使える
重いのでパフォーマンスは落ちる
ネイティブ仮想化
エミュレーション不要で高速
同じアーキテクチャのCPUでなら使用可
ハードウェアに依る仮想化
部分仮想化
仮想記憶
準仮想化
OSレベルの仮想化
アプリケーション仮想化
リソース仮想化
https://ja.wikipedia.org/wiki/仮想化#リソース仮想化
サーバ仮想化
ストレージ仮想化
ネットワーク仮想化
デスクトップ仮想化
完全仮想化
ホストOSの上にゲストOSをインストール
他に影響を与えうる命令を実行すると割込みが発生し、hypervisorがその処理をする
PopekとGoldbergの仮想化要件
https://ja.wikipedia.org/wiki/PopekとGoldbergの仮想化要件
https://yubessy.hatenablog.com/entry/2016/09/11/162035
https://yuyarin.hatenadiary.org/entry/20110113/1294889935
最新のIntel系CPUに搭載されている仮想化支援技術
VT-x
ユーザーモード(3)、特権モード(0)の下に、ハイパーバイザー用OSのモード(-1)がある
ゲストOSからホストOSへの処理の移譲が必要な操作を効率よくフックできる
https://ja.wikipedia.org/wiki/インテル_バーチャライゼーション・テクノロジー
VT-d
外部ハードウェアとのアクセスでホストOSを解さずに実行できる
PCIパススルー
VT-c
ネットワークの仮想化
拡張ページテーブル
ゲストとホストのメモリアドレスの変換を行う
OSが提供する支援機能
Windows
Hyper-V
Mac
Hypervisor.framework
Linus
KVM
仮想化のためのソフトウェアの例
Oracle VirtualBox
Hyper-V
Parallels
VMWare
QEMU
Xen Server
参考
https://ja.wikipedia.org/wiki/仮想化
まとめ方が良いmrsekut.icon
『Goならわかるシステムプログラミング 第1版』
「仮想化」と読んでるものが、このノートの一部の概念のみになっている
https://www.fsi.co.jp/solution/vmware/knowledge/virtualization.html
https://thinkit.co.jp/free/article/0702/16/1