This master's thesis documents the Linux kernel version 2.6. It begins with an introduction to operating systems concepts and an overview of Linux kernel subsystems. The core chapters analyze important kernel mechanisms such as synchronization, scheduling, memory management and device drivers. Code examples are provided to illustrate kernel programming concepts. The thesis concludes with the documentation of a sample loadable kernel module.