書籍「Windows Internals(Microsoft Press発行)」の共著者として知られるMark Russinovich博士が,Windows Hardware Engineering Conference(WinHEC 2007)の5月16日の基調講演で,2007年末にリリースが予定されている「Windows Server 2008」(写真1)のカーネルとコア・コンポーネントにおける強化点について語った(写真2)。Russinovich博士は現在,米MicrosoftのWindows Platform and Services DivisionのTechnical Fellowを務めている。
プラットフォーム関連やプロセス/スレッド関連などそれぞれのカテゴリにおいて,Windows Server 2008を従来のWindows Serverと比べた場合の主な強化点は以下のとおり。
●プラットフォーム・サポート
・Dynamic Partitioning
以前のWindows Serverではハードウエアのアップグレードや保守の際にはシャットダウンする必要があった。Windows Server 2008(以下,Server 2008)ではリブートせずにハードウエア構成を変えられる。
・Hardware Error Reporting
以前はハードウエア・エラーが統一された方法でレポートされなかった。Server 2008では「Windows Hardware Error Architecture(WHEA)」と呼ばれる共通のエラー・レポーティング基盤を導入する。
●プロセスとスレッド
・Time Accounting
以前はCPU時間をインターバル・クロック・タイマー(10~15ミリ秒間隔)で計測していたので,スレッドの終了が平等でない場合があった。Server 2008では「Time Stamp Counter(TSC)」を読んでコンテキストをスイッチする。
●I/O(入出力)とファイル・システム
・Self-Healing NTFS
以前はNTFSに障害が起こった場合に必要になるChkdskを動作させるのに,OSをリブートする必要があった。Server 2008ではバックグランドでChkdskタイプの修正を実行できる。
・SMB2
Windowsがファイル共有に用いるプロトコル「SMB」はNTFSに適用できなかったが,Server 2008はNTFSをサポートする「SMB2」を新たに備える。
・I/O Prioritization
以前はI/Oの優先付けはスレッドのCPUの優先度に基づいていたが,Server 2008ではI/Oに優先付けする。
●メモリー管理
・Dynamic System Address Space
以前はシステムの仮想メモリー空間は固定した領域に区分されていたが,Server 2008では必要に応じて仮想メモリー空間を割り振れるようになる。
●スタートアップとシャットダウン
・Parallel Session Creation
以前はセッションの生成はシリアルに行われており,Terminal Serviceのボトルネックになっていた。Server 2008ではそれぞれのセッションを初期化するのに,それ自身のインスタンスを生成する。
・Clean Service Shutdown
以前は,サービスはシャットダウンまでに許される時間を延長できなかったためにデータを損なう原因になっていた。Server 2008ではサービスは事前のシャットダウン通知を要求できる。
●信頼性とリカバリ
・Kernel Transaction Manager
以前は,ファイルやレジストリ・キーの変更に伴うエラーから復帰するために,アプリケーションが処理をしなければならなかった。Server 2008は,一般的に利用できるトランザクション・マネージャを実装する。
・Better Handling of Process Crashes
以前はハンドルされない例外は,例外を起こしたスレッドのコンテキストの中で処理する必要があった。Server 2008では,ハンドルされない例外は「Windows Error Reporting(WER)」サービスにメッセージを送る。
●セキュリティ
・Address Space Load Randomization(ASLR)
以前はカーネル,HAL,実行ファイル,DLLは固定した場所にロードされており,バッファ・オーバーフロー攻撃の温床になっていた。Server 2008では,ロードするたびに256個のランダムなポイントのいずれかにモジュールを置く。
・Service Security Hardening
以前はサービスのバグが特権昇格攻撃を許していた。Server 2008ではサービスをより小さい特権に適用することで,システムを危険にさらさないようにする。