Linux Memory Issues includes Some Architecture History, Backward Compatibility, Linux must accommodate legacy, Other CPU Architectures, Zones divided into Pages, How 80x86 Addresses RAM, Logical to Linear. | Linux Memory Issues An introduction to some low-level and some high-level memory management concepts Some Architecture History • • • • • • 8080 (late-1970s) 16-bit address (64-KB) 8086 (early-1980s) 20-bit address (1-MB) 80286 (mid-’80s) 24-bit address (16-MB) 80386 (late-’80s) 32-bit address (4-GB) 80686 (late-’90s) 36-bit address (64-GB) Core2 (mid-2000s) 40-bit address (1-TB) ‘Backward Compatibility’ • • • • • • • Many buyers resist ‘early obsolescence’ New processors need to run old programs Early design-decisions leave their legacy 8086 could run recompiled 8080 programs 80x86 can still run most 8086 applications Win95/98 could run most MS-DOS apps But a few areas of incompatibility existed Linux must accommodate legacy • • • • • • • Legacy elements: hardware and firmware CPU: reset-address and interrupt vectors ROM-BIOS: data area and boot location Display Controllers: VRAM & video BIOS Support chipsets: 15MB ‘Memory Window’ DMA: 24-bit memory-address bus SMP: combined Local and I/O APICs Other CPU Architectures • Besides IA-32, Linux runs on other CPUs (., PowerPC, MC68000, IBM360, Sparc) • So must accommodate their differences – Memory-Mapped I/O – Wider address-buses – Non-Uniform Memory Access .