What is an Operating System?
Part 1 of the Operating System Fundamentals series.
Operating systems are everywhere—from the smartphone in your pocket to the servers running your favorite websites. It's the software layer sitting between your apps and the bare metal, quietly making everything work.
I've always found OS concepts fascinating. There's something satisfying about understanding what happens when you double-click an icon or why your computer doesn't crash when one tab freezes. This series is my attempt to distill those ideas.
So what exactly is an Operating System?
An operating system is a program that manages a computer's hardware. It also provides a basis for application programs and acts as an intermediary between the computer user and the computer hardware.
— Silberschatz, Galvin, and Gagne, Operating System Concepts
That's the textbook definition, but I prefer to think of Operating System in term of what it does.
What does it actually do?
It shares resources. You've got one CPU but dozens of programs wanting attention. The OS slices up time and hands it out. Same with memory—everyone gets their own space, and the OS makes sure nobody steps on anyone else's toes.
It hides complexity. Writing directly to a hard drive is painful. Different drives have different protocols. The OS gives you open() and write() and handles the ugliness underneath. You don't need to care whether it's an SSD or a spinning HDD.
It keeps things isolated. Ever had a browser tab crash without taking down your whole system? That's the OS drawing boundaries. One buggy process can't corrupt another's memory.
It provides building blocks. File systems, networking, process management. Every app needs these, so the OS provides them once instead of having everyone reinvent them badly.
In short, it does a lot of things, and all of this is simply to make application run reliably and securely.
Why bother learning Operating System?
It's made me a better developer. When something hangs, leaks memory, or behaves weirdly under load, knowing what the OS is doing helps me ask the right questions. Instead of guessing, I can reason about what's actually happening.
OS design is also where you'll find some of the most important principles in computing—the end-to-end argument, isolation, concurrency, indirection, caching. These aren't just OS tricks. They show up in databases, networking, distributed systems, even API design. Learn them once here, and you'll keep seeing them everywhere.
Next: The Process Abstraction—threads, address spaces, and how your computer runs multiple programs.