JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

A Tour of Real Operating Systems

You have spent this whole ladder learning the abstract ideas — processes, the kernel, scheduling, virtual memory, file systems — one at a time. This opening tour of the final rung does something different: it walks the great real-world operating systems and shows where every one of those ideas actually lives. We start with Unix and the design philosophy it gave the world, then meet the Linux kernel that grew from it and now runs from your phone to the largest supercomputers.

From ideas to real systems

You have climbed a long way. Rung by rung you learned what an operating system is and the small set of jobs it does for everyone: it runs many programs at once as processes, shares the CPU through scheduling, gives each program the illusion of its own memory through virtual memory, and hides the disk behind a tidy file system. Every one of those was taught as an idea, somewhat apart from any particular machine. This final rung does the opposite: it points at the real operating systems you actually use and asks where each of those ideas went.

It helps to ask what makes a real OS 'real' — what you are actually comparing when you put two of them side by side. Three questions sort most of it out. First, its lineage: which family it descends from, and what design tastes it inherited. Second, its kernel structure: is the core one big tightly-linked program, a tiny minimal core, or a blend? Third, its target hardware: was it built for a phone, a laptop, a server, or a tiny embedded controller with no screen? Almost everything else — the look, the tools, the names — follows from those three choices.

Unix and its philosophy

Almost every modern system you will meet traces back, directly or by imitation, to Unix — an operating system written at Bell Labs in the early 1970s. What made Unix matter was not a single feature but a coherent set of tastes about how software should be built, now remembered as the Unix philosophy. The slogans are easy to memorize and surprisingly deep: write programs that do one thing well; write programs that work together; and treat text streams as the common language between them, because text is the universal interface every tool already speaks.

The most famous expression of that taste is the idea that everything is a file. In Unix, you do not learn one special interface for the disk, another for the keyboard, another for the network, and another for a running device. Instead, nearly all of them are presented as files: things you open, read, and write with the same handful of operations. Your terminal is a file. A network connection looks like a file. Even kernel information is exposed as files you can simply read. That one unifying decision is why a tiny tool that only knows how to read and write text can, without knowing it, work on data coming from a disk, a sensor, or the far side of the planet.

This is also where the abstract ideas from earlier rungs stop being abstract. The 'file' you open through that uniform interface is exactly the file-system abstraction you studied; the small composable tools are just processes the kernel schedules; the pipe that lets one tool feed another is the kernel quietly wiring two processes together. Unix did not invent these mechanisms so much as arrange them into a philosophy — a strong opinion that simple, sharp tools combined by a uniform interface beat any one giant program that tries to do everything.

The Linux kernel

If Unix is the philosophy, the Linux kernel is its most successful living descendant. Linux is not the original Unix — it was written from scratch starting in 1991 — but it is Unix-like to the bone, faithful to the philosophy and to the 'everything is a file' interface. What set it apart was how it was built: in the open, by thousands of contributors around the world, with the source code free for anyone to read, change, and ship. That open development model, more than any one technical trick, is why Linux spread to almost every kind of computer there is.

Under the hood, Linux makes a specific kernel-structure choice you met earlier: it is a monolithic kernel. That means the big subsystems — the scheduler, the memory manager, the file systems, the network stack, the device drivers — all live together in one program, running in kernel mode in a single shared address space. The opposite design, the microkernel, keeps the core tiny and pushes those services out into separate programs. Monolithic kernels are fast, because subsystems call each other directly without crossing protection boundaries; the trade-off is that one buggy driver lives in the same space as everything else and can, in principle, take the whole kernel down.

But Linux is monolithic and modular, and that 'and' is the clever part. Through loadable kernel modules, chunks of kernel code — most often device drivers and file systems — can be loaded into the running kernel and unloaded again, without rebuilding it or rebooting the machine. So you get the speed of one tightly-integrated kernel together with much of the flexibility a microkernel was reaching for: the kernel ships small and grows only the parts a given machine actually needs. Plug in an unfamiliar device and the matching module loads on demand; that is monolithic-but-modular in action.

Where every idea you learned shows up

Now reread the abstract rungs through Linux as a concrete example, and the whole ladder snaps into focus. The scheduler you studied is a real piece of code choosing which thread runs next on each core. Virtual memory is the live page tables the hardware walks on every access. The file system is the on-disk layout plus the kernel layer that turns 'open this path' into block reads. Interrupts and drivers are how the kernel talks to actual devices. Inside one running Linux kernel, every chapter you climbed is present at once, working together — and you now have the vocabulary to read its source and recognize old friends.

This is also a good moment to recall the kernel's place in the machine. The kernel is the one program that runs in privileged mode and mediates every program's access to the hardware; everything else — your shell, your browser, your editor — is an ordinary process asking the kernel for things through system calls. A practical way to keep a real OS straight is the subsystems view: picture the kernel as a few cooperating departments — process and scheduling, memory, file system and storage, networking, and device drivers — each owning one of the ideas you learned. Compare two operating systems department by department and the differences become much easier to see.

Setting up the comparison

With Unix and Linux as our anchor, the comparative frame for the rest of this rung is in place. When you meet another real OS in the next guides, run it through the same three questions and a fourth that ties them together — its kernel structure choice.

  1. Lineage: where does it descend from? Unix-like (Linux, macOS, Android) inherits the philosophy and the 'everything is a file' instinct; Windows NT grew from a separate tradition with different tastes.
  2. Kernel structure: is the core a monolithic kernel (Linux), a microkernel, or a modular blend? This is the single choice that shapes the kernel's speed, safety, and how it grows.
  3. Target hardware: a phone, a laptop, a server, or a tiny controller? An embedded OS on a microcontroller and a real-time OS in a brake controller make very different trade-offs from a desktop.
  4. Then map its subsystems back to the ideas you learned: find its scheduler, its virtual memory, its file system, its driver model. The names differ; the jobs are the same ones you already understand.

Hold onto that frame. In the next guide it does real work: Windows NT, the XNU hybrid kernel under macOS and iOS, Android atop the Linux kernel, and the real-time and embedded world each answer those four questions differently, and that is precisely what makes them worth comparing rather than memorizing.