linux 好书 在线版 lkp内核编程(收藏)

The Linux® Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures

By Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski

...............................................

Publisher: Prentice Hall PTR

Pub Date: September 21, 2005

ISBN: 0-13-118163-7

Pages: 648

Table of Contents  | Index


Copyright


Prentice Hall: Open Source Software Development Series


Foreword


Acknowledgments


About the Authors


Preface


Intended Audience


Organization of Material


Our Approach


Conventions


Chapter 1.  Overview


Section 1.1.  History of UNIX


Section 1.2.  Standards and Common Interfaces


Section 1.3.  Free Software and Open Source


Section 1.4.  A Quick Survey of Linux Distributions


Section 1.5.  Kernel Release Information


Section 1.6.  Linux on Power


Section 1.7.  What Is an Operating System?


Section 1.8.  Kernel Organization


Section 1.9.  Overview of the Linux Kernel


Section 1.10.  Portability and Architecture Dependence


Summary


Exercises


Chapter 2.  Exploration Toolkit


Section 2.1.  Common Kernel Datatypes


Section 2.2.  Assembly


Section 2.3.  Assembly Language Example


Section 2.4.  Inline Assembly


Section 2.5.  Quirky C Language Usage


Section 2.6.  A Quick Tour of Kernel Exploration Tools


Section 2.7.  Kernel Speak: Listening to Kernel Messages


Section 2.8.  Miscellaneous Quirks


Summary


Project: Hellomod


Exercises


Chapter 3.  Processes: The Principal Model of Execution


Section 3.1.  Introducing Our Program


Section 3.2.  Process Descriptor


Section 3.3.  Process Creation: fork(), vfork(), and clone() System Calls


Section 3.4.  Process Lifespan


Section 3.5.  Process Termination


Section 3.6.  Keeping Track of Processes: Basic Scheduler Construction


Section 3.7.  Wait Queues


Section 3.8.  Asynchronous Execution Flow


Summary


Project: current System Variable


Exercises


Chapter 4.  Memory Management


Section 4.1.  Pages


Section 4.2.  Memory Zones


Section 4.3.  Page Frames


Section 4.4.  Slab Allocator


Section 4.5.  Slab Allocator's Lifecycle


Section 4.6.  Memory Request Path


Section 4.7.  Linux Process Memory Structures


Section 4.8.  Process Image Layout and Linear Address Space


Section 4.9.  Page Tables


Section 4.10.  Page Fault


Summary


Project: Process Memory Map


Exercises


Chapter 5.  Input/Output


Section 5.1.  How Hardware Does It: Busses, Bridges, Ports, and Interfaces


Section 5.2.  Devices


Summary


Project: Building a Parallel Port Driver


Exercises


Chapter 6.  Filesystems


Section 6.1.  General Filesystem Concepts


Section 6.2.  Linux Virtual Filesystem


Section 6.3.  Structures Associated with VFS


Section 6.4.  Page Cache


Section 6.5.  VFS System Calls and the Filesystem Layer


Summary


Exercises


Chapter 7.  Scheduling and Kernel Synchronization


Section 7.1.  Linux Scheduler


Section 7.2.  Preemption


Section 7.3.  Spinlocks and Semaphores


Section 7.4.  System Clock: Of Time and Timers


Summary


Exercises


Chapter 8.  Booting the Kernel


Section 8.1.  BIOS and Open Firmware


Section 8.2.  Boot Loaders


Section 8.3.  Architecture-Dependent Memory Initialization


Section 8.4.  Initial RAM Disk


Section 8.5.  The Beginning: start_kernel()


Section 8.6.  The init Thread (or Process 1)


Summary


Exercises


Chapter 9.  Building the Linux Kernel


Section 9.1.  Toolchain


Section 9.2.  Kernel Source Build


Summary


Exercises


Chapter 10.  Adding Your Code to the Kernel


Section 10.1.  Traversing the Source


Section 10.2.  Writing the Code


Section 10.3.  Building and Debugging


Summary


Exercises


Bibliography


Index

原文地址:https://www.cnblogs.com/titer1/p/2308960.html