What This Book Covers

This book discusses the concepts, structure, and implementation of the Linux kernel. In particular, the individual chapters cover the following topics:

□ Chapter 1 provides an overview of the Linux kernel and describes the big picture that is investigated more closely in the following chapters.

□ Chapter 2 talks about the basics of multitasking, scheduling, and process management, and investigates how these fundamental techniques and abstractions are implemented.

□ Chapter 3 discusses how physical memory is managed. Both the interaction with hardware and the in-kernel distribution of RAM via the buddy system and the slab allocator are covered.

□ Chapter 4 proceeds to describe how userland processes experience virtual memory, and the comprehensive data structures and actions required from the kernel to implement this view.

□ Chapter 5 introduces the mechanisms required to ensure proper operation of the kernel on multiprocessor systems. Additionally, it covers the related question of how processes can communicate with each other.

□ Chapter 6 walks you through the means for writing device drivers that are required to add support for new hardware to the kernel.

□ Chapter 7 explains how modules allow for dynamically adding new functionality to the kernel.

□ Chapter 8 discusses the virtual filesystem, a generic layer of the kernel that allows for supporting a wide range of different filesystems, both physical and virtual.

□ Chapter 9 describes the extended filesystem family, that is, the Ext2 and Ext3 filesystems that are the standard workhorses of many Linux installations.

□ Chapter 10 goes on to discuss procfs and sysfs, two filesystems that are not designed to store information, but to present meta-information about the kernel to userland. Additionally, a number of means to ease writing filesystems are presented.

□ Chapter 11 shows how extended attributes and access control lists that can help to improve system security are implemented.

□ Chapter 12 discusses the networking implementation of the kernel, with a specific focus on IPv4, TCP, UDP, and netfilter.

□ Chapter 13 introduces how systems calls that are the standard way to request a kernel action from userland are implemented.

□ Chapter 14 analyzes how kernel activities are triggered with interrupts, and presents means of deferring work to a later point in time.

□ Chapter 15 shows how the kernel handles all time-related requirements, both with low and high resolution.

□ Chapter 16 talks about speeding up kernel operations with the help of the page and buffer caches.

□ Chapter 17 discusses how cached data in memory are synchronized with their sources on persistent storage devices.

□ Chapter 18 introduces how page reclaim and swapping work.

□ Chapter 19 gives an introduction to the audit implementation, which allows for observing in detail what the kernel is doing.

□ Appendix A discusses peculiarities of various architectures supported by the kernel.

□ Appendix B walks through various tools and means of working efficiently with the kernel sources.

□ Appendix C provides some technical notes about the programming language C, and also discusses how the GNU C compiler is structured.

□ Appendix D describes how the kernel is booted.

□ Appendix E gives an introduction to the ELF binary format.

□ Appendix F discusses numerous social aspects of kernel development and the Linux kernel community.

Continue reading here: Introduction and Overview

Was this article helpful?

0 0