Book description
To thoroughly understand what makes Linux tick and why it's so efficient, you need to delve deep into the heart of the operating system--into the Linux kernel itself. The kernel is Linux--in the case of the Linux operating system, it's the only bit of software to which the term "Linux" applies. The kernel handles all the requests or completed I/O operations and determines which programs will share its processing time, and in what order. Responsible for the sophisticated memory management of the whole system, the Linux kernel is the force behind the legendary Linux efficiency. The new edition of Understanding the Linux Kernel takes you on a guided tour through the most significant data structures, many algorithms, and programming tricks used in the kernel. Probing beyond the superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Relevant segments of code are dissected and discussed line by line. The book covers more than just the functioning of the code, it explains the theoretical underpinnings for why Linux does things the way it does. The new edition of the book has been updated to cover version 2.4 of the kernel, which is quite different from version 2.2: the virtual memory system is entirely new, support for multiprocessor systems is improved, and whole new classes of hardware devices have been added. The authors explore each new feature in detail. Other topics in the book include:
Memory management including file buffering, process swapping, and Direct memory Access (DMA)
The Virtual Filesystem and the Second Extended Filesystem
Process creation and scheduling
Signals, interrupts, and the essential interfaces to device drivers
Timing
Synchronization in the kernel
Interprocess Communication (IPC)
Program execution
Understanding the Linux Kernel, Second Edition will acquaint you with all the inner workings of Linux, but is 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. If knowledge is power, then this book will help you make the most of your Linux system.
Table of contents
-
Understanding the Linux Kernel, 2nd Edition
- Preface
-
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
- 2. Memory Addressing
- 3. Processes
- 4. Interrupts and Exceptions
-
5. Kernel Synchronization
- Kernel Control Paths
- When Synchronization Is Not Necessary
- Synchronization Primitives
-
Synchronizing Accesses to Kernel Data Structures
-
Choosing Among Spin Locks, Semaphores, and Interrupt Disabling
- Protecting a data structure accessed by exceptions
- Protecting a data structure accessed by interrupts
- Protecting a data structure accessed by deferrable functions
- Protecting a data structure accessed by exceptions and interrupts
- Protecting a data structure accessed by exceptions and deferrable functions
- Protecting a data structure accessed by interrupts and deferrable functions
- Protecting a data structure accessed by exceptions, interrupts, and deferrable functions
-
Choosing Among Spin Locks, Semaphores, and Interrupt Disabling
- Examples of Race Condition Prevention
- 6. Timing Measurements
-
7. Memory Management
- Page Frame Management
-
Memory Area Management
- The Slab Allocator
- Cache Descriptor
- Slab Descriptor
- General and Specific Caches
- Interfacing the Slab Allocator with the Buddy System
- Allocating a Slab to a Cache
- Releasing a Slab from a Cache
- Object Descriptor
- Aligning Objects in Memory
- Slab Coloring
- Local Array of Objects in Multiprocessor Systems
- Allocating an Object in a Cache
- Releasing an Object from a Cache
- General Purpose Objects
- Noncontiguous Memory Area Management
-
8. 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
- 9. System Calls
- 10. Signals
- 11. Process Scheduling
- 12. The Virtual Filesystem
-
13. Managing I/O Devices
- I/O Architecture
- Device Files
- Device Drivers
- Block Device Drivers
- Character Device Drivers
- 14. Disk Caches
- 15. Accessing Files
-
16. Swapping: Methods for Freeing Memory
- What Is Swapping?
- Swap Area
- The Swap Cache
- Transferring Swap Pages
- Swapping Out Pages
- Swapping in Pages
- Reclaiming Page Frame
- 17. The Ext2 and Ext3 Filesystems
- 18. Networking
- 19. Process Communication
- 20. Program Execution
- A. System Startup
- B. Modules
- C. Source Code Structure
- 21. Bibliography
- Index
- Colophon
Product information
- Title: Understanding the Linux Kernel, Second Edition
- Author(s):
- Release date: December 2002
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9780596002138
You might also like
book
Understanding the Linux Kernel, 3rd Edition
In order to thoroughly understand what makes Linux tick and why it works so well on …
book
Understanding the Linux Kernel
Why is Linux so efficient? Is it the right operating system for a particular application? What …
book
Linux Kernel Programming
Learn how to write high-quality kernel module code, solve common Linux kernel programming issues, and understand …
book
Linux Kernel Programming - Second Edition
Gain both a firm practical understanding and sufficient theoretical insight into the inner workings of Linux …