Operating Systems
Processes, memory, files and scheduling.
Operating Systems is taught here in 14 lessons, running from Processes and threads through to Virtualisation and hypervisors. Each lesson takes one topic, shows the working code, and links onward to the next, so the course can be read straight through in order.
| Track | Computer Science Fundamentals |
| Lessons | 14 |
| Level | Beginner to intermediate |
| Reading time | about 3 hours |
| Prerequisites | Helpful, but not required: Computer Networks |
Lessons
- Processes and threadsWhat a process owns, what threads share, how the scheduler switches between them, and how processes cooperate.
- Memory and virtual memoryAddress spaces, the stack and heap, paging and page faults, and how swapping and the OOM killer decide what survives.
- Files, permissions and I/OInodes, hard and symbolic links, the permission bits that matter, and how buffered versus direct I/O changes durability and speed.
- What an operating system doesKernel versus user space, privilege rings, what a system call really costs, and how an ordinary library call becomes a trap into kernel code.
- CPU scheduling: how the CPU is sharedRun queues and time slices, priorities and nice values, preemption and why a process stops, real-time scheduling classes, and how to read load average correctly.
- Synchronisation: locks, mutexes and semaphoresThe critical section problem, mutexes and semaphores compared, condition variables, atomic operations, and how reader-writer locks trade fairness for concurrency.
- Races, deadlocks and starvationHow to detect a data race, the four conditions a deadlock needs, lock ordering and timeouts as the practical fixes, and the difference between live-lock and starvation.
- Inter-process communicationPipes and FIFOs, signals and their handlers, shared memory with semaphores, message queues, and local sockets as the general-purpose option.
- Concurrency models: threads, async and processesThread pools versus event loops, what async actually does under the hood, multi-process workers, and how to pick a model that matches the workload.
- Monitoring and troubleshootingps and top for a snapshot, /proc and /sys for the details, strace for what a process is asking for, lsof for what it holds, and how to diagnose a hung process.
- Storage and file systemsBlocks, journals and consistency, how ext4, NTFS and APFS differ, copy-on-write snapshots, SSD wear levelling and TRIM, and what fsck can and cannot fix.
- Booting, init systems and servicesFirmware and bootloaders, how the kernel starts the first process, systemd units versus init scripts, targets and dependencies, and where to find service logs.
- Containers, namespaces and cgroupsA container is processes with a restricted view, not a virtual machine — how namespaces isolate each resource, what cgroups limit, and how layered images work.
- Virtualisation and hypervisorsType 1 and type 2 hypervisors, hardware virtualisation extensions, paravirtualised drivers, live migration, and why a guest rarely performs exactly like bare metal.
More in Computer Science Fundamentals
Algorithms Data Structures Computer Networks Character Encodings Hashing & Checksums Data Formats Dates & Time Regular Expressions
FAQ
How long does the Operating Systems course take?
It has 14 lessons, about 3 hours of reading. Expect roughly twice that if you type out and run every example.
Do I need prior experience for Operating Systems?
Not strictly. It helps to have read Computer Networks first, because some lessons build on it, but every lesson explains its own assumptions.
What should I read after Operating Systems?
Continue with Character Encodings (14 lessons), the next course in Computer Science Fundamentals.