Understanding systems from the inside

In-depth writing on Linux internals, assembly, software engineering, and the infrastructure that keeps production systems alive: source-code readings, experiments, and practical notes from the field.

your application
syscall / API
kernel
process memory fs net ...
drivers
hardware

Linux Inside

An in-depth book about Linux kernel internals: boot process, memory management, interrupts, system calls, scheduling, synchronization, and more.

64 chapters · in progress 10%

Contents

1 / 7

Part II. Initialization

  1. First steps in the kernel
  2. Early interrupts handler
  3. Last preparations before the kernel entry point
  4. Kernel entry point
  5. Continue architecture-specific boot-time initializations
  6. Architecture-specific initializations, again...
+ 4 more →

Part III. Interrupts

  1. Introduction
  2. Start to dive into interrupts
  3. Interrupt handlers
  4. Initialization of non-early interrupt gates
  5. Implementation of some exception handlers
  6. Handling Non-Maskable interrupts
+ 4 more →

Part IV. System calls

  1. Introduction to system calls
  2. How the Linux kernel handles a system call
  3. vsyscall and vDSO
  4. How the Linux kernel runs a program
  5. Implementation of the open system call
  6. Limits on resources in Linux

Part V. Timers and time management

  1. Introduction
  2. Clocksource framework
  3. The tick broadcast framework and dyntick
  4. Introduction to timers
  5. Clockevents framework
  6. x86 related clock sources
+ 1 more →

Part VI. Synchronization primitives

  1. Introduction to spinlocks
  2. Queued spinlocks
  3. Semaphores
  4. Mutex
  5. Reader/Writer semaphores
  6. SeqLock

Part VII. Memory management

  1. Memblock
  2. Fixmaps and ioremap
  3. kmemcheck

Part VIII. Cgroups

  1. Introduction to Control Groups

Part IX. Concepts

  1. Per-CPU variables
  2. Cpumasks
  3. The initcall mechanism
  4. Notification Chains

Part X. Data structures

  1. Doubly linked list
  2. Radix tree
  3. Bit arrays

Part XI. Theory

  1. Paging
  2. Elf64
  3. Inline assembly

Part XII. Misc

  1. Linux kernel development
  2. How the kernel is compiled
  3. Linkers
  4. Program startup process in userspace

Part XIII. Kernel structures

  1. IDT

Assembly

A set of posts on learning x86-64 assembly for Linux: registers, addressing modes, the stack, system calls, and writing complete programs from scratch.

7 posts · finished 100%