Why I read it

This book had been on my list for a long time. After spending time with Linux daily — using the terminal, writing small programs, and exploring system behavior — I wanted to understand what really happens underneath.

Not just how to use Linux, but how programs actually interact with it.


Structure

The book is organized around the core building blocks of the Linux system:

  1. File I/O - how everything in Linux is treated as a file, and how programs read/write data
  2. Processes - creation, execution, and lifecycle (fork, exec, wait)
  3. Memory - virtual memory, mappings, and how programs see their address space
  4. Signals - asynchronous communication and control flow interruptions
  5. Threads - concurrency within a single process and shared memory models
  6. IPC - pipes, message queues, shared memory, and sockets

Each chapter builds a deeper understanding of how user programs and the kernel interact.


Key ideas I kept

  • Everything is a file is not just a philosophy — it’s a real design that simplifies interfaces across the system
  • fork() + exec() is a powerful and simple model for process creation
  • Processes are isolated, threads are shared — and that distinction explains most synchronization problems
  • Signals are not just notifications — they are a fundamental control mechanism in Unix systems
  • IPC models (stream, message, shared memory) each solve different kinds of problems, not interchangeable ones

What it changed

After this book, I stopped seeing Linux as a black box.

System calls started to feel like a language — a precise interface between my code and the kernel. Concepts like processes, memory, and file descriptors became concrete, not abstract.

It also changed how I read C code — especially anything that interacts with the system. Patterns that once felt confusing started to make sense as part of a bigger design.


Notes & Chapters

(This chapter focuses on truly visualizing how processes and threads exist, how memory is shared, and how execution actually happens inside a running program)