Operating Systems

The software that manages the hardware and runs your programs.

The operating system sits between your code and the hardware, deciding which program runs when, handing out memory and managing files. This track covers processes, threads, memory, files and system calls, which every language and app relies on.

  • Advanced
  • 7 lessons
  • Runs in your browser
Not started yet
Start lesson 1

Lessons

  1. What an OS Actually DoesAn operating system shares the hardware between many programs and keeps them from interfering with each other. This lesson covers its main jobs and the line between user programs and the kernel.
  2. ProcessesA process is a running program plus everything it owns, such as its memory and open files. You'll learn how processes are created, inspected and stopped.
  3. Threads & the SchedulerA machine with 8 cores can run hundreds of processes because the scheduler switches between them thousands of times per second. You'll learn how threads and scheduling work, and how to avoid data races.
  4. Memory: Virtual, Paged, SharedEach process sees its own private address space, even though they all share the same physical RAM. You'll learn how virtual memory makes this work and what it enables.
  5. Files, Descriptors & FilesystemsOn Unix, documents, terminals, network sockets and more are all read and written through the same small file interface. You'll learn how files, descriptors and permissions work.
  6. System Calls & Talking Between ProcessesWhenever a program prints, reads a file or opens a connection, it asks the kernel through a system call. You'll learn to watch those calls and see how processes talk to each other.
  7. OS CheatsheetProcesses, memory, files, and the commands to inspect them — one page.

Install it on your own computer

This is a concepts track, so there is nothing to install. A Linux shell is the best place to try things (WSL on Windows, Terminal on macOS, or any Linux machine), and the commands below let you watch the OS at work. You do not need this to follow the lessons: the examples run in your browser.

Bash
# Install WSL (a real Linux kernel inside Windows):
wsl --install

# Then inside WSL, watch the OS at work:
ps aux          # every process
top             # live process view
free -h         # memory usage

What people build with Operating Systems

Learn the basics first, then pick up these tools when a project needs them.

Practical uses

  • Understand processes, memory, files, and scheduling
  • Debug performance and resource failures
  • Build system software and containers
  • Operate servers with stronger mental models

Projects to try

  1. Process monitor
  2. Userspace file system
  3. Memory allocator simulator
  4. Small teaching kernel

Common tools and packages

straceperfGDBQEMUDockersystemd toolseBPFValgrind

Well-known software

LinuxWindows NTmacOS/XNUFreeBSDAndroidRedox OS