OS Fundamentals
inside the operating system โ how processes are created, how memory is managed, how the scheduler decides what runs next. the layer between your code and the hardware, explored hands-on with real Linux tools.

Processes & Execution
- 01
Introduction
freewhat an operating system is, why it exists, and what the kernel actually does between your code and the hardware
- 02
What Is a Process?
freewhat a process really is, how its memory is laid out, and why a running program is more than just code executing
- 03
fork(), exec(), and Process Creation
freehow to create processes with fork() and exec(), understand copy-on-write optimization, and trace the parent-child lifecycle
- 04
Process States & Lifecycle
freehow to identify process states (running, sleeping, zombie, orphan), trace state transitions, and diagnose stuck processes
- 05
Threads vs Processes
freehow to decide between threads and processes, understand shared memory trade-offs, and see how Linux implements both with clone()
- 06
Signals & Inter-Process Communication
freehow to use signals and pipes for inter-process communication, handle SIGTERM gracefully, and understand why SIGKILL can't be caught
CPU Scheduling
- 07
The Scheduling Problem
freewhy scheduling is fundamentally a data structures problem, and how the OS decides which process runs next
- 08
Scheduling Algorithms
voyagehow FCFS, round robin, and MLFQ work, their trade-offs, and why Linux moved from O(1) scheduling to CFS
- 09
Linux's Completely Fair Scheduler
voyagehow CFS uses red-black trees for O(log n) scheduling decisions, what virtual runtime means, and why this data structure powers every Linux machine
- 10
Priority, Nice Values & Real-Time Scheduling
voyagehow to control process priority with nice and renice, use real-time scheduling policies, and ensure time-critical processes run on schedule
- 11
Context Switching
voyagehow to understand the cost of context switching, what gets saved and restored, and how to measure switch overhead on your system
Memory Management
- 12
The Virtual Memory Illusion
voyagewhat virtual memory is, how the OS gives every process the illusion of owning all of RAM, and what actually happens when you dereference a pointer
- 13
Page Tables & Address Translation
voyagehow multi-level page tables translate virtual to physical addresses, why they are structured as trees, and the space-time trade-offs involved
- 14
TLB: The Translation Lookaside Buffer
voyagewhat the TLB is, how it accelerates address translation, and why huge pages and TLB miss handling matter for performance
- 15
Demand Paging & Page Faults
voyagehow demand paging defers memory allocation until access, what triggers page faults, and how to diagnose page fault storms
- 16
Page Replacement Algorithms
voyagehow LRU, clock, and other eviction algorithms decide which pages to remove when RAM is full, and why optimal replacement is impossible in practice
- 17
Memory Allocators: Inside malloc()
voyagehow malloc() works under the hood, what free lists and buddy allocators do, and how slab allocation makes dynamic memory efficient
Concurrency & Synchronization
- 18
Concurrency & Race Conditions
voyagewhat race conditions and data races are, why they happen when threads share data, and how to identify unsafe concurrent code
- 19
Mutexes & Critical Sections
voyagehow to use mutexes to protect critical sections, understand the cost of locking, and decide when mutual exclusion is the right tool
- 20
Semaphores & Condition Variables
voyagehow to coordinate thread execution order with semaphores and condition variables, and implement the producer-consumer pattern
- 21
Deadlock: Detection, Prevention & Avoidance
voyagehow to recognize the four conditions for deadlock, apply prevention strategies, and understand why databases rely on deadlock detection
- 22
Lock-Free Data Structures
voyagehow to build concurrent data structures without locks using compare-and-swap and atomic operations, and avoid the ABA problem
File Systems
- 23
Files & File Descriptors
voyagewhat file descriptors really are, how the file table works, and why the 'everything is a file' abstraction unifies devices, sockets, and storage
- 24
Inodes & Directory Structure
voyagehow inodes store file metadata on disk, what directory entries are, and how hard links and soft links differ
- 25
Filesystem Implementation: ext4
voyagehow ext4 organizes data with block groups, bitmaps, and extents, and how its B-tree makes directory lookups fast
- 26
Journaling & Crash Recovery
voyagehow journaling and write-ahead logging protect against data corruption during crashes, and why fsck is mostly obsolete
- 27
The Virtual Filesystem (VFS)
voyagehow the VFS abstraction lets Linux support dozens of filesystems through one interface, and how inode and dentry caches speed up path lookup
I/O & Storage
- 28
Block Devices & Drivers
voyagehow the kernel communicates with storage hardware through block devices and device drivers, and what the block layer does
- 29
I/O Scheduling
voyagehow I/O schedulers order disk requests for performance, what elevator algorithms do, and why SSDs changed scheduler design entirely
- 30
Buffering & Caching
voyagehow the page cache and buffer cache work, why writes don't hit disk immediately, and how to use sync and fsync for durability guarantees
- 31
SSD vs HDD: Performance Characteristics
voyagehow SSDs differ from HDDs in access patterns and performance, what wear leveling and TRIM do, and why flash storage changes how you write software
Virtualization & Containers
- 32
Virtualization Fundamentals
voyagewhat hypervisors are, how hardware virtualization works, and how VMs create the illusion of dedicated machines
- 33
Linux Namespaces
voyagehow Linux namespaces provide isolation without virtualization, and how PID, mount, and network namespaces form the building blocks of containers
- 34
Control Groups (cgroups)
voyagehow to set CPU, memory, and I/O limits with cgroups, and how the kernel enforces resource boundaries for containers
- 35
Container Internals: Building a Container from Scratch
voyagehow to build a container from scratch using only namespaces, cgroups, and filesystem primitives โ no Docker, just Linux