仮想86モード
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "仮想86モード" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2020年10月)

仮想86モード(かそうはちろくモード)は、IA-32プロテクトモードの特殊なもので、16ビットx868086)のほぼ完全な仮想化の提供をハードウェア的に支援するものであることが特徴である。
概要

仮想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

LXCDocker

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


その他

仮想アプライアンス

エミュレータ

マイクロプログラム方式

互換レイヤー

オブジェクト指向

カプセル化


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:18 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef