Understanding the Linux Kernel, 3rd Edition
From I/O Ports to Process Management
Publisher: O'Reilly Media
Release Date: December 2008
Pages: 944
Read on Safari with a 10-day trial
Start your free trial now Buy on AmazonWhere’s the cart? Now you can get everything on Safari. To purchase books, visit Amazon or your favorite retailer. Questions? See our FAQ or contact customer service:
1-800-889-8969 / 707-827-7019
support@oreilly.com
The third edition of Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Probing beyond superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Important Intel-specific features are discussed. Relevant segments of code are dissected line by line. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings of why Linux does things the way it does.
This edition of the book covers Version 2.6, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices. The book focuses on the following topics:
- Memory management, including file buffering, process swapping, and Direct memory Access (DMA)
- The Virtual Filesystem layer and the Second and Third Extended Filesystems
- Process creation and scheduling
- Signals, interrupts, and the essential interfaces to device drivers
- Timing
- Synchronization within the kernel
- Interprocess Communication (IPC)
- Program execution
Understanding the Linux Kernel will acquaint you with all the inner workings of Linux, but it's more than just an academic exercise. You'll learn what conditions bring out Linux's best performance, and you'll see how it meets the challenge of providing good system response during process scheduling, file access, and memory management in a wide variety of environments. This book will help you make the most of your Linux system.
Table of Contents
-
Chapter 1 Introduction
-
Linux Versus Other Unix-Like Kernels
-
Hardware Dependency
-
Linux Versions
-
Basic Operating System Concepts
-
An Overview of the Unix Filesystem
-
An Overview of Unix Kernels
-
-
Chapter 2 Memory Addressing
-
Memory Addresses
-
Segmentation in Hardware
-
Segmentation in Linux
-
Paging in Hardware
-
Paging in Linux
-
-
Chapter 3 Processes
-
Processes, Lightweight Processes, and Threads
-
Process Descriptor
-
Process Switch
-
Creating Processes
-
Destroying Processes
-
-
Chapter 4 Interrupts and Exceptions
-
The Role of Interrupt Signals
-
Interrupts and Exceptions
-
Nested Execution of Exception and Interrupt Handlers
-
Initializing the Interrupt Descriptor Table
-
Exception Handling
-
Interrupt Handling
-
Softirqs and Tasklets
-
Work Queues
-
Returning from Interrupts and Exceptions
-
-
Chapter 5 Kernel Synchronization
-
How the Kernel Services Requests
-
Synchronization Primitives
-
Synchronizing Accesses to Kernel Data Structures
-
Examples of Race Condition Prevention
-
-
Chapter 6 Timing Measurements
-
Clock and Timer Circuits
-
The Linux Timekeeping Architecture
-
Updating the Time and Date
-
Updating System Statistics
-
Software Timers and Delay Functions
-
System Calls Related to Timing Measurements
-
-
Chapter 7 Process Scheduling
-
Scheduling Policy
-
The Scheduling Algorithm
-
Data Structures Used by the Scheduler
-
Functions Used by the Scheduler
-
Runqueue Balancing in Multiprocessor Systems
-
System Calls Related to Scheduling
-
-
Chapter 8 Memory Management
-
Page Frame Management
-
Memory Area Management
-
Noncontiguous Memory Area Management
-
-
Chapter 9 Process Address Space
-
The Process's Address Space
-
The Memory Descriptor
-
Memory Regions
-
Page Fault Exception Handler
-
Creating and Deleting a Process Address Space
-
Managing the Heap
-
-
Chapter 10 System Calls
-
POSIX APIs and System Calls
-
System Call Handler and Service Routines
-
Entering and Exiting a System Call
-
Parameter Passing
-
Kernel Wrapper Routines
-
-
Chapter 11 Signals
-
The Role of Signals
-
Generating a Signal
-
Delivering a Signal
-
System Calls Related to Signal Handling
-
-
Chapter 12 The Virtual Filesystem
-
The Role of the Virtual Filesystem (VFS)
-
VFS Data Structures
-
Filesystem Types
-
Filesystem Handling
-
Pathname Lookup
-
Implementations of VFS System Calls
-
File Locking
-
-
Chapter 13 I/O Architecture and Device Drivers
-
I/O Architecture
-
The Device Driver Model
-
Device Files
-
Device Drivers
-
Character Device Drivers
-
-
Chapter 14 Block Device Drivers
-
Block Devices Handling
-
The Generic Block Layer
-
The I/O Scheduler
-
Block Device Drivers
-
Opening a Block Device File
-
-
Chapter 15 The Page Cache
-
The Page Cache
-
Storing Blocks in the Page Cache
-
Writing Dirty Pages to Disk
-
The sync( ), fsync( ), and fdatasync( ) System Calls
-
-
Chapter 16 Accessing Files
-
Reading and Writing a File
-
Memory Mapping
-
Direct I/O Transfers
-
Asynchronous I/O
-
-
Chapter 17 Page Frame Reclaiming
-
The Page Frame Reclaiming Algorithm
-
Reverse Mapping
-
Implementing the PFRA
-
Swapping
-
-
Chapter 18 The Ext2 and Ext3 Filesystems
-
General Characteristics of Ext2
-
Ext2 Disk Data Structures
-
Ext2 Memory Data Structures
-
Creating the Ext2 Filesystem
-
Ext2 Methods
-
Managing Ext2 Disk Space
-
The Ext3 Filesystem
-
-
Chapter 19 Process Communication
-
Pipes
-
FIFOs
-
System V IPC
-
POSIX Message Queues
-
-
Chapter 20 Program ExZecution
-
Executable Files
-
Executable Formats
-
Execution Domains
-
The exec Functions
-
-
Appendix A System Startup
-
Prehistoric Age: the BIOS
-
Ancient Age: the Boot Loader
-
Middle Ages: the setup( ) Function
-
Renaissance: the startup_32( ) Functions
-
Modern Age: the start_kernel( ) Function
-
-
Appendix B Modules
-
To Be (a Module) or Not to Be?
-
Module Implementation
-
Linking and Unlinking Modules
-
Linking Modules on Demand
-
-
Appendix Bibliography
-
Books on Unix Kernels
-
Books on the Linux Kernel
-
Books on PC Architecture and Technical Manuals on Intel Microprocessors
-
Other Online Documentation Sources
-
Research Papers Related to Linux Development
-
-
Colophon