この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "仮想86モード"
仮想86モード(かそうはちろくモード)は、IA-32のプロテクトモードの特殊なもので、16ビットx86(8086)のほぼ完全な仮想化の提供をハードウェア的に支援するものであることが特徴である。 仮想86モードの実行環境は、プロテクトモードで動作する仮想86モニタおよび仮想86モードで動作する仮想86タスクの2つで構成される。 仮想86タスクにおいては、セグメントレジスタを使ったアドレスが単純な16ビットシフトしたアドレスのベースに加算されたり、普通の演算命令、ジャンプ命令などはプレフィックスが無い限り16ビットに解釈されたりするなど、8086およびリアルモードに似た動作をする。ただし、仮想86モードは特権レベルが3に固定されているので、CPUの実行モードを制御する命令やソフトウェア割り込み命令、入出力命令、フラグレジスタへのアクセスなどのシステムの動作に関わる命令は制限がかかる。 制限のかかった命令は基本的にはトラップされ、仮想86モニタによって処理されるが、入出力命令は仮想86タスクの制御構造体にある許可ビットマップにより、ポートごとに直接ハードウェアにアクセスするか、トラップを起こして仮想86モニタに制御を移すかを選択できる。また、これに加えてPentium以降に実装された仮想モード拡張 (VME) を使うと、ソフトウェア割り込み命令をタスク内で処理するかどうかを割り込みの種類ごとに設定することや、フラグレジスタへのアクセスをトラップを起こさずに仮想化し、割り込み禁止区間のエミュレーションができるなど、仮想86モードの実行の効率化ができるようになっている。 通常想定されるような、Windows上でMS-DOSアプリを動かしたり(仮想DOSマシン)、32ビットOS上でグラフィックカード上のROM BIOSにアクセスして初期化するというような用途のほか、x86の制限を緩和する目的では各種トリックが必要だったため、他にも多くの利用があった。 MS-DOSのデバイスドライバとして、仮想86モニタを含み、ページングを行うことによってEMSのインターフェイスを実装する仮想86EMSと呼ばれるものでは、実アドレスにはBIOS ROMなどが存在する640KBから1MBまでの領域を仮想化するために使われている。また、DOSエクステンダでは、プロテクトモードでプログラム本体は動作しつつ、DOSのシステムコールやBIOSのコードはリアルモード相当で動作させる必要があるため、このモードを使っている。 x64(Intel 64やAMD64)の64ビットモード(ロングモード)のもとでは、このモードは使用できない。そのため、エミュレーションなどの新たな対応が必要になっている。
概要
使用例
具体例
DOSエクステンダ
Windows/386以降のDOS互換環境
OS/2 2.0以降のDOS互換環境 (MVDM)
歴
仮想化
全体
PopekとGoldbergの仮想化要件
ハイパーバイザ
準仮想化
PowerVM
x86仮想化
プラットフォームの
仮想化
(仮想マシン)
ハードウェアレベル
PR/SM
LPAR
LDOM
仮想86モード
インテルVT
AMD-V
ブレードサーバ
ハードウェア仮想化
I/O仮想化(英語版)
ソフトウェアレベル
bhyve
z/VM
VMware
VMware Fusion
Hyper-V
WPAR
Sun xVM(英語版)
Bochs
KVM
PearPC
QEMU
Xen
VirtualBox
jail
Linux-VServer
cgroups
LXC(Docker)
Parallels Desktop
Parallels Virtuozzo Containers
OpenVZ
libvirt
User Mode Linux
Lguest
OSレベルの仮想化
アプリケーション仮想化
デスクトップ仮想化
言語レベル
バイトコード
Java仮想マシン
CLR
LLVM
Lua
リソースの仮想化
CPU
タイムシェアリング
メインメモリ
仮想メモリ
ディスク装置
RAID
LVM
仮想ファイルシステム
ディスク仮想化ソフト
ネットワーク
VLAN
VPN
仮想ハブ
仮想ネットワークIF
仮想LANカード
HiperSocket
チャネルボンディング
NAT
その他
仮想アプライアンス
エミュレータ
マイクロプログラム方式
互換レイヤー
オブジェクト指向
カプセル化