[TUHS] Evolution of Unix (demand) paging 1980-1985
pnr at planet.nl
Sat May 1 20:07:54 AEST 2021
As an offshoot of looking more closely at 32V, SysIII and 8th Edition I got interested in how each managed memory.
I’ve not deep-dived into the code yet, but from cursory inspection and searching past posts on this list, I get to the following summary:
- As has been documented widely, 32V essentially retained the V7 swapping architecture, merely increasing the maximum process size a bit versus the PDP-11 version.
- SysIII appears to have retained this, just cleaning up the source code a bit. I assume that all the V7/SysIII derivatives of the early 80’s were swapping systems.
- John Reiser further developed 32V memory management into a (reportedly elegant) demand paging system in 1980-1981, but this code appears lost.
- 3BSD/4BSD/4.1BSD developed 32V memory management into a full demand paging setup as well. This code base was dominant in the 1980-1985 era.
- 8th Edition pulled in the BSD VM code and is essentially identical to that in 4.1BSD. This choice was made because it was not a research interest and using a maintained code base freed up scarce time.
- SysV R1 appears to have retained the SysIII memory system.
- SysV R2 (floating about on the net, eg. here https://github.com/ryanwoodsmall/oldsysv) seems to have used a new implementation.
Is that about correct, or am I missing major elements?
Several places mention that there was also a setup that was still swapping in nature, but did not require allocations in core to be contiguous (“scatter paging”). Did this get used much in the era?
At first glance, the SysV R2 code seems shorter and cleaner than the early BSD code (~2000 vs. ~3000 sloc). Is this implementation perhaps a derivative of John Reiser’s work?
More information about the TUHS