[TUHS] Early multiprocessor Unix

Clem Cole clemc at ccc.com
Tue Nov 29 00:05:57 AEST 2022


As far as I know, the first non-commercial work was done at the Naval Post
Grad school with V6.  I have never seen the code for it, only a paper, so I
don't know too much about it to comment.

A few years later (1980), Goble's work became the Purdue Vax [
https://en.wikipedia.org/wiki/George_H._Goble] - which used a master-slave
configuration. He spliced a second 780 CPU onto the SMB and, with some
interesting work, allowed the second CPU to run user code.  This was
extremely effective for their usage case -- timesharing of students.  If we
don't have the code on TUHS, we should probably dig it up, as it was widely
distributed. The other thing he did was splice an 11/40 onto the UBA of the
same system for debugging - which was a pretty cool hack.  He found a
couple of interesting BSD kernel issues, including a famous CVE using his
real-time monitor -- there is a USENIX paper on that tool that is work
checking out.

The first commercial MP Unix was the Masscomp MC500/MP, which was
originally developed as Goble-style Master/Slave and released in RTU 2.0.
A year later, with RTU 3.0 and the release of the MC5000 family, it was
fully SMP.

After that, several SMP UNIX started to appear.   Each uses its own lock
scheme.   If you are interested, I recommend getting a copy of Schimmel's
book: 'Unix on Modern Processors' which discusses many (most) of the
challenges.


ᐧ

On Mon, Nov 28, 2022 at 8:25 AM Paul Ruizendaal <pnr at planet.nl> wrote:

> The discussion about the 3B2 triggered another question in my head: what
> were the earliest multi-processor versions of Unix and how did they relate?
>
> My current understanding is that the earliest one is a dual-CPU VAX system
> with a modified 4BSD done at Purdue. This would have been late 1981, early
> 1982. I think one CPU was acting as master and had exclusive kernel access,
> the other CPU would only run user mode code.
>
> Then I understand that Keith Kelleman spent a lot of effort to make Unix
> run on the 3B2 in a SMP setup, essentially going through the source and
> finding all critical sections and surrounding those with spinlocks. This
> would be around 1983, and became part of SVr3. I suppose that the “spl()”
> calls only protected critical sections that were shared between the main
> thread and interrupt sequences, so that a manual review was necessary to
> consider each kernel data structure for parallel access issues in the case
> of 2 CPU’s.
>
> Any other notable work in this area prior to 1985?
>
> How was the SMP implementation in SVr3 judged back in its day?
>
> Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20221128/2a940f4b/attachment.htm>


More information about the TUHS mailing list