On Mon, Nov 28, 2022, 7:07 AM Clem Cole 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. Warner 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 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 > >