> On Mar 15, 2023, at 6:55 PM, Rich Alderson via cctalk <cctalk@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