Every operating systems visualization on this site on one map. The branches are the main ideas. Each leaf is a page; the grey line under it is the one thing to remember about it. Click a branch to focus on it, click a page to open it.
Ask which resource the kernel is managing on that page, and you know the branch:
main() runs: boot and program start.| Branch | Resource | Key structure | Typical failure |
|---|---|---|---|
| Boot and program start | the machine, a binary | ELF file, GOT/PLT | kernel panic, missing .so |
| Processes and the kernel | a process | task, fd table | zombie, broken pipe |
| Interrupts and devices | CPU attention | IDT, IRQ line | interrupt storm, dropped packets |
| Scheduling and deadlock | CPU time | run queue | starvation, priority inversion |
| Virtual memory | addresses | page table, TLB | SIGSEGV, thrashing |
| Physical memory | RAM frames, bytes | free lists, malloc chunks | fragmentation, OOM kill |
| Files and storage | disk blocks | inode, page cache | data lost without fsync |
| Disks and RAID | disk sectors, flash pages | request queue, stripe layout | bad sector, slow rebuild, write hole |
| Isolation and security | what a process may do | cred, namespaces, cgroups | EACCES, EPERM |
fork() is cheap because of copy-on-write: a page is copied only when someone writes to it.write() usually only dirties the page cache; the data is safe on disk only after fsync().See all operating systems pages in the index, or the other mind maps.