This book is not intended to be used as an internals manual for Linux. Instead it is an introduction to operating systems in general and to Linux in particular. The chapters each follow my rule of ``working from the general to the particular''. They all first give an overview of the kernel subsystem that they are describing before launching into its gory details. I have deliberately not described the kernel's algorithms, its methods of doing things, in terms of routine_X() calls routine_Y() which increments the foo field of the bar data structure. You can read the code to find these things out. Whenever I need to understand a piece of code or describe it to someone else I often start with drawing its data structures on the white-board. So, I have described many of the relevant kernel data structures and their interrelationships in a fair amount of detail. Each chapter is fairly independent, like the Linux kernel subsystem that they each describe. Sometimes, though, there are linkages; for example you cannot describe a process without understanding how virtual memory works.
The Hardware Basics chapter (chapter ) gives a brief introduction to the modern PC. An operating system has to work closely with the hardware system that acts as its foundations. The operating system needs certain services that can only be provided by the hardware. In order to fully understand the Linux operating system, you need to understand the basics of the underlying hardware.
The Software Basics chapter (chapter ) introduces basic software principals and looks at assembly and C programing langauges. It looks at the tools that are used to build an operating system like Linux and it gives an overview of the aims and functions of an operating system.
The Memory Management chapter (chapter ) describes the way that Linux handles the physical and virtual memory in the system.
The Processes chapter (chapter ) describes how the Linux kernel creates, manages and deletes the processes in the system. It describes how their activities are synchronized with each other and with the kernel itself using the various interprocess communication mechanisms supported by Linux.
The Peripheral Component Interconnect (PCI) standard is now firmly established as the low cost, high performance data bus for PCs. The PCI chapter (chapter ) describes how the PCI buses and devices are initialized and used by the Linux kernel.
The Interrupts and Interrupt Handling chapter (chapter ) looks at how interrupts are handled by the Linux kernel. Whilst the kernel has generic mechanisms and interfaces for handling interrupts, some of the interrupt handling details are hardware and architecture specific.
The Device Drivers chapter (chapter ) describes how the Linux kernel controls the physical devices in the system. One of Linux's strengths is its support for the many available hardware devices for the modern PC.
The File system chapter (chapter ) describes how the Linux kernel maintains the files in the file systems that it supports. It describes the Virtual File System (VFS) and how the Linux kernel's real file systems are supported.
The Kernel Mechanisms chapter (chapter ) looks at some of the general tasks and mechanisms that the Linux kernel needs to supply so that other parts of the kernel work effectively together.
The Modules chapter (chapter ) describes how the Linux kernel can dynamically load functions, for example file systems, only when they are needed.
The Sources chapter (chapter ) describes where in the Linux kernel sources you should start looking for particular kernel functions.