Skip to content

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:

  1. Trace the lineage of any major OS to its historical roots
  2. Explain the technical motivation for each major OS innovation (time-sharing, virtual memory, pipes, etc.)
  3. Describe the architectural decisions that distinguish Unix, Windows NT, and XNU at a design level
  4. Understand why the microkernel vs. monolithic debate matters and how it was settled in practice
  5. Articulate Plan 9's design philosophy and what it accomplished that Unix did not
  6. 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

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).