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.