仮想メモリと仮想プロセッサのアナロジーを描きたいと思います。
期待から始める:
- ユーザープログラムは、メモリがどのように見えるかについての一連の期待に反して作成されています(フラットで、大きく、連続的なメモリモデルが最適です...)
- OSシステムは、ハードウェアのパフォーマンス(使用可能なCPU保護モードの動作、割り込みの到着とブロックおよび処理の方法、IOデバイスとの通信方法など)の一連の期待に照らして作成されています。
ハードウェアまたは抽象化レイヤーによって期待に直接応えることができることを理解してください
- 仮想メモリは、(特殊な、単純なチップにはない)ハードウェアツールとOSサービスのセットであり、OSが実際のメモリを忙しく分割している場合でも、ユーザープログラムにその素晴らしいフラットで大きな連続メモリスペースがあると偽装します。メモリを小さな断片に分割し、それらの一部をディスクに保存し、他のメモリを元に戻し、それ以外の場合は実際のハッシュを作成します。しかし、あなたのコードは気にしません。すべてがうまくいきます。
- 仮想プロセッサシステムは、一連の(特殊な、消費者向けCPUにはない)ハードウェアツールとハイパーバイザーサービスであり、OSは、予想される保護モードや割り込みなどを備えた1つ以上のプロセッサに直接アクセスできると信じることができます。ハイパーバイザーは、OSコンテキスト全体を1つ以上の実際のプロセッサとの間で忙しく交換したり、IOバスへのアクセスを開始および停止したりします。しかし、OSは気にしません。すべてがうまくいきます。
これを行うためのハードウェアサポートは、「デスクトップ」CPUで利用できるようになったのはごく最近のことですが、BigIronは何年も前から利用できます。いくつかの理由で便利です
- 保護。適切に保護されたOSでは、あるプロセスまたはユーザーが別のプロセスをスパイすることは困難です。ただし、同じコンテキストに常駐できるため、それでも可能である可能性があります。OSを仮想化すると、OSが別のさらに細いチャネルで分割され、データの漏洩や悪意のある行為がはるかに困難になります。
- 堅牢性。OSコンテキストをスワップインおよびスワップアウトできる場合は、それらを1台のマシンから別のマシンに移行し、チェックポイントを設定して再起動します。これにより、独自のプロセッサで障害を検出し、正常に回復するコンピュータが可能になります。
これらは、(高度にデバッグされたミッションクリティカルなコードの何百万ものLOCを除いて)人々がBigIronにお金を払わせ続けてきたものです。