Although Unix (and Linux with it) powers over 90% of cloud workloads today, it had humble beginnings. Jim Hall discusses how Bell Labs’ Unix became the backbone of many modern operating systems in the 1970s.
The origins of Unix
In the early days of computing, users interacted with the computer in various Byzantine ways. The original ENIAC did not even have a “programming interface”
In later, more “modern” systems like the mainframe, system management remained complex. To create a file, you need to specify the storage space to be allocated and other attributes. Operators typically interacted with the system through typewriter-style paper terminals. And in those early days, people expected to work with computers.
In the mid to late 1960s, MIT, Bell Labs, and GE worked on a new system called MULTICS, the Multiplexed Information and Computing Service. MULTICS should be a revolution in the computer. However, as a result of the development, MULTICS also became more and more complex. Bell Labs was frustrated with the project and pulled back so others could move the project forward later, albeit very late.
In the meantime, Ken Thompson returned to Bell Labs from MULTICS to work on other projects. One attempt was made with a particularly fast hard disk drive attached to a DEC PDP-7 minicomputer. Thompson wanted to optimize throughput on this drive and therefore on every storage device. So he started working on a disk scheduler.
In tackling this project, Thompson found that his test project entered the operating system realm. While his wife was on vacation to visit his parents for the next three weeks, Thompson filled in the missing parts, adding an exec-call interface, assembler, editor, and shell. And from those small beginnings, Unix was born.
During his development at Bell Labs, there was no “master design” that defined what Unix should do or become. Instead, Unix grew organically as different users needed new features.
One of my favorite early Unix stories is how Unix researchers managed to buy a new computer system to continue their work and at the same time created a new standard Unix command. The patent department planned to purchase a new dedicated computer system for writing patent applications on behalf of Bell Labs. The Unix team suggested the patent department buy a new DEC PDP-11 minicomputer, and the Unix team would install Unix on it and write custom software to help the patent department write patent applications. This new software for writing patents? A new implementation of the Roff document formatting system, itself a derivative of an earlier CTSS program called RUNOFF. Today “New Roff” or
nroffis a central part of Unix.
The Unix commands themselves were given very short names. The
mvand other standard Unix commands were so short because the early Model 33 Teletype terminals used at Bell Labs required a significant amount of effort to enter each letter. It was easier to type
rm than a more descriptive command name like
One of the defining features of Unix, the “pipe” that allowed one command to send its output to another command for additional processing, was also added at the behest of another Bell Labs researcher, Douglas McIlroy. Until then, commands were executed for individual files. However, you can use pipes to string multiple commands together for more interesting results. For example the
ls Command lists the files in a directory and the
wc Command counts the lines of its input. If you combine the two commands as a
ls|wc get the number of files in a directory.
Other commands have also been added because someone asked for them. Thompson wrote that
grep Command based on a suggestion by McIlroy that Unix should have a utility to find text in files. Thompson reused code from Unix
ed Editor for creating a utility to run a “global regular expression expression” of text that matches that of the user regular expression. This command “Printing Global Regular Expressions” was named simply
grep, now a standard Unix command.
Unix continued to grow, mainly as research and as a platform for projects within Bell Labs until the mid-1980s. At that time, a number of different vendors began selling their own versions of Unix, including HP-UX from Hewlett Packard, AIX from IBM, Xenix from Microsoft, SunOS from Sun (later renamed Solaris), and others. In 1983 Richard Stallman started a new project to create a free software version of Unix called GNU (a recursive Acronym, which means “GNU’s Not Unix”).
Each distribution of Unix was slightly different and incompatible with each other. Some were derived from the original Unix from AT&T Bell Lab, such as HP-UX and AIX. Other versions of Unix were derived from a popular variant of the University of California at Berkeley called BSD for “Berkeley Software Distribution”. Many of the commands were the same or similar between different versions of Unix, but the details of managing the system were usually very different. One major difference was how Unix booted itself: AT&T “System V”, which uses Unix Run levels controlled from a central
/etc/inittab File while BSD Unix starts everything Carry out control Scripts starting with the
Other Unix systems came and went in the 1980s and 1990s. After Steve Jobs was ousted as CEO of Apple in 1985, he founded NeXT, which produced its own variant of Unix, which was derived from BSD. NeXT brought several innovations to Unix, including a Mach-based microkernel. NeXT’s graphical desktop, NeXTSTEP, added other new ideas such as: B. Display PostScript for creating screen graphics, a “dock” of available and running applications and an object-oriented application layer with toolkits.
In 1991 a Finnish student named Linus Torvalds started work on a project that would later become the Linux kernel. On August 25, 1991, Torvalds posted a brief announcement on a Usenet discussion group about his hobby project and invited others to contribute. Torvalds released Linux under the GNU General Public License, which meant anyone could modify Linux to fix bugs or add new features. This “open source” or “free software” model quickly led to a new Linux development.
Communities emerged on Linux that ported GNU tools and other Unix commands to run on Linux. In 1992, developers ported the X Window System and gave Linux its first graphical user interface. The result is what most people think of when we say “Linux” Linux is actually just the kernel that does everything.
While proprietary Unix systems still exist, most Unix systems are Linux. Linux dominates at least on web servers. Linux is also common for many corporate workloads, including application servers and database servers. It is difficult to know exactly how many Linux servers are running, but many estimates suggest that Linux runs more than two-thirds of web servers and other Internet infrastructure. Even Microsoft supports Linux. Linux runs on the Azure platform, as does the Windows subsystem for Linux on Windows desktops.
Linux never really got a foothold on the desktop. A running gag in the Linux community is: “It will be next year Year of the Linux desktop. “But Windows comes first on the desktop. However, if you’re looking for Unix on the desktop, then you should consider Apple’s macOS. In 1996, when Steve Jobs returned to Apple as CEO, Apple bought NeXT and used NeXT as the foundation for the next generation operating system on new Macs. MacOS is really Unix under the hood; Open a terminal window and you will find a Unix shell with the standard Unix utilities. In fact, macOS is an official Unix recognized by the Open Group.
Where is Unix going next? I’m not sure if “Unix” is the right label anymore. At a time when Linux systems are far more numerous Unix Servers, we may have passed the point where “Unix” is very important. It is no longer about “Unix as a platform”, but about “Linux as a platform”. And just as Unix grew beyond its original design and added new functionality as needed, Linux evolves to meet new demands. At least for the foreseeable future it’s about “Linux”, not “Unix”.