Fascinating - thank you.
Have you figured out that path from here to the SVR4 code base that was
used for the x86 [which I think also went through a few more generations
after the SVR4 release]?
Clem
On Tue, Mar 29, 2022 at 7:22 AM Paul Ruizendaal via TUHS <
tuhs(a)minnie.tuhs.org> wrote:
I did not have a lot of time to work on documenting the evolution of
paging / virtual memory code in 32V, Sys III and early SysV in the past
months, but I did get some more background information that seems worth
sharing.
My understanding of the virtual memory story at USG is now as follows:
Somewhere in 1981/82 a project plan for Unix 5 / System V was made and
evolving John Reiser’s virtual memory code for 32V-r3 was part of that
plan. “Evolving” in this context meant making it more maintainable and more
hardware independent. John’s code assumed a memory page, a disk block and a
file block all to be the same size, and it needed to be more general. It
was also designed around the VAX MMU and this too needed to be generalised.
The person assigned to that job was Bob (Robert) Baron, reporting to Tom
Raleigh. The project involved quite a bit of re-architecting and progress
was slowish. On top of that Bob left for CMU to work on Mach. Tom Raleigh
tried to pick up where Bob had left off, but progress remained slowish.
In parallel, Keith Kelleman and Steve Burroff were working on Unix for the
3B20 Unix. They did paging code from scratch around the 3B20 MMU (which
used a more or less ‘modern’ page table design) and developed their idea
for the “regions” abstraction to support large, non-contiguous address
spaces. It seems that they built on the main working set ideas/concepts in
the Reiser/Baron/Raleigh code base, combined these with their “regions”
idea, made it multi-processor capable and made it all work on the 3B20.
Around that time Tom Raleigh seems to have transferred to Bellcore, and the
VAX code base got orphaned.
Two young engineers appear to have picked up the work on the VAX code
base: Dean Jagels and Jim McCormick. My understanding is that they
essentially back ported the 3B20 work to the VAX, falling back on the
Reiser/Baron/Raleigh work where necessary. They got it working, and as far
as I can tell, this is what got released in 1984 as part of SysV R2.4 for
the VAX (the oldest surviving source code for this that I could find).
This somewhat tortuous birth may in part explain why Research chose to use
the 4BSD virtual memory code for 8th edition.