TLTLBeast
← Back to timeline

VAX/VMS Memory System

DEC's clean VM manager — 512B pages, segmented address space, no reference bit, and segmented FIFO with second-chance lists.

operating-systemsvirtual-memoryvaxvmspage-replacement
Handwritten notes on the VAX/VMS memory system and address space layout
Day scribble — VAX address space, PTEs, segmented FIFO

Background

VAX/VMS — reputedly a clean, well-done virtual memory manager. DEC introduced the VAX-11 in the late 1970s; Dave Cutler led the VMS OS.

Hardware sketch

VA32-bit per process
Page size512 bytes (too small → big page tables)
VPN23 bits
Offset9 bits

Upper VPN bits select which segment the page lives in.

Why segment?

512B pages → linear page tables get huge. Fix: segment the address space (user / system).

Address space layout

0 ─────────────── Page 0 invalid
│  User code / user heap     (P0)
│    heap grows ↓
2³⁰ ─────────────
│  User stack                (P1)
2³¹ ─────────────
│  System (S)
│    trap, kernel data/code
│    kernel heap ↓ against unused
2³² ─────────────
   Unused

PTE bits

Valid, protection, dirty, PFN — but no reference bit. That hurts replacement (memory hogs).

Replacement: segmented FIFO

VMS uses segmented FIFO with second-chance lists — pages land there as they're evicted, getting another shot before they're really gone.

Get in Touch

Questions, feedback, or just want to talk systems? Send a message and it'll land in my inbox.

If I send you a message back, it might end up in your spam folder — just please check that.