David A. Solomon, Mark E. Russinovich Microsoft® Windows Internais 4. Auflage Windows 2000, Windows XP und Windows Server 2003 Microsoft* Press Inhaltsverzeichnis Entwicklungsgeschichte Vorwort Danksagung Einführung Aufbau des Buchs Die bisherige Entwicklung dieses Buchs Änderungen in der 4. Auflage Übungen Nicht behandelte Themen Eine Warnung und Mahnung Support Von den Autoren Microsoft Press Kapitel 1: Konzepte und Tools Windows-Versionen Grundlegende Konzepte und Begriffe Windows-API Dienste, Funktionen und Routinen Prozesse, Threads und Aufträge Virtueller Speicher Kernel- und Benutzermodus Terminaldienste und mehrere Sitzungen Objekte und Handies Sicherheitskonzept Registrierung Unicode Die Interna von Windows erforschen Systemmonitor Windows Support Tools Windows Resource Kits Kerneldebugging Platform Software Development Kit (SDK) Device Driver Kit (DDK) Sysinternals-Tools Zusammenfassung Kapitel 2: Die Systemarchitektur Anforderungen und Designziele Betriebssystemmodell XV XIX XXI XXIII XXIII XXIII XXIV XXIV XXIV XXTV XXV XXV XXV 1 1 3 3 5 6 14 16 20 21 22 23 23 24 25 26 26 26 31 32 32 32 33 33 34 IV Inhaltsverzeichnis Überblick über die Architektur Portabilität Symmetrischer Multiprozessorbetrieb Skalierbarkeit Unterschiede zwischen der Client- und der Serverversion Getesteter Build Die wichtigsten Systemkomponenten Umgebungssubsysteme und Subsystem-DLLs Ntdll.dll Ausführungsschicht Kernel Hardwareabstraktionsschicht (Hardware Abstraction Layer, HAL) Gerätetreiber Systemprozesse Zusammenfassung Kapitel 3: Systemmechanismen Trapverteilung Verteilung von Interrupts Verteilung von Ausnahmen Verteilung von Systemdienstaufrufen Objektmanager Objekte der Ausfuhrungsschicht Objektstruktur Synchronisation Synchronisation bei hoher IRQL-Einstellung Synchronisation bei niedriger IRQL-Einstellung Systemarbeitsthreads Globale Flags in Windows LPCs (Local Procedure Calls) Kernelereignisverfolgung Wow64 Wow64-Prozessadressraum Systemaufrufe Ausnahmeverteilung Rückrufe in den Benutzermodus Dateisystemumlenkung Umlenkung der Registrierung und Spiegelung E/A-Steuerungsanforderungen 16-Bit-Installationsanwendungen Druck Beschränkungen Zusammenfassung 35 37 38 43 44 46 49 49 58 59 61 62 65 69 79 81 81 83 104 113 118 120 122 141 143 146 157 159 162 165 169 169 169 170 170 170 171 172 172 172 172 173 ' ;; Inhaltsverzeichnis Kapitel 4: Verwaltungsmechanismen Die Registrierung Anzeige und Änderung der Registrierung Verwendung der Registrierung Registrierungsdatentypen Logische Struktur der Registrierung Behebung von Problemen mit der Registrierung Registrierungsinterna Dienste Dienstanwendungen Dienstkonten Der Dienststeuerungs-Manager Startvorgang von Diensten Fehler beim Start von Diensten Die Startkonfiguration und die letzte als funktionierend bekannte Konfiguration annehmen Das Versagen von Diensten Dienste beenden Gemeinsam genutzte Dienstprozesse Dienststeuerungsprogramme Windows-Verwaltungsinstrumentation (WMI) WMI-Architektur Anbieter CIM und die Sprache MOF Der Namespace WMI Klassenzuordnungen WMI-Implementierung WMI-Sicherheit Zusammenfassung Kapitel 5: Starten und Herunterfahren des Systems Startvorgang Vor dem x86- oder x64-Systemstart Der x86/x64-Startsektor und Ntldr Der IA64-Startvorgang Initialisieren des Kernels und der Subsysteme der Ausführungsschicht Smss, Csrss und Winlogon Automatisch gestartete ausführbare Dateien Problembehandlung bei Startproblemen Letzte als funktionierend bekannte Konfiguration Abgesicherter Modus Wiederherstellungskonsole Behebung von Problemen beim Systemstart Herunterfahren Zusammenfassung V 175 175 175 176 177 178 184 189 203 203 208 213 216 219 220 221 222 223 225 226 227 228 229 233 234 236 237 238 239 239 239 243 250 251 254 258 259 259 259 263 265 270 273 VI Inhaltsverzeichnis Kapitel 6: Prozesse, Threads und Auftragsobjekte Prozessinterna Datenstrukturen Kernelvariablen Leistungsindikatoren Wichtige Funktionen Abfolge der Vorgänge innerhalb von CreateProcess Phase 1: Öffnen der auszuführenden Datei Phase 2: Erstellen des Prozessobjekts der Ausführungsschicht von Windows Phase 3: Erstellen des Startthreads, seines Stacks und seiner Kontextdatenstruktur Phase 4: Benachrichtigen des Windows-Subsystems über den neuen Prozess Phase 5: Beginn der Ausführung des Startthreads Phase 6: Ausführen der Prozessinitialisierung im Kontext des neuen Prozesses Threadinterna Datenstrukturen Kernelvariablen Leistungsindikatoren Wichtige Funktionen Die Geburt eines Threads Untersuchung der Threadaktivität Zeitplanung der Threadausführung Übersicht über die Windows-Zeitplanung Prioritätsstufen Windows-API-Funktionen für die Zeitplanung Programme für die Zeitplanung Echtzeitprioritäten Threadzustände Verteilerdatenbank Quantum Steuerung der Threadausführung in der Praxis Kontextwechsel Leerlaufthread Prioritätsanhebungen Multiprozessorsysteme Algorithmen zur Laufzeitzuteilung auf Multiprozessorsystemen Auftragsobjekte Zusammenfassung Kapitel 7: Speicherverwaltung Einführung in die Speicherverwaltung Komponenten der Speicherverwaltung Interne Synchronisation Konfigurieren der Speicherverwaltung Die Speichernutzung untersuchen Von der Speicherverwaltung bereitgestellte Dienste Große und kleine Seiten Speicherseiten reservieren und zusichern 275 .. 275 276 282 282 283 285 287 289 293 294 295 295 297 297 305 305 306 307 307 310 310 312 314 315 317 318 323 323 328 331 331 332 341 349 352 357 359 359 360 361 362 362 366 366 368 Inhaltsverzeichnis V I I Arbeitsspeicher sperren Zuweisungsgranularität Gemeinsam genutzter Arbeitsspeicher und Speicherzuordnungsdateien Arbeitsspeicher schützen Datenausführungsverhinderung Copy-on-write Heapmanager Addressfenstererweiterungen (AWE) Systemspeicherpools Konfiguration der Poolgrößen Die Nutzung des Poolspeichers überwachen Look-Aside-Listen Treiberüberprüfung Aufbau virtueller Adressräume x86-Benutzermodusadressraum x86-Systemadressraum x86-Sitzungsspeicher Systemseitentabelleneinträge 64-Bit-Adressraumlayouts Adressübersetzung Übersetzung von virtuellen Adressen auf x86-Systemen Übersetzungs-Look-Aside-Puffer Physische Adresserweiterung (PAE) Übersetzung von virtuellen Adressen auf IA-64-Systemen Übersetzung von virtuellen Adressen auf x64-Systemen Behandlung von Seitenfehlern Ungültige Seitentabelleneinträge (PTEs) Prototyp-PTEs E/A-Operationen mit Speicherseiten Kollidierte Seitenfehler Auslagerungsdateien Beschreibungen virtueller Adressbereiche (VADs) Abschnittsobjekte Arbeitsseiten Einlagerung auf Anforderung Der logische Prefetcher Ersetzungsrichtlinien Verwaltung von Arbeitsseiten Seitenausgleichsmanager und Swapper Systemarbeitsseiten PFN-Datenbank Funktion der Auslagerungslisten Modified Page Writer PFN-Datenstrukturen Benachrichtigungen über den Arbeitsspeicherzustand Zusammenfassung 369 369 370 372 374 377 378 383 385 385 388 392 393 397 399 401 401 404 405 408 408 416 418 419 420 421 422 423 425 426 426 430 432 438 439 439 443 443 447 448 449 453 455 456 459 463 VIII Inhaltsverzeichnis Kapitel 8: Sicherheit Komponenten des Sicherheitssystems Schützen von Objekten Zugriffsprüfungen Sicherheitsbeschreibungen und Zugriffssteuerung Benutzerrechte und Berechtigungen Benutzerrechte Berechtigungen Höhere Berechtigungen Sicherheitsüberwachung Anmeldung Initialisierung des Anmeldeprozesses (Winlogon) Schritte der Benutzeranmeldung Richtlinien für Softwareeinschränkung Zusammenfassung Kapitel 9: E/A-System Komponenten des E/A-Systems Der E/A-Manager E/A-Bearbeitung Gerätetreiber Gerätetreibertypen Treiberstruktur Treiber- und Geräteobjekte Geräte öffnen E/A-Verarbeitung E/A-Arten E/A-Anforderungspakete E/A-Anforderung an einen einschichtigen Treiber E/A-Anforderungen an mehrschichtige Treiber E/A-Abschlussports Treiberüberprüfung Der Plug & Play-Manager Grad der Plug & Play-Unterstützung Plug & Play-Unterstützung durch Treiber Treiber laden, initialisieren und installieren Treiberinstallation Die Energieverwaltung Arbeitsweise der Energieverwaltung Auf die Energieverwaltung bezogene Arbeitsweise der Treiber Treibersteuerung des Energieverbrauchs von Geräten Zusammenfassung 465 468 472 473 486 496 497 498 503 504 507 508 510 513 515 517 517 519 520 521 521 528 530 534 540 540 544 549 556 562 567 568 569 569 572 580 585 587 588 591 591 Inhaltsverzeichnis IX Kapitel 10: Datenträgerverwaltung Datenträgerterminologie Laufwerkstreiber Ntldr Laufwerksklassen-, Port- und Miniporttreiber Datenträgergeräteobjekte Partitions-Manager Volumeverwaltung Basisdatenträger Dynamische Datenträger Volumes mit mehreren Partitionen verwalten Der Volumenamespace E/A-Operationen auf Volumes Der Dienst für virtuelle Datenträger Volumeschattenkopiedienst Zusammenfassung Kapitel 11: Cachemanager Die wichtigsten Eigenschaften des Cachemanagers Ein einzelner zentraler Systemcache Die Speicherverwaltung Cachekohärenz Zwischenspeicherung virtueller Blöcke Zwischenspeicherung auf Datenstrombasis Unterstützung wiederherstellbarer Dateisysteme Virtueller Cachespeicher Die Größe des Cache LargeSystemCache Die virtuelle Größe des Cache Die Größe der Cachearbeitsseiten Die physische Größe des Cache Datenstrukturen des Cache Systemweite Datenstrukturen des Cache Dateibezogene Datenstrukturen des Cache Dateisystemschnittstellen In den und aus dem Cache kopieren Zwischenspeicherung mit Abbildung und Festsetzung Zwischenspeicherung mit der DMA-Schnittstelle Schnelle E/A Vorauslesen und verzögert schreiben Intelligentes Vorauslesen Schreibcache und verzögertes Schreiben Schreibdrosselung Systemthreads Zusammenfassung 593 593 594 594 595 598 600 600 601 604 610 616 624 625 627 632 633 633 634 634 635 636 636 637 638 640 640 641 642 644 646 646 647 652 653 654 655 656 658 659 660 662 664 665 X Inhaltsverzeichnis Kapitel 12: Dateisysteme Dateisystemformate von Windows CDFS UDF FAT12, FAT16 und FAT32 NTFS Die Architektur der Dateisystemtreiber Lokale Dateisystemtreiber Remotedateisystemtreiber Die Arbeitsweise des Dateisystems Dateisystemfiltertreiber Behebung von Dateisystemproblemen Filemon-Grundfunktionen Problembehandlung mit Filemon Designziele und Merkmale von NTFS Anforderungen an High-End-Dateisysteme Fortgeschrittene Funktionen von NTFS NTFS-Dateisystemtreiber Die logische Datenstruktur von NTFS Volumes Cluster Masterdateitabelle (MFT) Dateiverweisnummern Dateidatensätze Dateinamen Residente und nicht residente Attribute Datenkomprimierung und Dateien mit geringer Datendichte Änderungsjournaldatei Indizierung Objektkennungen Kontingentverwaltung Konsolidierte Sicherheitsbeschreibungen Analysepunkte NTFS-Wiederherstellungsunterstützung Fortentwicklung des Dateisystemdesigns Protokollierung Wiederherstellung Wiederherstellung fehlerhafter NTFS-Cluster Sicherheit des verschlüsselnden Dateisystems (EFS) Erste Verschlüsselung einer Datei Der Entschlüsselungsprozess Verschlüsselte Dateien sichern Zusammenfassung 667 668 668 669 669 672 672 673 674 678 683 689 689 690 696 696 697 706 709 709 710 711 717 717 719 721 724 728 729 730 731 732 734 734 735 737 742 746 750 753 757 759 760 Inhaltsverzeichnis XI Kapitel 13: Netzwerkbetrieb Windows-Netzwerkarchitektur Das OSI-Referenzmodell Windows-Netzwerkkomponenten Netzwerk-APIs Windows-Sockets Remoteprozeduraufrufe Webzugriffs-APIs Named Pipes und Mailslots NetBIOS Weitere Netzwerk-APIs Multiple Redirector-Unterstützung Multiple Provider Router Multiple UNC Provider Namensauflösung Domain Name System (DNS) Windows Internet Name Service (WINS) Protokolltreiber TCP/IP-Erweiterungen NDIS-Treiber Varianten des NDIS-Miniports Verbindungsorientiertes NDIS Remote NDIS QoS (Quality of Service) Bindung Mehrschichtige Netzwerkdienste Remotezugriff Active Directory Netzwerklastausgleich Dateireplikationsdienst Verteiltes Dateisystem (Distributed File System, DFS) Zusammenfassung Kapitel 14: Absturzspeicherabbiidanaiyse Warum stürzt Windows ab? Der Bluescreen Absturzspeicherabbilddateien Erstellung eines Absturzspeicherabbilds Windows-Fehlerberichterstattung Onlineabsturzanalyse Analyse von Absturzspeicherabbildern NotMyFault Analyse von Absturzspeicherabbildern Ausführlichere Analyse Hilfsmittel zur Problembehandlung Pufferüberlauf und spezieller Pool Codeüberschreibungen und Systemcodeschreibschutz 761 761 762 763 765 765 772 776 778 784 786 788 789 791 793 793 793 793 798 801 805 805 807 809 810 811 811 812 813 814 815 816 817 817 819 821 824 825 826 827 828 828 830 831 832 834 XII Inhaltsverzeichnis Weiterführende Absturzspeicherabbiidanaiyse Stapelüberschreibungen Festhängende oder nicht mehr reagierende Systeme Wenn es kein Absturzspeicherabbild gibt 836 836 837 840 Glossar 843 Stichwortverzeichnis 873 Die Autoren 897