エンジニアなら知っておきたい仮想マシンのしくみ

第1回 x86仮想マシンことはじめ

この記事を読むのに必要な時間:およそ 3 分

ここ数年,インテルx86系プロセッサを使ったコンピュータ(以下x86システム)で仮想マシンを利用する機会が増えています。

x86システムの上で仮想マシンを使うのはこれまで開発者をはじめITエンジニアが多かったように思いますが,企業のサーバ統合などに広く使われるようになり,今ではWindows 7にXP Modeが搭載されるなど,デスクトップ環境においても広く見かけるようになりました。このように仮想マシン技術はとても身近なものとなってきています。

また,仮想化は,コンピュータリソースの柔軟かつ効率的な運用管理を実現するために用いられ,クラウドコンピューティングの基盤にも用いられる重要な技術のひとつとなっています。

このように,x86システムの仮想化技術はたいへん注目されていますが,その仮想マシン技術がどのようなギミックで実現されているのかを知っているITエンジニアの方は,まだまだ少ないように思います。仮想マシン技術に限ったことではありませんが,その技術のしくみを理解していなければ,「これは仮想化できるのか?」「これは仮想化して大丈夫なのだろうか?」といった類いの疑問を持った際,適切な判断ができません。

今回,「エンジニアなら知っておきたい仮想マシンのしくみ」というテーマで,多くの方のx86仮想マシンの裏側について理解していただくべく,「知る人ぞ知る」という状況になっている動作ギミックに光をあてて解説していきたいと思います。

仮想化とはなにか

仮想化とは,1つのコンピュータリソースを分割して複数のように見せたり,逆に複数のコンピュータリソースをまとめて1つのリソースに見せたりする手法を指します。

仮想化(Virtualization)という考え方のはじまりは,1970年ごろのことになります。その頃,コンピュータは非常に高価で,多数の利用者が1つのコンピュータをシェアする運用が一般的でした。しかし,利用者ひとりひとりが別々のOSを使いたいなど,ニーズは多様化していきました。その結果,ひとつのコンピュータを単に共有するのではなく,複数のコンピュータのように分割して利用できるような仕組みが検討,考案されました。それが仮想化のはじまりです。

図1 仮想化前と仮想化後

図1 仮想化前と仮想化後

x86プロセッサの歴史

x86の仮想マシンについて解説するにあたり,まずはインテルCore iプロセッサやCore2プロセッサなどに代表されるx86系のプロセッサについて紹介しておきましょう。

x86系プロセッサの起源は,1978年まで遡ります。1978年に,インテルは,最初のx86系プロセッサとなったIntel 8086を発表しました。このプロセッサは16ビットのプロセッサでした。

x86系プロセッサの元祖 Intel 8086

x86系プロセッサの元祖 Intel 8086

その後,Intel 8086は改良を繰り返され,1983年にはIntel 80386と呼ばれる32ビットのプロセッサを発表します。このプロセッサでは8086互換の機能(リアルモード)に加えて,新たに追加された機能群を利用できる「プロテクトモード」が使えるようになりました。現在わたしたちが使っているx86系のアーキテクチャは,ソフトウェア側から見てIntel 80386の頃に大方完成したと言っても過言ではないでしょう。

その後も,x86系プロセッサのアーキテクチャは何度も刷新されましたが,今でもなお80386の頃の機能を踏襲しています。現在のプロセッサは,過去のものと互換性を維持したまま,より多機能で,より高速で,よりたくさんメモリなどのハードウェアリソースを利用できるようになりました。また,当初は1プロセッサあたり1コアのみ実装されていましたが,今では2コア,4コア,そしてそれ以上といった具合に同時に複数の命令を処理できるマルチコアプロセッサになるなど,進化は続いています。

システム仮想マシン

皆さんはどのようか仮想マシン技術をご利用,もしくは興味をお持ちでしょうか。有名な仮想マシンソフトウェアとしてはVMware社によるESX Serverをはじめとする仮想化ソリューションやMicrosoft社によるHyper-V,そのほかオープンソース起源となるKVMやXenなどを目にされることが多いのではないでしょうか。

先に挙げた仮想マシン技術は,どれも下記の特徴を持っています。

  • x86システムの上で動く
  • x86システムを再現する
  • x86システム用のソフトウェア(オペレーティングシステム)が動作する

このような仮想マシンは,x86システムの機能(CPU,メモリ管理,その他のI/Oデバイスなど)をプログラム的に再現し,x86システム用ソフトウェアの実行が可能な仕組みとなっています。便宜上,本連載ではこのような仮想マシンを,x86仮想マシンと呼びたいと思います。また,x86仮想マシンのように,オペレーティングシステムが実行できる特徴を持つ仮想マシンのことを,システム仮想マシン(System Virtual Machine)と呼びます。

最近の市販ゲーム機には,過去のゲーム機向けのソフトウェアをインターネットからダウンロードして遊べる機能が搭載されています。これらの機能は,旧式ゲーム機をソフトウェア的に再現した仮想マシンが用意されており,その上で旧作ゲームを実行する仕組みとなっています。これらも,広義のシステム仮想マシンのひとつと言えます。

著者プロフィール

長谷川猛(はせがわたけし)

(株)SRAで7年間のシステム構築&提案を経験したのち,Fusion-ioのセールスエンジニアを経て,フリーランスエンジニアとして活動中。『LDAP Super Expert』(技術評論社)に寄稿したほか,『Xen 徹底入門』(翔泳社)および『萌え萌えうにっくす!UNIX ネットワーク管理ガイド』(毎日コミュニケーションズ)の共著者のひとりである。

スノーボード,ごまラーメン,飼い犬のミニチュアシュナウザー「ラピス君」が大好き。

コメント

コメントの記入