概要
『Windows Internals, 5th edition (英語)』は、『インサイド Microsoft Windows 第 4 版』の改訂版で、Windows Vista と Windows Server 2008 (32 ビット版および 64 ビット版) について扱っています。執筆者は、マイクロソフトの Windows Core Operating System Division のテクニカル フェローである Mark Russinovich と、オペレーティング システムの専門家で、Windows 内部についての講師でもある David Solomon (英語) です。また、OS の内部とセキュリティを専門とする Alex Ionescu が寄稿しています。
第 5 版は、第 4 版よりも内容が 25% 増えており、PatchGuard、Hyper-V のサポート、カーネル トランザクション マネージャー、I/O の優先度、SuperFetch、ReadyBoot、ReadyBoost、BitLocker、UAC、Windows 整合性メカニズム、サービス セキュリティの強化など、Windows Vista と Windows Server 2008 で新たに導入された機能も扱っています。また、この改訂版には、Process Explorer や Process Monitor などの Sysinternals ツールを使用する新しい実験や新しい例が盛り込まれています。
サンプル章
第 5 章「Processes, Threads and Jobs」(プロセス、スレッド、およびジョブ) 全体をダウンロード (英語) して、『Windows Internals』で提供される詳細な技術情報を確認してみてください。
書籍の内容
Windows のしくみを理解するのに必要な、アーキテクチャの全体像や内部の詳細を知る
国際的に有名な、内部に関する専門家のチームによる解説を通して、Windows オペレーティング システムのコア コンポーネントが背後でどのように動作するかを確認できます。この最高水準のガイドは、Windows Server® 2008 および Windows Vista® に対応するように全面的に改訂されており、システムの設計、デバッグ、パフォーマンス、およびサポートに関する主要なアーキテクチャ上の洞察を提供します。また、Windows 内部の動作をじかに体感するための実践的な実験が含まれています。
Windows のアーキテクチャと内部を掘り下げる
- システムと管理のコア メカニズム (オブジェクト マネージャーからサービスやレジストリに至るまで) がどのように機能するかを理解する
- カーネル デバッガーなどのツールを使用して、内部システムのデータ構造を確認する
- スケジューラーの優先度と CPU 配置のアルゴリズムを理解する
- Windows セキュリティ モデルの詳細について確認して、このモデルがデータへのアクセスを承認するしくみを理解する
- Windows がどのように物理メモリと仮想メモリを管理するかを理解する
- API、プロトコル ドライバー、ネットワーク アダプター ドライバーなどの、Windows のネットワーク スタックを徹底的に知る
- ファイル システムへのアクセスに関する問題やシステムの起動に関する問題のトラブルシューティングを行う
- クラッシュを分析する方法について学ぶ
ページのトップへ
目次
- Introduction (はじめに)
- Architecture (アーキテクチャ)
- System Mechanisms (システムのメカニズム)
- Management Mechanisms (管理のメカニズム)
- Processes, Threads and Jobs (プロセス、スレッド、およびジョブ)
- Security (セキュリティ)
- I/O System (I/O システム)
- Storage Management (記憶域の管理)
- Memory Management (メモリの管理)
- Cache Manager (キャッシュ マネージャー)
- File Systems (ファイル システム)
- Networking (ネットワーク)
- Startup and Shutdown (スタートアップとシャットダウン)
- Crash Dump Analysis (クラッシュ ダンプの分析)
ページのトップへ
書籍内で言及されているツール
Sysinternals で提供されていても紹介はされていない、この書籍内で言及されているツールには、次のようなものがあります。
- Notmyfault (Zip ファイル、234 KB): いくつかの方法でシステムをクラッシュさせるために使用する実行可能ファイルとドライバーです。Notmyfault は、第 7 章で、プール リークのトラブルシューティングについて説明するために使用されています。また、第 14 章では、クラッシュ分析の例で使用されています。ダウンロードには、完全なソースと、x86 バージョン (exe\release ディレクトリ内) と x64 バージョン (exe\relamd ディレクトリ内) が含まれています。
- Testlimit (Zip ファイル、148 KB): Testlimit は、オペレーティング システムにおける、同時に開かれるハンドル数のプロセスごとの制限について説明するために第 3 章で使用されていますが、このツールのコマンド ライン オプションを使用すると、プロセスとスレッドの作成に関する制限をテストすることもできます。
- Accvio (Zip ファイル、19.5 KB): 既定ではアクセスなしに設定されている仮想アドレス 0 を参照しようとすることで、ユーザー モードのアクセス違反を生成する実行可能ファイルです。これは、第 3 章で、アプリケーションがハンドルされない例外をトリガーしたときの Windows の動作を説明するのに使用されています。
- Iopriority (Zip ファイル、62.7 KB): このツールは、第 7 章で、システムが優先度の低い I/O よりも優先度の高い I/O を優先することについて説明するのに使用されています。これは、2 つのスレッドを作成し、1 つのスレッドに優先度の高い I/O を発行させ、もう 1 つのスレッドに優先度の低い I/O スレッドを発行させることで実現されます。このツールは、Wintellect の Jeffrey Richter によって作成されました。
ページのトップへ
正誤表
全般的なフィードバックをご提供いただける場合、誤りを見つけた場合、または次の版へのご提案がある場合は、[email protected] (英語のみ) まで電子メールをお送りください。このページに、訂正とツールの更新情報を掲載します。
p. 25: |
Table 1-3 の REGMON は PROCMON の誤りです。 |
p. 42: |
"lm mv nt" は "lm vm nt" の誤りです。 |
p. 66: |
太字で書かれている 'lm mv hal' というコマンドは 'lm vm hal' の誤りです。 |
p. 89: |
"...is at interrupt number 0x91..." は "...is at interrupt number 0x81..." の誤りです。 |
p. 132: |
experiment の手順 3 に出てくる
"Each offset can be mapped to each function with the ln command, by stripping off the bottom 4 bits"
は、次のように修正する必要があります。
"Each offset can be mapped to each function with the ln command, by shifting right by 4 bits"
また、ページ下部にあるカーネル デバッガー コマンドを、
ln KiServiceTable+(033021e0 & -16)
から
ln @@c++(((int*)@@(nt!KiServiceTable))[SYSCALL ID] >> 4) + nt!KiServiceTable
に修正する必要があります (SYSCALL ID は、システム呼び出しの番号です)。 |
p. 154: |
"The following command displays full details about the handle table for process ID 0x408" という箇所に出てくるプロセス ID 0x408 は 0xAAC の誤りです。 |
p. 162: |
HKLM\SYSTEM\CurrentControlSet\
Session Manager\Memory Management キーへの参照を、
HKLM\SYSTEM\CurrentControlSet\
Control\Session Manager\Memory Management に修正する必要があります。 |
p. 186: |
"The wait list head pointers are identical, so there are no waiting threads waiting on this object." という文は誤りです。待機リストの先頭ポインターは、オブジェクトで待機しているスレッドが 1 つだけ存在する場合にも同一になるためです。 |
p. 191: |
ExTryToAcquireResourceExclusiveLite については記載されていません。 |
p. 221: |
"Now follow the steps in the experiment Viewing Debugging Options" という箇所に出てくる "Options" は "Objects" の誤りです。 |
p. 237: |
ハイパーバイザーのプロセッサ割り当ての例は、正しくは "For example, one child partition could be scheduled on logical processors 1,2,3 and 4, while a second child partition is scheduled on processors 5 6,7 and 8" です。また、その後の "Note that the second" で始まる文は削除する必要があります。 |
p. 240: |
2 つ目の段落に出てくる "(KMT)" は "(KTM)" の誤りです。 |
p. 243: |
"82227ea5 ebfc jmp nt!FsRstTeardownPerFileContexts+0x169 (82227ea5)" という箇所に出てくるアドレス 82227ea5 の 1 つ目は、82228eaa の誤りです。 |
p. 252: |
HKLM\<SID>\Classes への参照は、HKLM\<SID>\SOFTWARE\Classes への参照の誤りです。 |
p. 263: |
手順 6 で、Regedit を起動するには、[Event] メニューの [Jump To] をクリックします。 |
p. 265: |
psexec コマンドで -i スイッチを指定すると、Process Monitor はセッション 0 のデスクトップで実行されます。 |
p. 497: |
SetSecurityInfo API と SetNamedSecurityInfo API への参照は、SetEntriesInAcl への参照の誤りです。 |
p. 520: |
experiment の箇所に出てくる handle コマンドを handle -a 15cd5 に修正する必要があります。 |
p. 596: |
"The GetQueuedCompletionStatus or GetQueuedCompletionStatusEx API allows..." は "The GetQueuedCompletionStatusEx API allows..." の誤りです。 |
p. 603: |
SetFileIoBandwidthReservation は SetFileBandwidthReservation の誤りです。 |
p. 673: |
Figure 8-14 の "Disk port driver" は、675 ページの Figure 8-15 のように、ミディアム グレーのボックスで囲む必要があります。 |
p. 716: |
"through which applications can disable DEP or their own images" は "through which applications can disable DEP on their own images" の誤りです。 |
p. 719: |
"32 bit Windows can support up to 128GB of physical" は "32 bit Windows can support up to 64GB of physical" の誤りです。 |
p. 724: |
"You can also examine the values of the kernel variables listed in Table 9-6" は "You can also examine the values of the kernel variables listed in Table 9-5" の誤りです。 |
p. 748: |
Figure 9-14 に出てくるアドレス FFFF080000000000 は FFFF800000000000 の誤りです。 |
p. 767: |
"Disables caches of writes to this page so that changes are immediately flushed to disk" という箇所に出てくる "disk" は "memory" の誤りです。 |
p. 926: |
"except they can only be local to a volume." は "except they can only reference local volumes and they can be created by standard user accounts." の誤りです。 |
p. 990: |
システムの暗号化機能を AES256 から 3DES に切り替えることに関する段落は、Windows Vista には当てはまらないので無視してください。3DES を使用するとよりサイズの大きいキーを利用できることに関する文も同様です。 |
p. 1111: |
"The only supported way to modify WRP-protected files is through the Windows Modules Installer service, which can run under the TrustedInstaller account." という文は、"The only supported way to modify WRP-protected files is through the Windows Modules Installer service, which runs with the TrustedInstaller SID" の誤りです。 |
p. 1197: |
G の下にある最初の項目が "Gait Waiting" になっていますが、これは "Gate Waiting" の誤りです。 |
ページのトップへ