π₯οΈ Operating Systems
Processes, memory, files, scheduling. 51 topics, from beginner to advanced.
An operating system manages the hardware of a computer and gives programs a safe, consistent environment. This area explains processes and threads, CPU scheduling, virtual memory, file systems and device input and output. These mechanisms are why many programs can run at once without interfering with each other.
Who this area is for
Students of systems programming, backend developers who debug performance issues, and anyone who wants to know what happens when they start a program.
Real-world use cases
- Understanding why a program slows down when it runs out of memory and starts swapping.
- Diagnosing a deadlock between two threads that wait on each other.
- Choosing file permissions and understanding how the file system stores data.
- Reading process and memory metrics to find out why a server is slow.
- Setting file permissions so that only the right users can read a secret configuration file.
Topics in Operating Systems
Beginner (17)
- What is an Operating System β Software managing hardware and providing services to programs.
- Kernel β Privileged core of the OS controlling hardware access.
- User Mode vs Kernel Mode β Privilege levels separating applications from the OS core.
- System Calls β Controlled entry points for programs to request kernel services.
- Processes β Running instances of programs with their own resources.
- Process States β Lifecycle phases such as ready, running and waiting.
- Process Control Block β Kernel record holding a process's metadata.
- Threads β Lightweight execution units sharing a process's memory.
- Context Switching β Saving one task's state and loading another's.
- CPU Scheduling β Deciding which ready task runs next.
- Round Robin Scheduling β Time-sliced scheduling cycling through tasks in turn.
- Shortest Job First β Scheduling policy favoring the task with least remaining time.
- Priority Scheduling β Choosing tasks according to assigned importance.
- Shell and Command Line β Text interface for launching programs and scripting.
- Fork and Exec β Unix primitives for creating processes and loading programs.
- Inter-Process Communication β Mechanisms for processes to exchange data.
- Pipes and Signals β Byte streams between processes and asynchronous notifications.
Intermediate (17)
- Race Conditions β Bugs where outcome depends on unpredictable timing.
- Critical Section β Code region that must not run concurrently.
- Mutex β Lock granting exclusive access to a resource.
- Semaphores β Counters controlling access by multiple units.
- Monitors β Language-level constructs bundling data, locks and conditions.
- Deadlock β Cycle of tasks each waiting for resources held by another.
- Deadlock Prevention and Avoidance β Strategies like the Banker's algorithm to avoid circular waits.
- Dining Philosophers β Classic puzzle illustrating resource contention.
- Memory Management β Allocating and tracking memory among programs.
- Paging β Splitting memory into fixed-size blocks mapped on demand.
- Segmentation β Dividing memory into logical variable-size units.
- Virtual Memory β Abstraction giving programs more address space than physical RAM.
- Page Faults β Traps when a needed page is not resident in memory.
- Page Replacement Algorithms β Policies such as FIFO, LRU and Clock for choosing victims.
- Thrashing β Excess paging that cripples performance.
- Memory Allocation β Strategies like first-fit and buddy systems.
- Memory Mapped Files β Treating file contents as memory regions.
Advanced (17)
- File Systems β Structures organizing named data on storage.
- Inodes β Metadata records describing files in Unix file systems.
- Directory Structures β Hierarchies and links organizing files.
- File Allocation Methods β Contiguous, linked and indexed block placement.
- Journaling File Systems β File systems logging changes to recover after crashes.
- Disk Scheduling β Ordering disk requests such as SCAN to reduce seek time.
- I/O Management β Drivers, buffering and spooling for devices.
- Device Drivers β Modules that let the OS talk to specific hardware.
- Booting Process β Steps from power-on to a running OS.
- Real-Time Operating Systems β Systems guaranteeing responses within deadlines.
- Virtualization β Running multiple isolated systems on shared hardware.
- Containers β Lightweight OS-level isolation sharing a kernel.
- Hypervisors β Software creating and running virtual machines.
- Namespaces and Cgroups β Linux features isolating and limiting process resources.
- Microkernels vs Monolithic Kernels β Minimal kernel with user-space services versus all-in-one kernels.
- Linux Kernel Internals β Structure and mechanisms of the Linux kernel.
- Scheduling in Multiprocessors β Balancing load and affinity across CPU cores.
How to study Operating Systems
Follow one process through its life: creation, scheduling, memory access, file input and output, and exit. On a Linux machine, watch real processes with top or ps while you read each topic. Draw the scheduling and paging examples by hand to check your understanding.
Frequently asked questions
What is the difference between a process and a thread?
What is virtual memory?
Why do operating systems use system calls?
Why does an operating system need scheduling?
Is Linux or Windows a better subject for studying operating systems?
Open the interactive Operating Systems area Take the Operating Systems quiz
Other areas
- π» Programming Fundamentals
- π§± Data Structures
- βοΈ Algorithms
- π Computer Architecture & Logic
- π Computer Networks
- ποΈ Databases
- ποΈ Software Engineering
- πΈοΈ Web Development
- π Security & Cryptography
- β Theory & Discrete Math
- 𧬠Languages & Compilers
- π€ AI & Machine Learning
- βοΈ Distributed Systems & Cloud
- π¨ Graphics, Vision & Media
- π Math for Computing
- π Concurrency & Parallelism
- π± Mobile, Embedded & IoT
- π οΈ DevOps & Tooling
- π Emerging & Frontier Topics