This chapter presents the history and previous work of the Computing Sciences Research Center (CSRC) [4], which includes vital information that helps one understand the background and design solutions of Inferno.
The Computing Sciences Research Center is part of the Computing and Mathematical Sciences Research Division [5] (see Figure 1.) This division is located in the Research Area of Bell Labs, which is the R&D organization for Lucent Technologies. Lucent Technologies is the former systems and technology part of AT&T, and this probably rings a few bells among old Unix hackers.
When Bell Labs was still a part of AT&T, a lot of ground-breaking contributions to computer science emerged from the CSRC. These contributions includes various operating systems, the most famous of them being Unix, and maybe the most notorious being Plan 9 [6, 7]. The programming languages contribution is equally impressive, including the de-facto system programming language C, and its big brother C++. AWK and ML also originate from the CSRC, along with many fundamental software development tools (make, yacc, lex, f2c). The CSRC has also developed hardware, numerical software and a lot of fundamental theories in computational complexity, discrete and numerical algorithms, semantics, and verification).
A lot of talented people have worked and continue to work at Bell Labs, the most famous of them probably being Dennis Ritchie, Brian W. Kernighan, Ken Thompson, and Rob Pike. Together they have built a lot of the foundation that modern computer science rests on. Today Bell Labs have over 25,000 R&D employees located mainly in the United States, but with facilities in 21 other countries (the closest ones to Finland are located in Norway and Germany.)
A paper about Inferno would not be resting on solid ground without an overview of the Plan 9 operating system. The final release of Plan 9 was introduced in 1995, and it was the result of several years of research by a group lead by Dennis Ritchie. Among the developers were Rob Pike and Ken Thompson.
The first question usually asked about Plan 9 is the origin of its name. Some people probably know the cult classic 'Plan 9 From Outer Space', and the name of Plan 9 is indeed a salutation to that film. In addition, Plan 9 continues the Bell Labs tradition of selecting names that make marketing droids cry.
Plan 9 consists of the core operating system and associated utilities. It is a distributed systems, with three kinds of components in the most general configuration: terminals, fileservers and other servers (see Figure 2.) The terminals are the interactive parts of the system, and are thus located on the users' desks. Fileservers store permanent data, and the other servers provide services like faster CPUs, authentication and network gateways. All of these components are connected by various kinds of networks (Ethernet, fiber networks, modem connections, and ISDN, just to mention a few possibilities.) The application run on the terminals or on CPU servers, and the data is stored and retrieved from the file servers. The basic design is very configurable, and it is not confined to the specific client-server model of networked workstations (or X terminals) and central machines.
The Plan 9 system is written from the ground up, and does not include 'old' code. It is also a complete operating systems, which means that it does not run as an application under another system. The API of the OS is of course strongly influenced by Unix, but Plan 9 is not a replacement for Unix. Plan 9 is nowadays in production use, one example being the Internet directory service for AT&T 800 numbers.
There are three technical key ideas in Plan 9. The first is that all system objects present themselves as named files that are manipulated by read and write operations. The second idea is that all of these files may exist either locally or remotely, but they respond to the same standard protocol (thus being opaque to the user). The third idea is that the file system name space, that is, the set of objects visible to a program, is dynamically and individually adjustable for each of the programs running on a particular machine. As Unix hackers probably notices, the two first ideas where implemented to some extent in Unix, but the third idea is novel. The Plan 9 approach means that applications do not need to know where they are running, and on what kind of machine, and it does not affect the construction of the application.
An example of the advantages of this approach is the Plan 9 window system, 8½, which is small and clean. Its design focuses on providing a virtual keyboard, mouse, and screen to each of the applications running under it, multiplexing the real keyboard, mouse, and screen. It acts as a server for certan resources used by its clients, and as a proof of concept of its completeness, the window system can run recursively in one of its windows, and it can even be located on another machine.
Another example of the opaqueness of the Plan 9 approach to the user is the use of the standard Internet FTP protocol. The user starts a local program that makes all of the on any FTP server on the Internet appear to be local files, and thus they can be manipulated with all of the standard tools available, taking into account the permissions, of course. The filesystem of the GNU operating system Hurd allows a similar approach of extending the filesystem dynamically.
Plan 9 is available for a reasonable price on most popular platforms, and it can be ordered from Bell Labs. The operating system is not popular among the masses, but it has introduced ideas and concepts that probably will be utilized in popular operating systems eventually.
Brazil [8] is the follow-up to Plan 9, and is internal to Bell Labs, at least for now. The fundamental difference between Plan 9 and Brazil is that the kernel data paths have been rebuilt to take advantage of faster machines and networks. The advances in this area are needed for real-time multimedia that requires a lot of bandwidth and CPU.
The main topic adressed in Brazil is high-performance networks, and the project team has worked in an environment with an in-house 300 megabit/s switched fiber network The design tries to eliminate all unnecessary overhead, especially by avoiding copying of data from element to element along the communications path. For example, the graphics model of Brazil is completely different from models used today. It uses a data-based model, where applications are responsible to calculate the graphical updates as rectangular blocks, and these blocks are transmitted directly to the graphics device, that just places the data on the screen. Traditional systems builds the graphical updates by describing them using primitives like lines, filled areas and text (X, Win32). The data-based model enables applications like inlined video, with the window system controlling the perimeters of the display, and the application providing the raw data.
The new components of Brazil are written using Alef, an new concurrent systems programming language. Alef makes it easy to write multi-process servers and applications that can communicate using messages or shared memory, whichever is more appropriate.
The work on Brazil is temporarily stalled, because the developers of the Brazil project have been reassigned to work on Inferno.