Stjepan Groš

Kernel developement links

On this page I'll collect links relevant for kernel development. But note that the kernel is extremely fast moving target so that the information that was relevant for one kernel release might not be of some newer one. This is especially confusing with the new kernel versioning that, at first sight, might indicate that there are no deep changes in the code while there actually are. In particular, 2.6.x kernel series is very different between "minor" releases.

General sites

There are several sites that have lots of information about Linux kernel and I certainly recommend you to watch them regularly:

Security

References by subsystem

The linux kernel is logically (and physically) divided into different subsystems. This is mandatory because there is no person in the world that could now every aspect of the Linux kernel. Thus, subsystems allow one to concentrate on a single aspect while abstracting away all the other details.

Kernel standard library

By kernel standard library I mean base functions and data structures used throughout the kernel. It is something like glibc for user applications. But since glibc can not be used in kernel, kernel has to provide it's own implementation.

Something about container_of macro used for processing structures linked in a lists or some other, similar, structures:

Networking

Tun/Tap interface tutorial

File systems

It might seem on the first sight that the file system development is a solved area and that there is nothing to be done. But, this is totally wrong perception of the current state of this subject. There are two main stream developments that make this very attractive development area. The first one is the fact that disk space is becoming cheaper and cheaper and that the file systems of the order of Tera byte, and even Peta byte, are not uncommon any more. The second development is the SSD, or solid state disks, that function on totally different basis than the current mechanical disks. The current file systems are not designed with this premises on mind which brings many problems. One, particularly painful, fact is that Sun released ZFS file system with it's Solaris 10 that is regarded by many as the most advanced file system currently in use.

Processes and scheduler

Anatomy of Linux process management

Memory management

Drivers

Performance

This is not subsystem in the Linux kernel, but it's certainly very interesting part of it. Again, Sun made breakthrough with it's DTrace framework which was, after initial introduction in Solaris 10, included in many other operating systems, e.g. MacOS X has it. But the Linux can not use this code because licences that OpenSolaris uses (CDDL) and Linux (GPL2) are mutually incompatible. It could be said that the lack of something similar in the Linux kernel is it's Achille's heel. There are several proposed substitutes for the Linux but none as good as the DTrace. BTW, for DTrace there are plenty of pages on the Internet, e.g. this one on OpenSolaris Web site. Also, one of the DTrace authors had a presentation in the Google which is video taped and available on the Internet.

User/kernel interface

This is not strictly speaking subsystem, but nevertheless I treat it separately for now.

Kernel Space - User Space Interfaces

Mailing lists