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?