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.
Questions:
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?