仮想化の5レベルについて

概要

  • コンピュータの仮想化技術について、どのレイヤーで仮想化するのかを5つのレベルに分けて分類する方法があったので調査した

5つの仮想化レベル

5 Levels of Virtualization
https://www.hitechnectar.com/blogs/virtualization-implementation-levels/

Instruction Set Architecture(ISA) Level

  • プロセッサと命令セットの間を抽象化する仮想化
  • Instruction Setは日本語で命令セットのこと
    • 命令セットとは、あるマイクロプロセッサCPU)が使用できる命令集合のことである。
      https://www.weblio.jp/content/Instruction+Set
    • 命令セットが同じであれば、異なる内部設計のプロセッサでも同じ機械語プログラム(バイナリコード)をそのまま動作させることができる。一般的には同じ製品系列のプロセッサでも世代が下るごとに命令が追加されて機能が拡張されるため、古いプロセッサ向けのコードはそのまま新しいプロセッサでも動作するが、逆はできないか困難という関係になる。
      https://e-words.jp/w/%E5%91%BD%E4%BB%A4%E3%82%BB%E3%83%83%E3%83%88.html
  • 異なる命令セットのエミュレーションを行う仮想化技術で、本来動かない仕様のプロセッサで命令を実行することができる
  • 基本的にはコード解釈(code interpretation)、動的バイナリトランスレーション等の技術によってエミュレーションされる

Hardware Abstraction Layer(HAL) Level

  • I/Oデバイスやメモリなどの物理デバイスとOSの間を抽象化する仮想化
  • Cloud環境で作成するVirtual Machineがこのレベルにあたることが多い
  • Hypervisor等で作成されたVirtual Machine(VM、ゲストOS)がデバイスを使用できるようになる

OS Level

  • OSとアプリケーションの間を抽象化するための仮想化
  • OS上で隔離された環境を作ることができ、一つの物理マシンを複数のユーザーが使う場合に有用
  • HALレベルの仮想化と比べてVMやゲストOSを作成する必要がないため、軽量に動作する
    • VMと対応して、Virtual Execution Environment(VE)、Virtual Private System(VPC)、Containerと呼ばれたりする
  • Dockerで有名なContainerはこのレベルの仮想化にあたる

Library Level

  • ユーザーとライブラリ間を抽象化するための仮想化
  • User-level Application Binary Interface(ABI)やAPIエミュレーションとも呼ばれるらしい
  • OSを実行する環境ではなく、エイリアンプログラム(本来動かない環境でもプログラムが動くように変換するイメージ)を実行するための環境を作成する
    • Windows Application Binary Interface(WABI)
    • Ixrun
    • WINE
    • Visual MainWin
    • vCUDA

Application Level

  • 一つのアプリケーションのみを抽象化する仮想化
  • アプリケーションが必要とするすべての機能をネイティブにサポートしていないランタイム環境でアプリケーションを実行できるようにする手法
  • 多くの場合、アプリケーションはプロセスとして実行されるため、Process-level virtualizationとも呼ばれるらしい
  • High level language(C++など現在一般的に言うプログラミング言語)が利用されているマシンではこのレベルの仮想化が使われている

参考

項目調査まとめ

Posted by ttnt