[net.unix-wizards] Shared code/libraries

hamlet@umcp-cs.UUCP (08/12/83)

In seeking models for a clean implementation of shared code, the Burroughs
B5000/6000/7000 systems are important.  Although there is a very
large assist from the descriptor architecture, these systems have all
programs shared, and all share a library, even across languages.  On
the B5500 this was a necessity, since there was a maximum of 32K of real
memory, and the operating system often took up as much as 4K of that.
(It had to arrange for all that sharing, among other things.)

When the shared-library code was added to the B5500 (by a new-hire programmer
who took several weeks at the job, and made only one not large mistake--
it was a nice system to work on), it was found that the sharing was not
being used very much, except for things like long-running utilities and
their i-o library routines.  The trouble may have been the severly limited
memory, which didn't allow enough users to remain resident long enough to
share.  Perhaps it would be a good idea to do some measurements on what
sharing would buy before putting a lot of work into it.

When it comes time for multiple-processor systems, the Burroughs
machines did that too, but all in the architecture, so there isn't any
good to be had by studying the code.

pdl@root44.UUCP (Dave Lukes) (08/17/83)

>   In seeking models for a clean implementation of shared code, the Burroughs
>   B5000/6000/7000 systems are important.  Although there is a very
>   large assist from the descriptor architecture, these systems have all
>   programs shared, and all share a library, even across languages.  On
>   the B5500 this was a necessity, since there was a maximum of 32K of real
>   memory, and the operating system often took up as much as 4K of that.
>   (It had to arrange for all that sharing, among other things.)

Oh, the message `DSED: MISSING INTRINSIC', followed by an MCP hang still brings
on a rush of nostalgic hilarity.
Sure, the Burroughs people had a lot of excellent ideas, but you try having USER
shared libraries: they've just started to do it and it's foul.
Also, the implementation on the B6000/7000 leaves a helluvalot to be desired.

It works like this: your program does a call through an invalid descriptor,
containing the intrinsic number, which is then diddled by MCP (a.k.a. the OS)
to point to the function (if I understand rightly, this is a bit like Multics).
This is fine except that (of course) the numbers are GLOBAL, so everyone has
to agree to them (somehow) in advance. And you can't just change the intrinsics
either (there's a hook in there to do just that: the CONTROLLER
`CI' command, with all sorts of bells and whistles).

That kinda junk is OK if you like an OS so large the listings are taller than me
(don't forget, they page the OS, since it's trivial with all that hardware
help, so they don't really mind if it's ginormous). However, for those
of us with a slight hankering after elegance: FORGET IT.

		Dave `small is beautiful' Lukes, (...!vax135!ukc!root44!pdl)

N.B.	I suspect MCP is a trademark of Burroughs Corp (Disney notwithstanding),
	CONTROLLER probably is too.