On Mon, Nov 28, 2022 at 02:24:52PM +0100, 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?
HP-UX on FOCUS/series 500?
https://www.openpa.net/systems/hp-9000_520.html
https://www.tuhs.org/Archive/Documentation/AUUGN/AUUGN-V05.3.pdf
Jeff Lindberg
A Layered Implementation of the UNIX Kernel on the HP9000 Series 500
Computer
"The HP9000 Series 500 computers are based on a proprietary 32 bit
microprocessor chip set with stack architecture. It has user-transparent
multi-CPU support, for which they included semaphores and a very
carefully worked out scheduler.
HP-UX is based on top of an operating system called SUN (no relation to
Sun Microsystems Inc.). The SUN operating system was intended to be a
modern operating system to support HP's desktop BASIC system. As
designed, though, it turns out to be language independent, and had
several other features that made it attractive as a base upon which to
build a UNIX implementation."
https://archive.org/details/1983-proceedings-unicom-san-diego/page/119/mode…
Frederick W. Clegg
Hewlett-Packard’s Entry into the UNIX Community
"Several motivations prompted this somewhat unconventional
implementation of the HP-UX kernel on the HP 9000. It should be
understood that much of the low- level, machine-dependent software for
the HP 9000 was complete before a final commitment was made to offer
UNIX on this product line. Thus reinvention of device and interface
drivers, low-level memory management routines, power-up code, and
architecturally-dependent utility routines was avoided by this approach.
Additionally, this approach permitted leverage of software developed to
support graphics and database management from the BASIC environment.
Additionally, SUN has a number of features which are not present in AT&T
UNIX. These provide opportunities for HP-UX to make a contribution above
and beyond other UNIX implementations. Such features include real-time
performance in the area of interrupt response time and process
switching, support for multiple processors, and reliability in the face
of system errors."
some more details in
https://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1984-03.pdf
HP Journal, March 1984, Volume 35, Number 3