[TUHS] Early multiprocessor Unix

Warner Losh imp at bsdimp.com
Tue Nov 29 00:16:11 AEST 2022

On Mon, Nov 28, 2022, 7:07 AM Clem Cole <clemc at ccc.com> wrote:

> 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.

I tried to find the code a couple of years ago, but no joy. And the timing
suggested he may have started with/used V5, since the paper is dated June
75 and V6 was released in May 75.


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/d2fc951c/attachment.htm>

More information about the TUHS mailing list