先頃開催されたMicrosoftの開発者向けイベント「BUILD」で、遂にWindows 8(開発コード名)や同サーバー版、開発ツールに関しての全体像が公開され、Windows 8は開発者プレビュー版も一般公開されるに至った。同版に関しての導入はこちらの記事をご覧頂き、本レポートではWindows 8や、それを取り巻く事柄に関する情報をお送りする。

ハイバネートで高速起動を可能にしたWindows 8

我々は常にOSの起動に必要な時間に悩まされてきた。職場にあるコンピューターの電源ボタンを押し、Windows OSが完全起動するまでの待ち時間。持ち歩いているバックを片付ける人もいれば、給湯室でコーヒーを入れる人もいるだろう。このダウンタイムは、コンピューターの電源制御仕様であるACPI(Advanced Configuration and Power Interface)の進化により、スタンバイ(スリープ)やハイバネート(休止状態)という復帰時間の短縮で大幅に改善された、かのように見える。

スタンバイやハイバネートを実行するには、Windows OS上で動作するデバイスドライバー側の対応が欠かせず、仕様に沿っていないデバイスドライバーが組み込まれていると、正しくスタンバイモードに移行しないだけでなく、復帰時にハングアップするケースも少なくなかった。筆者の記憶では、Windows XPがリリースされた当初に同様のトラブルが多発していたが、サードパーティメーカー製デバイスドライバーの改善が繰り返されることで、現在のWindows 7では安定してスタンバイ/ハイバネートの実行が可能になったのである。

そのため、コンピューターの電源を完全に切るような場面は少なくなってきたが、現在でもデバイスドライバーの更新や、毎月リリースされるセキュリティ修正プログラムの導入では、コンピューターの再起動を強いられてしまう。つまり、スタンバイ/ハイバネートの有用性が高まっても、Windows OSの起動/終了におけるダウンタイムは重要なのである。

Windows 8における改良点のひとつが、この起動/終了における所要時間の短縮。Windows 7ではシャットダウン時に、アプリケーションの終了を要求し、それを終えてからユーザーセッションの終了を実行。続いてサービスの終了、各デバイスに終了通知を行ってから、システムセッションの終了を実行する。Windows 8では、このシステムセッションを終了せずハイバネートモードに移行させ、終了時間の短縮を実現した。

一見するとハイバネーションの実行は時間がかかるように思えるが、システムセッションで消費しているメモリ容量は少ないため、ディスクへの待避時間もさほど影響を与えないという。Microsoftのテスト結果によると30~70%の速度改善が見られたそうだ。また、CPUのマルチコアを平行利用することで、ハイバネーションファイルの読み込みと展開を並行的に実行可能になり、従来のハイバネートモードからの復帰も高速化される(図01)。

図01 従来のハードブートとWindows 8のブートプロセスをグラフで現したもの。ハイバネートファイルを読み込むことで、システム初期化時間を大きく短縮している(公式サイトより)

冒頭で述べたダウンタイムは、ハイバネートシステムの改良によって大幅に短縮されたが、コンピューターのマザーボードがUEFI(Unified Extensible Firmware Interface)をサポートしている場合は、大きな恩恵を受けられるようだ。公式ブログに掲載された動画は、SSDを搭載したコンピューターでWindows 8の高速スタートアップを実行したものだが、バッテリを装着してコンピューターの電源を入れてから、ものの数秒でメトロスタイルが映し出されている(図02~03)。

図02 UEFIベースのコンピューターにSSDを装着し、Windows 8を起動するデモ。ものの数秒でWindows 8のメトロスタイルが映し出された(公式サイトの動画より)

図03 コマンドラインから電源操作を行う「shutdown.exe」には、新たに「/full」オプションを搭載。ハイバネートモードを使用せず、コンピューターを完全シャットダウンする場合は、同オプションを使用する(GUI実装も行われる予定)

そのためBIOS環境でWindows 8を使用した場合、どの程度の恩恵を受けられるかわからないが、コンピューターのリプレースを予定しているユーザーに、Windows 8のリリースは良い機会になるだろう。

Hyper-Vは互換性問題を完全解決に導けるか

前回の記事で触れたように、Windows 8ではHyper-V 3.0が搭載される予定だ。そもそもHyper-Vとは、仮想マシンを実現するための仕組みであり、Windows Server 2008などサーバー向けOSの一機能として実装されてきた、今後の仮想マシンやクラウドコンピューティングを担う重要な要素である。

元々Microsoftは、米Connectix社が開発・販売していたVirtual PCを買収し、同社の冠を付けて販売していた。Windows 7の上位エディションに用意された「Windows XP Mode」も、イメージファイル化したWindows XP Service Pack 3と、改良を加えたMicrosoft Virtual PCをセットにしたパッケージである。また、数年前には同社から買収したサーバー製品をMicrosoft Virtual Server 2005として無償公開していたのも記憶に新しい。

このサーバー向け機能であるHyper-Vに改良を加えたのが、Windows 8用Hyper-V 3.0である。使用可能条件として4GB以上のメモリを搭載したコンピューターに64ビット版Windows 8を導入した環境で使用可能になり、VMコンソールもしくはリモートデスクトップ接続を用いて仮想マシンにアクセスするという仕組みだ。

そのため、32ビット版Windows 8(Developer Preview版。以下省略)では、Windows Features(日本語版では「Windowの機能の有効化または有効化」)に肝心のHyper-V Coreが列挙されず、サーバーのHyper-Vを管理するHyper-V Management ToolとHyper-V PowerShell cmdletsのみ導入稼働である(図04~05)。

図04 32ビット版Windows 8(Developer Preview版)では、Hyper-V Coreを追加できないため、サーバー上で実行中のHyper-Vを管理するか、仮想マシンにアクセスするかできない

図05 VMware上で64ビット版Windows 8を実行してみたが、機能的なバッティングが発生しているのか、Hyper-V Coreの導入はできなかった

この説明だけでは使い勝手の面で、クライアントOS上で実行してきた競合製品(VMware PlayerやVirtual BOX)と競り合うのは難しいようにみえるが、Hyper-Vには現行バージョンである2.0で既にスナップショット機能が備わっているため、仮想マシン上を用いたアプリケーションの実験環境などにも使用できそうだ。

なお、今回Windows 8を触っていて気付いたポイントが下位互換性の強化。前述のHyper-Vに加え、16ビットアプリケーションが正しく動作させるために、16-Bit Application Supportという機能が用意されている。アイコンもWindows 3.1のプログラムマネージャーと同じという懐かしいもので、Win16の有効/無効を切り替えるものなのだろう(図06)。

図06 16ビット版アプリケーションの実行を可能にする16-Bit Application Support。64ビット版Windows 8には実装されていない

同機能を備えるのは、32ビット版Windows 8だけであり、64ビット版は仕様の問題で実装されていない。もちろん64ビットOSが一般的になりつつある現在、16ビットアプリケーションのサポートは不要と考える方も少なくないだろう。しかし、一部の32ビットアプリケーションはインストーラーが16ビットコードを含むため、64ビット版Windows OS上では動作しないというトラブルが多発したことをご存じだろうか。

このようなケースを踏まえると、Hyper-Vによる仮想マシン環境を標準サポートすることで、オールドアプリケーションの実行はあくまでも仮想マシンで行うか、Hyper-Vを完全実装できない32ビット版Windows 8は16-Bit Application Supportを用いて実行して欲しい、というMicrosoftの解答なのだろう。

阿久津良和(Cactus