Section 02: Operating System History — Overview
Section Purpose and Scope
Operating systems did not arrive fully formed. They evolved over sixty years through a series of necessity-driven inventions, each solving the problems created by the previous generation. This section traces that evolution with rigor: from the absence of any OS (direct programming of hardware) through batch monitors, through time-sharing systems, through the Unix revolution, through the fragmentation and consolidation of the 1980s and 1990s, to the modern landscape of Linux, Windows NT, and XNU.
The focus is on design decisions and their lasting consequences. Why does Unix have pipes? Why is the Windows registry a database? Why does Plan 9 treat everything as a file more radically than Unix? Why did microkernels "lose" to monolithic kernels in production despite appearing theoretically superior? These answers are in this section.
Prerequisites
- Section 00 (Foundations): user/kernel space, privilege rings, system calls
- Section 01 (Computer History): hardware generations and key figures
Learning Objectives
After completing this section you will be able to:
- Trace the lineage of any major OS to its historical roots
- Explain the technical motivation for each major OS innovation (time-sharing, virtual memory, pipes, etc.)
- Describe the architectural decisions that distinguish Unix, Windows NT, and XNU at a design level
- Understand why the microkernel vs. monolithic debate matters and how it was settled in practice
- Articulate Plan 9's design philosophy and what it accomplished that Unix did not
- Explain the origin and architecture of real-time operating systems
Architecture Overview
OS LINEAGE TREE (Simplified)
MULTICS (1965, MIT/Bell Labs/GE)
│
├──► Influenced: segmented memory, rings, file hierarchy
│
UNIX (1969, Bell Labs — Thompson, Ritchie)
│
├──► Research Unix (V1–V10)
│ │
│ └──► Plan 9 (1992) ──► Inferno (1996)
│
├──► AT&T Unix (System III → System V → SVR4)
│ └──► Solaris (Sun/Oracle)
│
└──► BSD (1977, UCB)
├──► 4.4BSD-Lite
│ ├──► FreeBSD ──► PlayStation OS
│ ├──► NetBSD ──► OpenBSD
│ └──► macOS/iOS/XNU (with Mach microkernel)
└──► SunOS (early)
Separately:
CP/M (1974, Kildall)
└──► MS-DOS (1981) ──► Windows 9x (not NT)
TOPS-10/VMS lineage ──► Windows NT (1993, Cutler)
├──► Windows 2000
├──► Windows XP/Vista/7/10/11
└──► Xbox OS / HoloLens OS
MINIX (1987, Tanenbaum)
└──► Inspired Linux (1991, Torvalds)
└──► Android (Linux + Bionic libc)
Real-Time:
VxWorks (1987), QNX (1982, microkernel), RTLinux, PREEMPT_RT
Key Concepts
- Batch Monitor: The earliest OS primitive — a resident program that automatically loaded the next job when the current one finished, eliminating operator intervention between jobs.
- Time-Sharing: Multiple users share a machine interactively, each believing they have exclusive use. Requires preemptive scheduling and memory isolation.
- MULTICS (Multiplexed Information and Computing Service): A joint MIT/Bell Labs/GE project (1965) that pioneered rings, hierarchical file systems, dynamic linking, and online storage. Overcomplicated and never commercially successful, but intellectually dominant.
- Unix Philosophy: Write programs that do one thing well. Write programs to work together. Write programs to handle text streams (the universal interface).
- Pipes: Thompson's invention (1973) — a unidirectional byte stream connecting the stdout of one process to the stdin of another. Enables composition of small tools.
- Virtual Memory: Abstracting physical RAM into a larger virtual address space using disk backing (paging/swapping). Enables programs larger than physical RAM and memory isolation.
- BSD (Berkeley Software Distribution): Derivatives of Unix developed at UCB. Introduced sockets (Berkeley sockets, 1983), virtual memory (4.2BSD), fast file system (FFS), and TCP/IP implementation.
- Plan 9: Bell Labs successor to Unix (1992). Extends "everything is a file" to include the network, window system, and CPU scheduler. Uses 9P protocol; influenced Go's concurrency model.
- Windows NT: A clean-room, capability-based, microkernel-influenced OS written by Dave Cutler's team. Designed for portability, security, and SMP support from the start.
- XNU (X is Not Unix): The hybrid kernel at the core of macOS and iOS. Combines a Mach microkernel (for IPC and virtual memory) with BSD subsystem code and I/O Kit for drivers.
- Real-Time OS (RTOS): An OS that guarantees bounded response times to external events. Hard RTOS (missed deadline = system failure); soft RTOS (missed deadline = degraded quality).
Major Historical Milestones
| Year | Milestone |
|---|---|
| 1956 | IBM 704 Monitor — earliest batch system |
| 1961 | CTSS (Compatible Time-Sharing System) at MIT — first time-sharing system |
| 1964 | IBM OS/360 — first OS designed to span a hardware family |
| 1965 | MULTICS project begins at MIT/Bell Labs/GE |
| 1969 | Unix written by Thompson on a PDP-7, reimplemented on PDP-11 |
| 1972 | Unix rewritten in C — first portable OS |
| 1973 | Thompson adds pipes to Unix |
| 1974 | Research Unix V5 widely distributed to universities |
| 1977 | BSD 1.0 released by UCB |
| 1979 | Unix System III (AT&T); 3BSD introduces virtual memory |
| 1982 | QNX ships — first production microkernel RTOS |
| 1983 | BSD 4.2 introduces sockets and TCP/IP |
| 1984 | AT&T breaks up; Unix licensing becomes commercial; Stallman founds GNU |
| 1985 | 4.3BSD; Mach microkernel project begins at CMU |
| 1987 | MINIX 1.0 (Tanenbaum); PS/2 and OS/2 from IBM/Microsoft |
| 1988 | POSIX.1 standard published |
| 1991 | Linux 0.01 posted by Torvalds ("just a hobby, won't be big") |
| 1992 | Plan 9 from Bell Labs released; Windows 3.1 |
| 1993 | Windows NT 3.1; FreeBSD 1.0; Solaris 2.0 (SVR4) |
| 1994 | Linux 1.0; NetBSD and OpenBSD split from 386BSD |
| 1996 | Inferno OS (Plan 9 derivative with Limbo language) |
| 2000 | Mac OS X Developer Preview (Mach + BSD = XNU) |
| 2001 | Mac OS X 10.0; Windows XP (NT 5.1) |
| 2003 | Linux 2.6 — major scheduler rewrite, NPTL, vastly improved SMP |
| 2007 | Android based on Linux kernel |
| 2010 | iOS already dominant; ARM Linux proliferates |
| 2011 | Linux 3.0; cgroups v1 mature; containers become practical |
| 2013 | Docker popularizes Linux containers |
| 2015 | Linux 4.0; eBPF extended for tracing and networking |
| 2019 | io_uring merged — async I/O without system call overhead |
| 2022 | Linux 6.x; PREEMPT_RT fully merged into mainline |
Modern Relevance and Production Use Cases
Linux dominance: As of 2025, Linux runs >96% of the world's top 500 supercomputers, virtually all public cloud infrastructure, all Android devices, and most embedded systems. Understanding its Unix heritage directly explains its design.
Windows NT in production: Despite its different lineage, Windows NT's kernel concepts (HAL, Executive, subsystem model) are relevant to anyone operating Windows Server, Xbox, or HoloLens fleets.
XNU and the Apple ecosystem: Every macOS and iOS device runs XNU. The Mach IPC system underlies Grand Central Dispatch; the BSD layer provides the POSIX API; I/O Kit provides the driver model. Security researchers and embedded Apple developers must understand this.
Real-time and safety-critical: QNX powers car infotainment and medical devices; VxWorks runs in spacecraft; RTEMS runs in avionics. PREEMPT_RT patches bring hard real-time to mainline Linux, used in industrial control.
Design lessons still taught: The microkernel vs. monolithic debate (Tanenbaum-Torvalds flame war, 1992) was never purely technical — it was about the cost of IPC, the practicality of driver isolation, and the value of simplicity. These lessons recur in modern debate about eBPF, FUSE, and user-space networking.
File Map
02-operating-system-history/
├── 00-overview.md ← This file
├── 01-batch-systems.md ← Pre-OS, batch monitors, spooling
├── 02-time-sharing-origins.md ← CTSS, MULTICS design and legacy
├── 03-unix-origins.md ← Thompson/Ritchie, PDP-11, Unix philosophy
├── 04-unix-evolution.md ← Research Unix, System V, POSIX standardization
├── 05-bsd-lineage.md ← BSD 1.0–4.4, sockets, FFS, TCP/IP
├── 06-plan9-and-inferno.md ← 9P protocol, namespaces, Limbo language
├── 07-linux-origins.md ← MINIX → Linux 0.01, GPL, rapid growth
├── 08-linux-evolution.md ← 2.4 → 2.6 → 4.x → 6.x key changes
├── 09-windows-nt-architecture.md ← Cutler's design, HAL, Executive, subsystems
├── 10-xnu-architecture.md ← Mach + BSD, I/O Kit, launchd
├── 11-real-time-os.md ← QNX, VxWorks, RTEMS, PREEMPT_RT
├── 12-os-lineage-tree.md ← Comprehensive visual lineage with dates
Cross-References
- Section 01 (Computer History): Hardware that drove each OS generation
- Section 03 (Kernel Fundamentals): Implementation details of concepts introduced historically here
- Section 04 (Kernel Architecture): Monolithic vs. microkernel as historical and technical debate
- Section 35 (Real-Time Systems): RTOS internals in depth
- Section 43 (Formal Verification): seL4 microkernel — formally verified OS
Recommended Depth of Study
Essential: Files 01–08. Unix history and Linux evolution are foundational for all server-side systems work.
Deep dive recommended: Files 09–10 for anyone operating or developing on Windows or macOS. File 11 for embedded, automotive, or safety-critical work.
Reference use: File 12 (lineage tree) — bookmark it. You will return to it throughout the archive.
Estimated study time: 12–18 hours for full coverage with primary source reading (the Unix papers are worth reading in the original).