Everything about Unix kernels: development, configuration, compilation, design, etc.

The kernel of every operating system builds the bridge between the application and the actual processing on the hardware level.

A typical Unix kernel is responsible for:

  • CPU Program execution
  • Memory Management
  • Processes (Scheduling, Synchronization, Interprocess Communication)
  • Signals (Exceptions, Interrupts)
  • Filesystems (Virtual, Block)
  • I/O Architecture (Devices, Files, Networking)

The two most common architectures for Unix kernels are:

  • Monolithic kernel: Every kernel layer is integrated in into the whole kernel and therefore runs in kernel space. Every user application has to access the kernel through a high-level interface. Most Unix(-like) kernel follow this approach.

  • Microkernel: Only the essential parts of the kernel run in kernel space. Applications are allowed to directly address different kernel layers (device drivers, filesystems, ..).


The kernel is a Unix-like kernel initially created by Linus Torvalds in 1991 and now is maintained by developers around the world.

Linux kernel compilation

Linux kernel internals

Further reading