Inside the Linux Kernel

Ted Ts'o, MIT

Who should attend: Application programmers and kernel developers. You should be reasonably familiar with C programming in the UNIX environment, but no prior experience with the UNIX or Linux kernel code is assumed.

This tutorial will give you an introduction to the structure of the Linux kernel, the basic features it provides, and the most important algorithms it employs.

The Linux kernel aims to achieve conformance with existing standards and compatibility with existing operating systems. However, it is not a reworking of existing UNIX kernel code. The Linux kernel was written from scratch to provide both standard and novel features, and takes advantage of the best practice of existing UNIX kernel designs.

Although the material will focus on the release version of the Linux kernel (v 2.0), it will also address aspects of the development kernel codebase (v 2.1) where its substance differs from 2.0. It will not contain any detailed examination of the source code but will rather offer an overview and roadmap of the kernel's design and functionality.

Topics will include:

  • How the Linux kernel is organized: scheduler, virtual memory system, filesystem layers, device driver layers and networking stacks.
    • The interface between each module and the rest of the kernel, and the functionality provided by that interface.
    • The common kernel support functions and algorithms used by that module.
    • How modules provide for multiple implementations of similar functionality (network protocols, filesystem types, device drivers and architecture-specific machine interfaces).

  • Basic ground rules of kernel programming, such as races and deadlock conditions.

  • Implementation of the most important kernel algorithms and their general properties (aspects of portability, performance and functionality).

  • The main similarities and differences between Linux and traditional UNIX kernels, with attention to places where Linux implements significantly different algorithms.

  • Details of the Linux scheduler, its VM system, and the ext2fs filesystem.

  • The strict requirements for ensuring that kernel code is portable between the many architectures that Linux supports.


About the Instructor:

Theodore Ts'o has been a Linux kernel developer since almost the very beginnings of Linux - he implemented POSIX job control in the 0.10 Linux kernel. He is the maintainer and author for the Linux COM serial port driver, and the Comtrol Rocketport driver. He architected and implemented Linux's tty layer. Outside of the kernel, he is also the maintainer of the e2fsck filesystem consistency checker. Theodore is currently employed by VA Linux Systems.

Atlanta Linux Showcase - P.O. Box 675161 - Marietta, GA 30006 Main Menu