The Linux Kernel Book: A Comprehensive Guide to the Heart of Linux
The Linux Kernel Book is a book written by RÃmy Card, Ãric Dumas and Franck MÃvel, and published by Wiley in 1998. It is a detailed and authoritative reference on the internal workings of the Linux operating system kernel, covering topics such as process management, memory management, interprocess communication, signals, pipes, POSIX terminals, file systems, loadable modules and administration. The book is divided into two parts: the first part introduces the basic concepts and system calls related to each topic, with examples written in C; the second part shows how these concepts are implemented in the kernel, with descriptions of the data structures and internal functions used in Linux.
The book is intended for readers who have some familiarity with Unix or Linux systems and programming, and who want to learn more about the design and implementation of the Linux kernel. The book is based on the 2.0 version of the Linux kernel, but it also covers some features of later versions. The book includes a CD-ROM with the source code of the kernel and some utilities. The book has been praised by Linus Torvalds, the creator of Linux, who wrote a foreword for it. He said: \"The book you hold in your hand will hopefully help you understand the Linux operating system kernel better. it really is a strange and wonderful world, full of subtle details ranging from how to control the physical hardware to how to manage multiple different users at the same time with limited resources.\"
The Linux Kernel Book is one of the classic books on Linux development, and it has been widely used by students, researchers and professionals who want to gain a deeper understanding of the Linux kernel. It is also a valuable resource for anyone who wants to modify or extend the kernel for their own purposes. The book is available from Wiley's website[^1^] or from Amazon[^2^]. You can also read some reviews of the book on Goodreads[^3^].
The Linux kernel has evolved significantly since its first release in 1991. The kernel version history can be divided into several major phases, each marked by a change in the first or second number of the version. For example, the 2.6.x series started in 2003 and ended in 2011, when the 3.x series began. The current version series is 5.x, which started in 2019. Each version series includes many minor releases that fix bugs, add features, and improve performance and stability. Some versions are designated as long-term support (LTS) releases, which means they are maintained for several years with security and bug fixes. Other versions are supported only until the next version is released.
The Linux kernel development process is open and collaborative, involving thousands of developers from different organizations and backgrounds. The kernel source code is hosted on a Git repository, where developers can submit patches for review and testing. The patches are then merged into the mainline branch by Linus Torvalds or his trusted lieutenants. The mainline branch is also known as the bleeding edge, as it contains the latest and most experimental changes. Every few weeks, a new release candidate (RC) is announced, which is a snapshot of the mainline branch that is ready for testing and feedback. After several RCs, a new stable version is released and tagged in the repository.
The Linux kernel development is guided by some principles and rules that ensure its quality and consistency. One of these principles is that new features should be backward compatible with existing userspace applications and drivers. Another principle is that new features should be optional and configurable, so that users can choose what they need and disable what they don't. A third principle is that new features should be well documented and tested before they are merged into the mainline branch. The kernel development also follows a coding style that defines the formatting and indentation of the source code, as well as some naming conventions and best practices.
The Linux kernel development is driven by the needs and interests of its users and developers. Some of the factors that influence the kernel development are: * The hardware platforms that Linux supports, such as x86, ARM, PowerPC, MIPS, etc. * The device drivers that Linux supports, such as network cards, graphics cards, sound cards, etc. * The subsystems that Linux provides, such as memory management, process scheduling, file systems, networking, security, etc. * The applications that run on Linux, such as web servers, databases, desktop environments, etc. * The standards and specifications that Linux follows or implements, such as POSIX, USB, TCP/IP, etc. * The feedback and suggestions from the Linux community and users. a474f39169