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についてだとか。
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment