On Sat, May 1, 2021 at 6:09 AM Paul Ruizendaal via TUHS <
tuhs(a)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.
ᐧ