UNIX turns 37 this month, and Dan flashes back to the 70s to see how it all began.
In July 1974, an article appeared in the Communications of the ACM that described Bell Labs’ UNIX operating system. The article, written by Dennis M. Ritchie and Ken Thompson and titled “The UNIX Time-Sharing System,” is one of the most famous in all of computer science. On the anniversary of that paper the story of the origin of UNIX is worth recalling.
UNIX derived its name and foundational concepts from an ambitious multi-sponsor project intended to produce a time sharing system called MULTICS. Thompson and Ritchie, along with a few others, represented Bell Labs on the MULTICS project team.
At the 1965 Fall Joint Computer Conference, two of the MULTICS project’s three sponsors submitted a paper called “An Introduction and Overview of the MULTICS System.” The authors, F. J. Corbato from the Massachusetts Institute of Technology and V. A. Vyssotsky from Bell Laboratories, Inc., introduced MULTICS by saying, “MULTICS is a comprehensive, general-purpose programming system which is being developed as a research project.... One of the overall design goals is to create a computing system which is capable of meeting almost all of the present and near-future requirements of a large computer utility.”
The paper spelled out what these requirements were: to “run continuously and reliably 7 days a week, 24 hours a day... be capable of meeting wide service demands: from multiple man-machine interaction to the sequential processing of absentee-user jobs; from the use of the system with dedicated languages and subsystems to the programming of the system itself; and from centralized bulk card, tape, and printer facilities to remotely located terminals.” And it had to be adaptable: “Because the system must ultimately be comprehensive and able to adapt to unknown future requirements, its framework must be general, and capable of evolving with time.”
Given the state of computing in 1965, the requirements were ambitious. Many in the audience believed that MULTICS would never be completed.
From the Ashes of MULTICS
Indeed, as the development effort wore on, Bell Labs became frustrated with progress on MULTICS. Ritchie recalled, “For computer science at Bell Laboratories, the period 1968-1969 was somewhat unsettled. The main reason for this was the slow, though clearly inevitable, withdrawal of the Labs from the MULTICS project. To the Labs’ computing community as a whole, the problem was the increasing obviousness of the failure of MULTICS to deliver promptly any sort of usable system, let alone the panacea envisioned earlier.”
Richie and some of his colleagues felt the pain directly. “We were among the last Bell Laboratories holdouts actually working on MULTICS, so we still felt some sort of stake in its success. More important, the convenient interactive computing service that MULTICS had promised to the entire community was in fact available to our limited group.... Thus, during 1969, we began trying to find an alternative to MULTICS.”
Ultimately, because of the apparent obviousness of failure, Bell Labs and the few remaining technicians assigned to it withdrew from the MULTICS project and decided to go their own way.
With this background of disappointment, Ken Thompson and Dennis Ritchie began to design and write an operating system for Bell Labs. As a spin on the name MULTICS, they called it UNIX, and their goals were less ambitious and the effort was more cost-effective. And most important, Thompson and Ritchie delivered. When UNIX went operational in 1970, it worked.
UNIX was first installed on a PDP-7 but in late 1970 it was ported to a PDP-11. Ritchie wrote about a part of the process this way: “Every program for the original PDP-7 Unix system was written in assembly language, and bare assembly language it was—for example, there were no macros. Moreover, there was no loader or link-editor, so every program had to be complete in itself.”
The porting experience underscored the need for high-level language support. “Thompson decided that we could not pretend to offer a real computing service without Fortran, so he sat down to write a Fortran in TMG. As I recall, the intent to handle Fortran lasted about a week.”
Thompson scrapped the plan to implement a Fortran and instead defined and implemented a compiler for a language he called B. The influences for B were the BCPL language (Basic Common Programming Language designed at Cambridge University and, according to Richie, “Thompson’s taste for spartan syntax, and the very small space into which the compiler had to fit.” B wasn’t the ultimate programming language. It compiled (slowly) to simple interpretive code that ran rather slowly. But it made work at the Labs easier. “Once interfaces to the regular system calls were made available,” Ritchie said, “we began once again to enjoy the benefits of using a reasonable language to write what are usually called systems programs: compilers, assemblers, and the like.”
The Essential Language Component
B’s successor was, of course, C. And C was a critical element of the success of UNIX.
Ritchie started working on C in 1971, and by 1973 it was solid and powerful enough that it made sense to rewrite the UNIX kernel in C. “It was at this point,” Ritchie said, “that the system assumed its modern form; the most far-reaching change was the introduction of multi-programming. There were few externally-visible changes, but the internal structure of the system became much more rational and general. The success of this effort convinced us that C was useful as a nearly universal tool for systems programming, instead of just a toy for simple applications.”
By 1979 virtually all Unix utilities and most UNIX application programs were written in C. And UNIX had proven itself to be the answer to the ambitious challenge laid down by the planners of MULTICS fourteen years earlier.
“It seems certain, Ritchie said, “that much of the success of Unix follows from the readability, modifiability, and portability of its software that in turn follows from its expression in high-level languages.”
After co-authoring UNIX, in 1989 Thompson and Ritchie received the NEC Prize for significant contributions to computer technology and, in 1998, they were awarded the U.S. National Medal of Technology for the development of the UNIX operating system.
It all started in over 40 years ago—and that’s when it happened.
Dan Wohlbruck has over 30 years of experience with computers, with over 25 years of business and project management experience in the life and health insurance industry. He has written articles for a variety of trade magazines and websites. He is currently hard at work on a book on the history of data processing.
Like this article? Hate it? Want to remind us about Ada Lovelace’s translation and expansion of Luigi Menabrea’s notes on Charles Babbage’s Analytical Engine, and make the case that Ada really wrote the first computer book? Send the author your feedback or discuss the article in the magazine forum.