Machine layer

How computers work

Explain what your code turns into and who runs it, from the CPU up.

Start with Why Docker on your Mac is a VM
  1. 01

    Why Docker on your Mac is a VM

    A container borrows the host's kernel. macOS has the wrong one.

    Free
  2. 02

    Processes and the kernel

    What a running program is, and the one program that runs the others.

    Free
  3. 03

    System calls

    The only door from your code into the kernel.

    Being writtenFree
  4. 04

    Virtual memory

    Every process thinks it owns the machine's memory.

    Being writtenPro
  5. 05

    Files, sockets and descriptors

    Why a socket and a file share one interface.

    Being writtenPro
  6. 06

    Threads and scheduling

    Who decides what runs next, and how often.

    Being writtenPro
  7. 07

    Caches and latency

    Why reading RAM is slow and reading a disk is slower.

    Being writtenPro
  8. 08

    Containers from scratch

    Build one with unshare, chroot and cgroups. No Docker.

    Being writtenPro
  9. 09

    VMs and hypervisors

    How one machine pretends to be several.

    Being writtenPro
  10. 10

    From source to running binary

    Compile, link, load: what happens before main().

    Being writtenPro