Linux Kernel Architecture

(Jacob Rumans) #1

Chapter 1: Introduction and Overview


amount of code is created by nearly 1,000developers per release. On average, 2.83 changes are integrated
everyhour, 24 hours a day, and 7 days a week! This can only be handled with mature means of source
code management and communication between developers; I come back to these issues in Appendices B
and F.

120

140

160

180

200

220

240

260

280

2.5.0 2.5.12 2.5.50 2.6.0 2.6.7 2.6.10 2.6.14 2.6.172.6.19 2.6.22 2.6.25

01-Jan-02 01-Jan-03 01-Jan-04 01-Jan-05 01-Jan-06 01-Jan-07 01-Jan-08

Uncompressed Tree Size [MiB]

Kernel Release
Figure 1-14: Evolution of the core kernel distribution’s size during the last years.

1.4 Why the Kernel Is Special
The kernel is an amazing place — but after all, it is just a big C program with some assembler portions
(and a drop or two of black magic added sometimes). So what makes the kernel so fascinating? Several
factors contribute to this. First and foremost, the kernel is written by the best programmers in the world,
and this shows in the code. It is well structured, written with meticulous attention for detail, and contains
clever solutions all over the place. In one word: It is code as it ought to be. This, however, does not mean
that the kernel is the product of a textbook-style programming methodology: While it employs cleanly
designed abstractions to keep the code modular and manageable, it’s the mix with the other face of the
kernel that makes the code so interesting and unique: If it need be, the kernel does not back off from
reusing bit positions in a context-dependent manner, overloading structure elements multiple times,
squeezing yet another storage bit out of the aligned portion of pointers, usinggotos freely, and numer-
ous other things that would make any structured programmer scream miserably in agony and pain.
Free download pdf