That brings me to Dennis Ritchie. Our collaboration has been a thing of beauty. In the ten years that we have worked together, I can recall only one case of miscoordination of work. On that occasion, I discovered that we both had written the same 20-line assembly language program. I compared the sources and was astounded to find that they matched character-for-character. The result of our work together has been far greater than the work that we each contributed. – Ken Thompson, Reflections on Trusting Trust, Communications of the ACM, Vol. 27, No. 8, August 1984, pp. 761-763. |
Who invented Unix? The history of Unix is the story of a unique group of individuals in a unique environment, driven by scientific research priorities.
As electronics continued to rapidly improve through the late 1950’s, it became apparent that computers would soon be able to time-share by switching back and forth quickly between multiple users. Fernando Corbato at the MIT Computation Center led a team that created one of the first multi-user operating systems called the Compatible Time-Sharing System (CTSS), which was highly influential.
In the mid-1960’s, CTSS was used to help build a next generation multi-user operating system called the Multiplexed Information and Computing System (MULTICS), originally started as a joint research effort by AT&T Bell Labs, General Electric, and MIT. However, Bell Labs pulled out of the project in 1969 because of the high maintenance costs of the GE-645 computer and lack of immediately useful results.
The Bell Labs staff involved with MULTICS, including Ken Thompson, Dennis Ritchie, M. D. Mcllroy, and Joe Ossanna, saw great value in the communal environment enabled by a multi-user computer system, and started looking for a way to preserve the capability. They put in a number of proposals to buy a new computer of their own, including a DEC PDP-10, SDS Sigma 7, and KI-10, but all were too expensive and not approved.
Also in 1969, based on their experience with CTSS and the inefficient but functional MULTICS, Thompson led the design of a new operating system in a series of sessions with Ritchie and Rudd Canaday. Thompson wrote a simulation of the file system and the paging system on MULTICS to verify its operation.
During the same period, Thompson wrote a game on MULTICS called Space Travel that enabled a pilot to fly a ship around a simulation of the solar system and land on the planets and moons. When their access to MULTICS wound down, Thompson translated the game into FORTRAN on the GECOS operating system on a GE-635 computer. However, the display movement was jerky, and access to GECOS cost $75 an hour, so eventually Thompson found a little-used PDP-7 computer with a good display processor at Bell Labs. Thompson and Ritchie then ported Space Travel to the PDP-7’s assembly language using a cross-assembler running on GECOS, and then transferred the program to the PDP-7 using punched paper tapes.
After learning how to program the PDP-7, Thompson, Ritchie, Ossanna, and Canaday began to program the operating system that was designed earlier. After writing the file system and a set of basic utilities, they wrote a PDP-7 assembler so they could program directly on the PDP. By 1970, the basic elements of the operating system were in place, but since it could only support one user, Brian Kernighan jokingly named it the Uniplexed Information and Computing System (UNICS) as a pun on MULTICS. When multiprocessing functionality was added a short time later, the name was changed to “Unix”, which is now just a name and not an acronym for anything.
Also in 1970, the Bell Labs team put in a scaled down request for $65K to buy one of the new line of DEC PDP-11 computers, the first of what would become an influential line of powerful minicomputers over the next several years, justified with a plan to develop some sort of useful text-processing system. They obtained the PDP-11 in late summer, and began transferring Unix from the PDP-7. The first PDP-11 version used 16 KB of memory for the operating system, and provided 8 KB of memory for user programs.
In the spring of 1971, the interest in Unix began to grow, so instead of writing a new text-processing system as originally proposed, Thompson and Ritchie translated the existing “roff” text formatter from the PDP-7 to the PDP-11 and made it available to the Patent department on their new Unix system. This practical success helped convince Bell Labs of the value of Unix, and shortly thereafter they bought the team one of the first, powerful PDP-11/45 minicomputers to continue their development. A series of progressively better “editions” of Unix were then released.
In 1975, the sixth version of Unix was released, for the first time made available outside AT&T to educational and research institutions. Because US Federal Law prevented Bell Labs from selling products due to its status as a unique, monopoly institution, it was also made available at no cost. In the best traditions of the free software movement, the spread of Unix to sites across the research community seeded the development of many improvements by local programmers, some of which were incorporated in the seventh version released in 1979. This spread of Unix through the research community also laid the technological foundation for the later establishment of the NSFNET, CSNET, and EUnet. The history of Unix is inextricably intertwined with the history of the Internet — neither would have had the growth it did without the help of the other.