26

I've been told that Unix started out as a Phone Switch OS and was not a multi-user OS at some time in its infancy.

As I'm always willing to learn new things, are there any greybeards around here older than me that remember this?

Bonus points if you can find any documentation to back it up. Scans of old manuals count as my quick googling didn't turn up anything on-line...

13
  • 4
    Note that single user and single program are not the same thing. Apr 29, 2019 at 17:40
  • 6
    @WalterMitty I'm from the CP/M era and remember single-tasking single-user OSes... ;-)
    – Fabby
    Apr 29, 2019 at 17:41
  • 6
    Unix was not originally developed as a phone switch OS. The team that developed Unix originally got a contract to develop a word processor (think Google docs rather than Microsoft Word) for the patent office. They used the task as an excuse to create an operating system (Unix) because the OS they wanted to use wasn't shipping (Multics) and a programming language (C) because the language they were using was not high level enough (BCPL and assembly)
    – slebetman
    Apr 30, 2019 at 5:51
  • 3
    @slebetman Unix existed before the word processing contract; that contract was used to justify buying the group’s first PDP-11. Apr 30, 2019 at 7:08
  • 3
    @MikeScott but the OS itself still supports multiple users, device manufacturers can enable the feature if they want to (and some do). You’re right that most installs are single-user, but the fact remains that the OS is multi-user. Apr 30, 2019 at 16:24

6 Answers 6

39

Going from “AT&T made phone switches” to the idea that Unix was intended to drive phone switches is quite a leap. The creators of Unix described its creation and development in some detail, e.g. in The Evolution of the Unix Time-sharing System:

What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.

So Unix was really a scratch-your-own-itch development at first, and intended to be multi-process and multi-user from the beginning. Of course the costs involved in developing it (mostly buying hardware) had to be justified, which quickly led to the development of text-processing software and various other developments later on.

You can run V1 Unix on an emulated PDP-11 on a modern computer; the default configuration supports 8 logins. A partial reconstruction of the original PDP-7 Unix is also available. The latter seemingly supported multiple users and processes, but only one of each at a time (ten process slots were available but only one process was swapped in at a time); that analysis is based on the source code as preserved in the reconstruction, but other recollections (closer to the time) differ. Thus Steve Bourne wrote in The Unix System V Environment

A cast-off PDP 7 with a 340 display was available but the PDP 7 provided only an assembler and a link editor. One user at a time could use the computer, each user having exclusive use of the machine. This environment was crude and parts of a single user UNIX system were soon forthcoming. The space travel program was rewritten for the PDP 7 and an assembler and rudimentary operating system kernel were written and cross assembled for the PDP 7 on the GECOS system. This early system did not provide time-sharing. indeed, much like the modern personal computers, the PDP 7 hardware was simple and provided no support for such activities. An assembler and a command interpreter were soon available. This file system provided a name structure that was a directed graph. A single directory was used for all subdirectories and links made through this directory.

Cross assembling meant using two computer systems and carrying paper tapes of programs from one to the other each time a change was made. The system was soon bootstrapped onto the PDP 7. The process creation primitive, fork, and process images were added to the system during this rewrite. Essential utilities, such as file copy, edit, remove, and print were soon available. This system supported two people working at the same time and the term UNIX was coined by Brian Kernighan in 1970.

Thus it appears that the system on the PDP-7 was initially single-user, but that was a short phase during the initial development, and eventually Unix on the PDP-7 supported two users simultaneously; this also matches Ritchie’s recollections in the paper linked above:

Processes (independently executing entities) existed very early in PDP-7 Unix. There were in fact precisely two of them, one for each of the two terminals attached to the machine.

Presumably the system was still limited to running a single process in memory at any given time, even if two users could log in in parallel. Before Unix moved to the PDP-11, its developers had even managed to build two B interpreters (including one with virtual memory) and used that to write a few utilities!

Diomidis Spinellis’ Unix history repo contains source code for most historical Unix releases, including PDP-7 Unix.

4
  • Indeed, should be noted that when unix was invented mutli processor machines were almost a pipe dream
    – BugFinder
    May 1, 2019 at 7:42
  • 1
    You said, "Thus it appears that the system on the PDP-7 was initially single-user" - is that because the single-user phase in it's history was a deliberate and temporary stepping stone towards an intended multi-user design? Or was the switch from single user to multi user really a change in the intention of the design? Or don't we know?
    – dwizum
    May 1, 2019 at 13:25
  • 1
    @dwizum given what Ritchie wrote, I think the intent was always to design a multi-user system (consider also that the developers were already used to systems with multiple terminals). May 1, 2019 at 13:40
  • @BugFinder I think IBM had dual-processor mainframes by the early 70s, and Burroughs had had them (and were moving towards clusters) for some years. Mar 29, 2021 at 11:29
8

Unix was almost certainly never a single-user system. PDP-7 Unix supported at least two users (likely Ken and Dennis).

As evidence, I quote Doug McIlroy's paper on the history of research Unix:

Doug (M. Douglas) McIlroy exercised the right of a department head to muscle in on the original two-user PDP-7 system.

(The quote is taken from section 1.1, People)

And, now I've poked around a little more, here's some other evidence, from Dennis Ritchie's paper The Evolution of the Unix Time-sharing System; in the section on Process Control:

Processes (independently executing entities) existed very early in PDP-7 Unix. There were in fact precisely two of them, one for each of the two terminals attached to the machine.

5
  • 1
    Wow! I stand corrected regarding the PDP-7. I will update my answer. Apr 30, 2019 at 1:49
  • OK, in view of this answer, my original comment about users and processes is moot. It appears that PDP-7 unix supported two users and two processes. Apr 30, 2019 at 10:09
  • BBN built a timesharing system on a modified PDP-1. The one and the seven are similar enough so that it must have been enough to build a multi user Unix on. The hard part would have been memory protection. Apr 30, 2019 at 14:35
  • PDP-7 Unix and the first PDP-11 Unix only had one process in core at any time (per the Evolution paper) so no interprocess vulnerability; the kernel was vulnerable to programs running wild (the 11/20 has no MMU either). Apr 30, 2019 at 22:40
  • Erratum: the 11/20 had no MMU when first shipped. CSS apparently could supply a KT11-B MMU. May 1, 2019 at 0:10
3

From this page, Wikipedia and elsewhere, it is pretty clear that the first Unix system was on a PDP-7. As far as I can tell, the PDP-7 (unlike the PDP-11 where Unix became more than just a one-off system) was not a multi-user system. Apparently, the PDP-7 running Unix could support two terminals. So Unix has always been a multi-user operating system, though of course hardware dependent - if you ran it on a system with only one console then it was effectively a single-user system. I doubt there is much extant documentation form the pre-PDP-11 era, particularly since little was released publicly until a few years after Unix was first written. Or as this PDP-11 history page describes it:

These are the original Bell Laboratories releases of Unix; the first 4 were only internal to Bell, the Fifth saw limited distribution outside it, and the Sixth took over the world.

On the other hand, plenty of multi-user operating systems - Unix, Linux, MP/M, MP/M-86 - and I am sure many other mini-computer & micro-computer operating systems - have been used as single-user systems over the years by power users as an easy way to get a multi-tasking system for increased productivity, especially prior to functional versions of Microsoft Windows.

1
  • 1
    One could even buy single-user licenses for Unix, at least with some of the Unix releases on the PC. Apr 29, 2019 at 19:35
1

That one sentence in my comment sure did blow up.

The PDP machines mentioned in the other answers were commercially available early on, and indeed used by Bell Labs (AT&T) in the development of what later became known as UNIX. But AT&T at that time was a big company, and had started the development of its own computer - the 3B series. These machines were the in-house solution, whereas the PDP series came from DEC.

As for the phone switch, that would be the 4ESS and later 5ESS. These had a 3B20D (duplex) as their Administrative Node. Duplex doesn't mean "two users" here, but two CPU cores running in lockstep. A failure in one half would not take the switch down.

AT&T at this time was barred from doing any other business in the US but providing Common Carrier phone services. So it made perfect sense to use UNIX for its primary business. Of course, Bell Labs was very much an like academic environment, and it may not always have been directly focused on the larger AT&T business interests.

2
  • 1
    According to Wikipedia, the 3B20 was "produced" in the late 1970s, which I would guess means development started in the mid 1970s. By contrast, it is well-documented Unix work (as a skunkworks project) started before 1970. Given the timeline, it would make sense for Bell (not AT+T then) to build an OS based on Unix but this is a long way from saying Unix was originally conceived for that purpose. Apr 30, 2019 at 11:35
  • 6
    To think that AT&T's only application for computers was phone switching overlooks the huge amount of data processing that is necessary to run a phone company. Billing is an obvious application, but AT&T developed, among other things, systems for network planning, order management, word processing, circuit design and even drawing phone book ads. These are off-the-shelf applications today, but were not in the 1970s and 1980s.
    – user71659
    Apr 30, 2019 at 17:04
1

There were a number of companies which shipped UNIX-derivatives configured for single-user operation, even if UNIX itself was thoroughly multi-tasking. Broadly speaking these booted straight into a shell rather than having init or equivalent which forked multiple processes.

I came across one in the UK which had a range of machines which could either boot CP/M on a Z80 or a single-user UNIX on a 68K and was typically sold as an accounting system, and there was the Burroughs (formerly Convergent) B20 which was shipped with BTOS ("B-Twenty Operating System").

Considering OP, I think it might be worth considering that many computers were shipped with no provision for attaching supplementary terminals or Telnet sessions, and as such were effectively single-user even if still capable of multitasking.

4
  • 1
    The last paragraph implicitly takes the position that a 'user' requires an arse in a seat, which isn't necessarily wrong -- just that the OS can still be running processes under multiple user identities. Mar 29, 2021 at 12:38
  • With respect, it was intended to take the position that there was sufficient multitasking capability to run a getty (a kernel issue) plus provision of a getty (a vendor issue) and potentially connections to one or more terminals (a hardware configuration issue). But broadly speaking multitasking is a prerequisite of a system being multiuser,,, there's exceptions but not that many. These days most desktop unix (Linux, Mac) systems are single user even is heavily multitasking... not to mention Android. Mar 29, 2021 at 13:59
  • Multi-user and multi-tasking are orthogonal: one might not care about the latter, but still want ownership of files for example to be tracked and enforced. Were there really UNIX-derived systems which were fully single-user and single-task, or was it a matter of configuration? All the single-user UNIX-based systems I ever came across still had multiple system users and daemons, as do modern Unix-style systems, including Android. (I’m not saying you’re wrong, I’m curious about your answer.) Mar 30, 2021 at 4:44
  • I'm pretty sure there were "unix-like" systems written from scratch which were single-tasking, i.e. exec() worked but fork() didn't, as a very tentative example I'd suggest Amoeba since I think (without revisiting the detailed descriptions) that it assumed that if a user wanted to do more than one thing at a time zhe'd fire up a connection to a different backend system. However as I've said I'm pretty sure that systems like the B20 (early 80s) went straight into a shell, I don't know whether programs could be detached or whether there was job control from the shell. Mar 30, 2021 at 10:27
1

My copy of The Bell System Technical Journal v57#6 part 2, July-August 1978 (see it here and elsewhere - an issue entirely concerned with the "Unix Time-Sharing System" doesn't mention using Unix as a phone switch OS though it talks about many other applications.

Some of those applications include being a support system for a phone switch ("No. 4 ESS Diagnostic Environment") where an application running on Unix talked to a 1A processor - using special software added to that processor's system (4ESS); also being the operator's interface in a larger system ("The Network Operations Center System") where real-time data was collected into a database (by a separate system) and then a (multi-user) Unix application was used to interrogate that database.

This issue also describes a separate operating system build by AT&T ("The MERT Operating System") - which was an early hypervisor capable of running Unix environment as a "supervisor process" alongside other supervisor processes that provided real-time capabilities. No specific installations of MERT are described.

The whole issue is well worth reading for any Retro-computing enthusiast interested in Unix.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .