2007-03-02

Mark Russinovich wrote about Vista Memory

Inside the Windows Vista Kernel: Part 1 Inside the Windows Vista Kernel: Part 2  前回、Mark Russinovichは、Vistaのプロセスと、I/O周りについて書いていた。今回は、メモリと、起動終了の改善、並びに、パワーマネジメントについてである。  Windows95の時代、メモリは4MBしかなかった(クールな奴等は8MB積んでいた) その時代には、その時代にあったメモリ管理の方法がある。Vistaではどうなるのか。昔と比べると、だいぶメモリの制約はゆるくなった。 ダイナミック カーネル アドレス スペース(Dynamic Kernel Address Space)  32bitのVistaは、当然32bitなアドレスを使う。とはいっても、上位2GBは、カーネルが使うので、アプリケーションは、下位2GBしかつかえない。2kでも、BOOT.INIを変更し、さらにアプリケーション側でも/LARGEADDRESSAWAREを指定すれば、3GBまで使えないことはない。Vistaは、OSが使う領域を動的に変更するようだ。これによって、わざわざ起動時に、メモリをどのように使うか指定しなくてもよくなったそうだ。もっとも、これは32BitOSの話であって、64BitOSでは、仮想メモリはふんだんにあるので、こんなことは考えなくて良い。 メモリ プライオリティ(Memory Priorities)  どうやら、メモリにも優先度を付けたようだ。ページ単位のメモリに対して、8段階の優先度があるようだ。 スーパー フェッチ(Super Fetch)  あるアプリケーションを使っていて、すこしコンピュータから離れる。このとき、ユーザの入力がないことを検知したバックグラウンドのプロセス(アンチウイルスやデフラグなど)は、メモリをふんだんに使う処理を始める。その後、ユーザが戻ってきて、アプリケーションを再び使おうとすると、やけに反応が鈍いことに気づく。なぜならば、そのアプリケーションのメモリは、大量のメモリを使うバックグラウンドのプロセスのため、スワップファイルに退避させられたからだ。ディスクから再び読み込まなければならないので、使い始めが遅く感じる。こういうことを防ぐため、OSはアプリケーションの挙動を見張り、ファイルアクセスなどを記録しておく。そして、優先度の低いプロセスで、あらかじめファイルを読み込んでおく。こうすると、ユーザが使おうとしたときに、反応が早く感じられる。 レディ ブースト(ReadyBoost)  HDDは大容量なのだが、遅い。特にランダムアクセスとなると、10ミリ秒単位のオーダーになる。なぜならば、HDDは物理的にヘッドを動かさなければならないからだ。RAMは早いが、高価である。ときに、フラッシュメモリというものがある。これは、ランダムアクセスが、HDDの10倍は早い。しかも、それほど高くない。何ぞこれを使わざる。そういうわけで、Vistaは、フラッシュメモリを、メモリとHDDとの間のキャッシュとして使う機能がある。これはスワップファイルとして用いられると思っていたのだが、どうもMark氏の説明によると、Super Fetchで用いられるらしい。ディスク上の読み書きされたファイルを、フラッシュメモリ上にも記録しておく。この際、圧縮がかけられて、およそ二分の一の容量にした上で、AESで暗号化するようだ。不意にフラッシュメモリがはずされた場合でも、セキュリティを確保できるというわけだ。フラッシュメモリは、ランダムアクセスは早いが、シーケンシャルアクセスには、HDDより弱い。そんなわけで、もしキャッシュにヒットしたとしても、読み込みがシーケンシャルだと判断した場合は、直接HDDから読み込みに行くようだ。 レディ ブート(ReadyBoot)  XPにもある、起動を高速にする工夫だが、Visataでも一工夫されているらしい。 レディ ドライブ(ReadyDrive)  フラッシュメモリのキャッシュを付加した、ハイブリッドなHDDのこと。 Boot Configuration Database  Boot.iniはなくなった。これからはBCDの時代だ。EFIという新たな仕組みに対応したり、色々な改良のため、Boot.iniは廃止されたらしい。 スタートアップ プロセス(Startup Processes)  セキュリティ上の理由で、今までカーネルモードだったプロセスをユーザモードに移したなどの話。 Credential Providers  ログオン時の認証のUIなど。いままでもGINAという仕組みで、サードパーティのUIを作れたが、簡単にしたり、複数作れたりできるようになったらしい。たとえば指紋認証など。 Delayed-Autostart Services  起動からログオンのパフォーマンス向上のための仕掛け Shutdown  シャットダウンの際に、汚いサービスへの対応など Power Management  もはやWindowsは、アプリケーションを信頼せず、20秒以上、ハイバネート(スタンバイのこと)を待つことはない。  次回は、VistaのReliabilityとSecurityについてだとか。

No comments: