[TUHS] history of virtual address space
John Levine via TUHS
tuhs at tuhs.org
Tue Jan 20 12:22:04 AEST 2026
It appears that ron minnich via TUHS <rminnich at gmail.com> said:
>I was trying to remember how virtual address space evolved in Unix.
>
>When I joined the game in v6 days, processes had virtual 0->0xffff, with
>the potential for split I/D IIRC, getting you that bit of extra space. The
>kernel also had virtual 0->0xffff, also with split I/D. The kernel
> accessed user data with mov/load from previous address space instructions.
>But also on the 11, trap vectors chewed up a chunk of low physical memory,
>and the diode ROM took out some chunk of high physical. The bootstrap you
>set from the front panel started with many 1's.
>
>Later, when we had bigger address spaces on 32- bit systems, page 0 was
>made unavailable in users address space to catch NULL pointers. Did that
>happen on the VAX at some point, or later?
Someone said in 4.2BSD which seems right. I fixed my share of code that
assumed that *0 == 0
>Later we got the "kernel is high virtual with bit 31 set" -- when did that
>first happen?
That's how VAX addressing worked. User programs were in the low half
of the address space, the kernel in the high half.
More information about the TUHS
mailing list