On Tue, Mar 29, 2022 at 11:25 AM Paul Ruizendaal wrote: > No, sorry, my scope of interest is mostly 1975-1985. > > I did read the Mach virtual memory paper from 1988 - from that paper I > gather that the data structures used are totally different from those in > Sys V or BSD. > > There is also the VM implementation that Richard Miller did on SysV r1 in > 1983. Interestingly, his design seems to parallel the choices made by > Reiser a few years before, but it is lighter touch. Both Reiser and Miller > refer to Denning and Tenex as prior art. Miller's 1984 Usenix paper about > this project argues that doing approximated LRU from the page table data > results in a process local working set view, which he argued was preferable > to the system global working set view generated in the BSD clock algorithm. > I brought this up on this list back in 2017, but a few years later, Charles Forsyth in the UK did a VM system for SunOS 4 based on the EMAS system. https://www.terzarima.net/doc/taste.pdf I'm not quite sure when this was written, but it cites papers from 1989, so sometime that year or 1990, would be my guess. - Dan C. > On 29 Mar 2022, at 16:05, Clem Cole wrote: > > > > 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@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. > > > > > >