16.1. History16.2. Design Principles16.2.1. Security16.2.2. Reliability16.2.3. Windows and POSIX Application Compatibility16.2.4. High Performance16.2.5. Extensibility16.2.6. Portability16.2.7. International Support16.2.8. Energy Efficiency16.2.9. Dynamic Device Support16.3. System Components16.3.1. Hardware-Abstraction Layer16.3.2. Kernel16.3.2.1. Kernel Dispatcher16.3.2.2. Threads and Scheduling16.3.2.3. Implementation of Synchronization Primitives16.3.2.4. Software Interrupts: Asynchronous and Deferred Procedure Calls16.3.2.5. Exceptions and Interrupts16.3.2.6. Switching Between User-Mode and Kernel-Mode Threads16.3.3. Executive16.3.3.1. Object Manager16.3.3.2. Virtual Memory Manager16.3.3.3. Process Manager16.3.3.4. Facilities for Client–Server Computing16.3.3.5. I/O Manager16.3.3.6. Cache Manager16.3.3.7. Security Reference Monitor16.3.3.8. Plug-and-Play Manager16.3.3.9. Power Manager16.3.3.10. Registry16.3.3.11. Booting16.4. Terminal Services and Fast User Switching16.5. File System16.5.1. NTFS Internal Layout16.5.1.1. NTFS B+ Tree16.5.1.2. NTFS Metadata16.5.2. Recovery16.5.3. Security16.5.4. Volume Management and Fault Tolerance16.5.4.1. RAID Sets16.5.4.2. Sector Sparing and Cluster Remapping16.5.5. Compression16.5.6. Mount Points, Symbolic Links, and Hard Links16.5.7. Change Journal16.5.8. Volume Shadow Copies16.6. Networking16.6.1. Network Interfaces16.6.2. Protocols16.6.2.1. Server-Message Block16.6.2.2. Transmission Control Protocol/Internet Protocol16.6.2.3. Point-to-Point Tunneling Protocol16.6.2.4. HTTP Protocol16.6.2.5. Web-Distributed Authoring and Versioning Protocol16.6.2.6. Named Pipes16.6.2.7. Remote Procedure Calls16.6.2.8. Component Object Model16.6.3. Redirectors and Servers16.6.3.1. Distributed File System16.6.3.2. Folder Redirection and Client-Side Caching16.6.4. Domains16.6.5. Active Directory16.7. Programmer Interface16.7.1. Access to Kernel Objects16.7.2. Sharing Objects between Processes16.7.3. Process Management16.7.3.1. Scheduling Rule16.7.3.2. Thread Priorities16.7.3.3. Thread Suspend and Resume16.7.3.4. Thread Synchronization16.7.3.5. Thread Pool16.7.3.6. Fibers16.7.3.7. User-Mode Scheduling (UMS) and ConcRT16.7.3.8. Winsock16.7.4. Interprocess Communication Using Windows Messaging16.7.5. Memory Management16.7.5.1. Virtual Memory16.7.5.2. Memory-Mapping Files16.7.5.3. Heaps16.7.5.4. Thread-Local Storage16.8. Summary16.9. Practice Exercises16.10. Exercises16.11. Bibliographical Notes