whoami
A 60-year tour through process schedulers, virtual memory, file systems, and the kernels that ate the world. 17 pages.
| year | system | note |
|---|---|---|
| 1964 | Multics | MIT/Bell/GE — too ambitious, hugely influential |
| 1969 | UNIX | Thompson + Ritchie at Bell Labs, on a PDP-7 |
| 1973 | UNIX in C | UNIX rewritten in the brand-new C language |
| 1981 | MS-DOS 1.0 | licensed to IBM PC |
| 1983 | 4.2BSD | TCP/IP, sockets, fast file system |
| 1984 | System 1 | Macintosh — bitmapped, mouse-driven |
| 1985 | Windows 1.0 | shell over DOS |
| 1991 | Linux 0.01 | Torvalds, comp.os.minix announcement |
| 1993 | Windows NT 3.1 | preemptive multitasking, NTFS |
| 2001 | Mac OS X 10.0 | Mach + BSD + NeXTSTEP |
| 2007 | iPhone OS | Darwin-based mobile fork |
| 2008 | Android 1.0 | Linux + Java + Apache user space |
Multiplexed Information and Computing Service. A joint MIT / Bell Labs / GE project to build a "computer utility" — time-sharing, hierarchical file systems, segment-based virtual memory, security rings. Bell Labs withdrew in 1969 because it was too late and too expensive. Two of those researchers, Ken Thompson and Dennis Ritchie, then went off to do something simpler.
Thompson, Ritchie, McIlroy, Ossanna and others at Bell Labs. The first version ran on a discarded PDP-7 in summer 1969. By 1973 it was rewritten in C. Key ideas, all of them now ubiquitous:
/* the most quoted UNIX line, K&R C */ main() { printf("hello, world\n"); }
UNIX V6 (1975) and V7 (1979) ran on the PDP-11. The 1976 publication of John Lions's A Commentary on the UNIX Operating System spread the V6 source through xerox copies for a decade. Later, AT&T's lawyers banned redistribution; the BSDs grew up around the original code.
+-------------+
| PDP-11/70 | <-- 16-bit, ~625 ns mem cycle
+------+------+
|
UNIBUS bus
|
+--------+--------+--------+
| | | |
RK11 DECtape TTY Network
Tim Paterson wrote QDOS at Seattle Computer Products in 1980; Microsoft bought it for $50,000 in July 1981 and licensed it to IBM as PC-DOS 1.0 that August. Single-tasking, real-mode, 640 KB. Ran the world from 1981 to roughly 1995.
C:\> DIR /W
Volume in drive C is HARD DISK
Directory of C:\
COMMAND.COM AUTOEXEC.BAT CONFIG.SYS DOS<DIR>
4 file(s) 96340 bytes
527294464 bytes free
System 1 booted from a 400 KB floppy on a 128 KB Mac. Bitmapped display, single-button mouse, cooperative multitasking via the Process Manager. Successive systems through Mac OS 9 (1999) added preemption sparingly. Mac OS X 10.0 "Cheetah" (March 2001) replaced the kernel with the XNU hybrid (Mach 3.0 microkernel + BSD personality), Cocoa over NEXTSTEP/OpenStep, Quartz graphics.
| release | year |
|---|---|
| System 1.0 → 9.2.2 | 1984–2001 |
| Mac OS X 10.0 Cheetah | 2001 |
| OS X 10.6 Snow Leopard | 2009 |
| macOS 11 Big Sur (ARM) | 2020 |
| macOS 15 Sequoia | 2024 |
Two parallel families until 2001:
NT introduced a hybrid kernel, NTFS, the registry, and a hardware abstraction layer that let it run on x86, MIPS, Alpha, PowerPC, and later ARM.
Linus Torvalds, comp.os.minix, August 25, 1991:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: What would you like to see most in minix?
Date: 25 Aug 91 20:57:08 GMT
I'm doing a (free) operating system (just a hobby,
won't be big and professional like gnu) for 386(486)
AT clones. ... Any suggestions are welcome, but I won't
promise I'll implement them :-)
Version 0.01 was 10,239 lines. Linux today is the operating system of the Linux Foundation's TOP500 cluster (100% Linux since 2018), Android phones, embedded routers, AWS/GCP/Azure, your fridge, and a small but devoted desktop population.
| BSD | focus |
|---|---|
| FreeBSD | Performance, server use; powers Netflix CDN |
| OpenBSD | Security; OpenSSH, LibreSSL, sudo replacement |
| NetBSD | Portability — runs on toasters, allegedly |
| DragonFlyBSD | Hammer FS, threading research |
macOS, iOS, the Sony PlayStation OS, and parts of Microsoft's networking stack all derive from BSD code.
+-------+ fork() +-------+
| proc | ----------> | proc |
| (parent) | (child)
+---+---+ +---+---+
| |
| wait() | exec()
v v
blocked new program text
Modern Linux uses CFS (Completely Fair Scheduler) since 2.6.23 (2007); the EEVDF scheduler replaced it in 6.6 (2023). macOS uses a Mach-based timeshare with grand central dispatch in user space. Windows scheduling is priority-based with multilevel feedback queues and processor groups.
virtual addr ----> +----+ ----> +----+ ----> +----+ ----> physical
| PML4| | PDP | | PD | | PT |
+----+ +----+ +----+ +----+
4 KB / 2 MB / 1 GB pages on x86_64
The MMU translates each virtual address through 4 (or 5, on Ice Lake +) levels of page tables. The TLB caches recent translations. Modern systems handle ~100 GB of RAM with ~0.1% overhead.
| FS | year | family | note |
|---|---|---|---|
| FFS | 1984 | BSD | cylinder groups, fast metadata |
| NTFS | 1993 | Windows | journaling, ACLs |
| ext4 | 2008 | Linux | extents, default for years |
| ZFS | 2005 | Solaris/BSD | copy-on-write, checksums, RAID-Z |
| btrfs | 2009 | Linux | copy-on-write, snapshots |
| APFS | 2017 | macOS/iOS | copy-on-write, encryption |
iOS (2007) — Darwin kernel (XNU), Cocoa Touch, sandboxed apps. Renamed iPhone OS 1, 2, 3 then iOS from 4. Watchm tvOS, visionOS all share the Darwin lineage.
Android (2008) — Linux kernel, Bionic libc, ART runtime. AOSP is open; Google Mobile Services (GMS) is the proprietary layer.
HarmonyOS NEXT (2024) — Huawei's first non-Linux release since the U.S. ban; microkernel-based.
monolithic microkernel hybrid
+----------+ +----+ +----+ +----------+
|kernel | | FS | | NET| | NT |
| + drivers| +----+ +----+ | exec/io |
| + FS, IPC| +-----------+ +----+----+
+----------+ | microkern | | drv,gfx |
Linux, BSD | (msg pass)| +---------+
+-----------+ Windows NT,
Minix, QNX, L4 macOS XNU
| term | def |
|---|---|
| kernel | the core OS code running in privileged CPU mode. |
| syscall | controlled entry from user code into the kernel. |
| ABI | application binary interface — calling conventions, syscall numbers. |
| IPC | inter-process communication: pipes, sockets, shared memory, mqueues. |
| cgroup | Linux resource grouping; basis for containers. |
| namespace | per-process view of system resources; with cgroups → containers. |
logout_