On Sat, May 1, 2021 at 6:09 AM Paul Ruizendaal via TUHS < tuhs@minnie.tuhs.org> wrote: > Questions: > > Is that about correct, or am I missing major elements? > I'm going to stretch your time frame a little, but this is what I remember: SRV3 was an alternative that was more widely distributed than SVR2. This is described in Maury Bach's book. It was the basis that the VM in the Stellar machine (we would do a bit of a rewrite to make it reentrant and multi-threaded). SVR4 would eventually do that as well (not nearly as well in IMO - but alas Stellix is lost to winds I fear). Sun did their own, which Rob and Larry can describe. I don't think they cribbed much from anyone, but I would ask. DG/UX was a scratch kernel rewrote with its own VM code. Probably the nicest scheme I ever saw. Extremely clean and easy to understand the locks. I've often wondered what happened to that code case. It's too bad it not to be found these days. The CMU Mach code would be very widely used and is still in the wide in Mac OSx and iOS. Tru64 and the Intel paragon were also based on the system. By the time of the Linux VM, the Mach code was what many people were comparing things to. The Mach VM code was extremely flexible and could handle a number of different types of HW and paging/backing store schemes (had a 'plugin' called the pager) and of course worked well on SMP's from time t0, but if you look that codebase was huge and noted to be slow. Even when the OSF/1 and CMU folks created the Mach ukernel, it was a bit of joke as the Mach 386/uk was over 1.2M of memory before any of the servers started to run (at one point they talked about creating a nanokernel and moving the MMU code out of the UK but I don't think anyone ever did). The Chorus folks had something different yet that A&T was excited about as an alternative to Mach, but I don't think it went very far. > 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? > Depends on the code base and if the kernel could use the FS for paging or needed a dedicated paging file. In that era, most systems had a dedicated area (either disk partition or reserved file on the FS). If it uses the FS, then it tended to be able to handle the pages being scattered. We did that on Stellix and IIRC, DG could also. Masscomp and the Intel Paragon did not because predictable performance on a fault was important, although Masscomp cheated later on since we had contiguous files support and eventually allow those files to be used for paging also. > At first glance, the SysV R2 code seems shorter and cleaner than the early > BSD code (~2000 vs. ~3000 sloc). At the time, the SysV VM code was often considered easier to work, a tad less Vax dependent. Which again, ask Rob or Larry, I think is why Sun rewrote the BSD for their use. We used a BSD base at Masscomp because it worked, but ... Tom, Terry, and I had long memories of making the original BSD code MP-safe for the MC-500/DP [which was the first commercial MP UNIX]. So by Stellar time, since we had a 'do over,' we started with the SVR3 code and thread it for exactly this reason. > Is this implementation perhaps a derivative of John Reiser’s work? I don't know, but you might ask someone like Steve Rago, who I believe was part of the implementation team. ᐧ