XPでは、システムやアプリケーションの起動、休止状態からのリジュームなどを高速化するために「プリフェッチ」という機能が追加されている。システムやアプリケーションの起動時間は短い方がよいに決まっている。2000では、起動に1分以上はかかっていた。XPでは、この起動時間を、一般的なクライアントPCでは30秒以内、休止状態からの再開を20秒以内、サスペンドからの復帰を5秒以内にするという目標を立てて、高速化のためのさまざまなの対策を施している。600MHz+メモリ384Mbytes、ディスクはIDEが2台のほかにSCSIが1台接続されているので、初期のプローブ時間がIDEのみのマシンに比べてやや長い。Proだと1分10秒程度であった)。高速化のために行われた対策としては、例えばデバイス・ドライバの初期化や各種のサービスの起動などをすべて同時並行的に行い(従来は各デバイスやサービスを1つずつ順番に初期化、起動していた)、全体的な待ち時間をなるべく少なくするなどの工夫を行っている。効果の大きなものは、プログラムのプリフェッチによるロード時間の短縮であろう。9x/Me/2000/XPのような仮想記憶を採用したOSでは、最初にプログラム全体を物理メモリ上に読み込むのではなく、必要に応じて随時ディスクからメモリへとプログラムのコードを読み込みながら実行している。最初にすべて読み込むとすると、非常に大量のメモリが必要になるが、このようなオンデマンドの仮想記憶方式(要求があったページを随時読み込む方式)ならば、少ないメモリ量でも大きな(多数の)プログラムを効率よく実行することができる。これではシステムやプログラムを高速に起動することは難しい。実際にプログラムがページ・フォルト(まだ読み込んでいない部分へのアクセス)を起こして初めてディスクへのアクセスが行われるので、ディスクI/O処理が逐次的な処理になってしまうからだ。XPの「プリフェッチ」機能である。これはプログラムの動作をトレースして、ディスク上のプログラム・ファイルがどのようにアクセスされるかを調べておき、その結果に基づいてあらかじめディスクから先読みしておくという機能である。これによりページ・フォルトの発生とそれに伴うディスクからの読み出し待ち時間が抑えられ、結果として起動を高速化することができる。最初の1回はトレース・ログのデータが存在しないので起動は速くならないが、2回目以降の実行ではそのログに基づいてディスクが先読みされるので、高速に起動することができる。ディスクへのアクセス・ログは、システムが起動したり、プログラムがロード/実行される場合に自動的に採取される。デフォルトでは、システムの起動直後の2分間や、各アプリケーション起動直後の10秒間などのディスクのアクセス・ログが記録される。アクセス・ログは各プログラム・ファイルごとに記録され、その結果は%windir%\Prefetchディレクトリに格納される。各ファイルには、それぞれのプログラムごとのディスクへのアクセス・パターンのデータが記録されており、プログラム起動時には、これらのデータに基づいて積極的に先読みすることにより、起動時間を短縮するようになっている。実際には、プログラムを構成するファイルだけでなく、ディレクトリ領域やNTFSのMFT領域(NTFSファイル・システムにおいて、ディスクの管理用として使われる特別な領域)などもプリフェッチの対象となっているので、より高速化の効果が高くなっている。ディスク・プリフェッチのログプログラムが起動すると、その最初の何秒間かのディスク・アクセスの結果がこのログ・ファイルに記録される。ログ・ファイルはそれぞれのプログラムごとに作成される。NOTEPAD.EXEのログ・ファイルはNOTEPAD.EXE-336351A9.pfなどという名前になる。次回以降はこのファイルの内容に基づいてあらかじめディスク上のデータが先読みされるので、ディスクのI/O待ち時間が短縮され、起動が速くなる。プリフェッチの結果を格納するディレクトリはデフォルトでは%windir%\Prefetch。プログラムごとのディスクへのアクセス・ログ・ファイル。この内容に基づいて次回起動時にはディスクからのプリフェッチ(先読み)が行われる。ブート時のログは特別にNTOSBOOT-B00DFAAD.pfというファイルに記録される。実際にブート・シーケンスにおけるディスク・アクセスなどがどのように高速化されているかを以下に示す。XPのブート状況を表示するツール(bootvis.exe。http://www.microsoft.com/hwdev/fastboot/より入手可能)である。ディスクのプローブ(システムに接続されている各種のディスク・ドライブの検出)が終了したあと、プリフェッチ機構が働いてブート・シーケンスで使用するプログラムを最初にいっせいにロードしていることが分かる。Professional起動時のCPU/ディスク・アクティビティ・レポート。LOADER起動後からの秒数とその後の動作状態が分かる。最初にディスクのプローブ(検出)が14秒あるが、これはディスク・ドライブがあるかどうかをタイム・アウトするまで待つ方法で調査しているので、これ以上高速化できない。ディスクが接続されていないインターフェイスやポートがあるなら、BIOSなどで設定を「なし(NONE)」にしておくと、無駄なプローブ処理が省かれるのでより高速化できる。15秒〜29秒までがプリフェッチ・シーケンス。その後はディスク・アクセスの頻度が少なくなり、CPUがフルに稼働している。最終的には46秒で「ようこそ画面」が表示された。XPシステムとは関係ない部分なので、これを短くすることは不可能。NTLOADERの稼働時間。これも短くすることはほぼ不可能(実際にはほんの1、2秒なのでこれ以上は短くならないが)。ディスクのプローブ(検出)シーケンス。タイム・アウトするまで待ってディスクの有無を調べているので、CPUもディスクもほとんど稼働していない。プリフェッチ・シーケンス。ここで一気に必要なデータをディスクから読み込む。デバイス・ドライバの初期化。プリフェッチとほぼ並行している。レジストリ・アクセスとページ・ファイルの初期化。ビデオ関連の初期化と表示の準備。このあたりで「ようこそ画面」が表示される。CPUのアクティビティ。ブート・シーケンスの後半はほぼフル稼働。ディスクのアクティビティ。プリフェッチの部分がフル稼働しているので、後半はアクティビティが低くなる(それだけプリフェッチが効果的ということ)。(2017/7/21)キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。