On Mar 15, 2023, at 6:55 PM, Rich Alderson via cctalk
<cctalk(a)classiccmp.org> wrote:
...
(another notion is that mainframes are
"multi-user" -- most early
microcomputers were not multi-user, as they just barely supported the needs
of one user; I'm not sure if the very first minicomputers were multi-user?)
Early mainframes were single user, in the sense that only one program could be
run at a time. Spooling of jobs was invented to alleviate the time "wasted"
in
having operators set up and reconfigure jobs, but it was still a one-at-a-time
thing. Timesharing was an extra cost add-on based on research systems at
places like MIT.
Apart from spooling, which uncouples slow I/O from execution, there is also
"multiprogramming", which means being able to run more than one job
concurrently. Timesharing does that, of course, but I think multiprogramming was intended
to refer to batch systems that did so.
An early example is the famous THE operating system: it spools all I/O and supports three
concurrent jobs (two unrestricted and one limited to "small jobs"). It has a
number of interesting structural innovations, like a hierarchical design where details are
handled in one layer and thereby no longer matter to the layers above. Also semaphores,
which it uses throughout, both for internal synchronization and to synchronize with DMA
hardware.
paul