Microsoft Windows Internals
Objective:
The aim of this book is to describe the architecture and internals of the Windows Operating System.
It deals with nearly all Operating System concepts taught during college, as implemented within the Windows Operating Systems.
Chapter-wise description
Chapters 1 to 4:
In these chapters, some of the basic concepts are covered – such as processes, fibers, threads, services, kernel and user modes, virtual memory, etc. Some useful tools are also given a brief glance – such as SoftICE, ProcessExplorer and LiveKd. Interrupt and Exception dispatching, the Hardware Abstraction Layer, Wow64 mode, device drivers and the Registry are also covered.
Chapter 5:
This chapter deals with the steps that occur when the system is started up, and when it is being shutdown. The entire boot process is explained in detail, with the roles of the smss.exe, csrss.exe and winlogon.exe processes being mentioned. A brief description is also given on the Windows File Protection mechanism.
Chapter 6:
This chapter deals with Processes, Threads, and Jobs. The internal data structures used by Windows are explained in detail, as are the Kernel variables and performance counters used. The flow of all the steps as they occur when a process is loaded into memory for execution is explained step by step. The algorithms used for scheduling threads and processes, priorities, context switching, execution on multi-processor systems, etc are also explained. Information is also given (as well as in other chapters too) on using the kernel debugger to verify the facts mentioned in the book.
Chapter 7:
This chapter deals with memory management. As in the earlier chapter, detailed explanations are provided on the data structures and algorithms used. Topics such as Address Windowing Extensions, Memory Pools, Paging, Address Space layouts, etc are explained very well.
Chapter 8:
This chapter deals with Security. If you have seen the SIDs used by Windows and have ever wondered how Windows uses them to determine security permissions on objects, then this chapter will answer all your questions.
Chapter 9:
This chapter deals with the I/O System. It starts of with information on how the drivers come into the picture when a device needs to be used. The chapter then explains the various interactions that occur within the driver and the OS. The functioning of the Plug and Play manager, I/O completion ports and the Power Manager are also explained.
Chapter 10:
This chapter deals with storage management. It does not deal with the file system, but rather the storage media and how Windows interacts with them – for example, deals with concepts like partitioning, striped and mirrored volumes, Shadow Copies, mounting, etc.
Chapter 11:
This chapter deals with the cache manager – i.e., the manager that decides what data needs to be cached from the file system in memory. As is the norm in this book, all data structures and algorithms used are explained clearly and to the fullest.
Chapter 12:
This chapter deals with file systems. Brief descriptions are given for the CDFS, UDF, FAT12, FAT16 and FAT32 file systems, before the chapter moves on to the file system drivers and their architecture. The use of the Filemon.exe tool is also shown. The chapter ends with a extremely detailed explanation of the NTFS architecture (also covers the Encrypting File System features).
Chapter 13:
This chapter deals with the components within Windows that are used for networking, mainly Windows Sockets. Named Pipes, Mailslots, NetBIOS, NDIS (protocol drivers), and the Distributed File System architecture are also explained briefly.
Chapter 14:
This final chapter is titled “Crash dump analysis”. It explains why the “Blue Screen of death” appears, and how you can obtain information on why your machine crashed by analyzing the dump files.
Conclusion / my opinion:
Firstly, you should note that this book is not for those wanting information on the Windows APIs that are required for interacting with the Operating System at a low level. Rather, this book deals with the theoretical concepts that are taught at an undergraduate level, but from the Windows point of view. The explanation is never lacking at any point of time, and delves deep down into “how it’s done” in Windows. This book should be a pretty interesting read for anyone wondering what all the complexities are in writing an Operating System. Very few books (on any topic) really do cover everything their title implies – and this book is one of them.