CTSS and Multics
By Ben Meadowcroft
Introduction
Goal of Report
The goal of this report is to examine the contributions made by Professor Fernando J. Corbató to the discipline of Computing Science and also to give a brief examination of the role of the computer in society which, Professor Corbató proposed.
This report also aims to give the reader a thorough understanding of both his contributions and their impact on computing today. This goal will be achieved by first examining the context in which he developed some innovative concepts. Then by providing information detailing the specific people and/ or projects that were directly influenced by his contributions the report will show the extent of his influence on those who followed him.
Fernando J Corbató
See Appendix A for Biographical information on Professor Corbató.
Major Projects
CTSS
The Compatible Time-Sharing System was developed by M.I.T. under the leadership of Professor Corbató. The CTSS was originally presented in a paper to a computing conference in the spring of 1962 F. J. Corbató, M. M. Daggett and R. C. Daley, "An Experimental Time-Sharing System," Proceedings of the Spring Joint Computer Conference, 21, Spartan Books, Baltimore, 1962, pp. 335-344.) This was the year the Atlas computer at the University of Manchester became operational. The CTSS was on of the first demonstrations of how a computer could implement time-sharing. It was first demonstrated on an IBM 709 and was later implemented on a modified IBM 7094 (see www.multicians.org/history.html).
Multics
The Multics (Multiplexed Information and Computing Service) was the successor to the CTSS. In fact Multics was developed in its early stages on the CTSS. Multics proposed role was to be a computing utility (see next section for more information on this concept), it was to develop the potential of time-sharing introduced, first by the CTSS on the IBM 7094 and then followed by others including another major implementation on the Q-32 computer (J. Schwartz, A General Purpose time-sharing System, Proceedings of the Spring Joint Computer Conference, 25, Spartan Books, Washington, D.C., 1964, pp. 397-411.)
The Multics system was developed as part of M.I.T's Project MAC (Multiple Access Computing), the system was a collaborative effort between M.I.T., G.E's Large Computer Products Division and Bell Telephone Laboratories. The system was introduced at the 1965 Fall Joint Computer Conference.
Computer as a Utility
The third contribution of Professor Corbató, which I wish to focus on in this report, is the view of a computer as a utility. This was in fact one of the primary situations in which Professor Corbató and V. A. Vyssotsky of Bell Laboratories envisioned the Multics in their paper "Introduction and overview of the Multics system" presented to the 1965 Fall Joint Computer Conference. In that paper they stated 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. Such systems must run continuously and reliably 7 days a week, 24 hours a day in a way similar to telephone or power systems, and must be capable of meeting wide service demands."
They worked on the assumption that a single powerful computer was more economical than having many less powerful computers. This is the basic premise of Grosch's Law.
Report Body
CTSS: (Compatible Time-Sharing System)
Genesis
The beginnings of the CTSS were when a Professor McCarthy, submitted a memo to the director of the MIT Computation Centre, Philip Morse, outlining the "time-sharing" principles. Philip Morse then encouraged Fernando Corbató and his team at M.I.T. to develop the CTSS. The first demonstration of the CTSS system was on the IBM 709 was according to Corbató "crude and incomplete" (see http://www.cnn.com/TECH/computing/9906/29/1961.idg/index.html)
Contemporaries
As well as the development of the CTSS there were some other interesting developments taking place at the same time, one of these was a machine called the Atlas, which was developed at a similar time to the CTSS. The development process of the Atlas brought about such techniques as virtual storage, paging as well as multiprogramming. The Atlas was officially inaugurated on the 7 December 1962.
Basic outline of system
The "mature" CTSS system was based on a modified IBM 7094 (provided by ARPA)
The original specifications of the IBM 7094 were
- 32K 36-bit words of memory.
- Its data channels could access memory and run simple channel programs to do I/O once started by the CPU.
- The channels could cause a CPU interrupt when the I/O finished.
Some of the modifications were
- A second 32K core memory bank was added.
- Several instructions were added to the processor.
- A memory boundary register was added to the processor.
- A hardware timer to interrupt user programs
The modifications to the 7094 meant that the computer the Professor Corbató was working with was now able to operate in two modes. Core bank A held the CTSS supervisor, and the B Core was used for user programs. The memory boundary register was used to limit the user job's access to the B Core.
It was this ability to operate in two modes that lead to the "Compatible" portion of the systems title. The two modes enabled a system named the "Fortran Monitor System" to be run as a background user program in the B Core. The FMS had controlled first the 7090 and then the 7094, which were operated in batch mode. The ability of the CTSS to run FMS on the B Core meant that some degree of compatibility could be achieved and also eased the transition from the batch processing to time-sharing. (See http://www.multicians.org/thvv/7094.html)
Features of Interest
An interesting feature that was used in the CTSS system was an algorithm called the "onion skin". If a small job followed a large job, the algorithm would leave parts of the larger job's core image in memory. The algorithm could then relatively quickly reassemble the images after the smaller job had executed if needed.
The CTSS also provided a remote access facility from 1963 onwards. This made it possible for those with the correct equipment to connect to the CTSS by using a modem to connect using a specialised telecommunications computer, the IBM 7750. (See http://www.multicians.org/thvv/terminals.html)
Influence on subsequent OS
The CTSS had an influence on many other systems, which came after it. This was due in part to some of the fundamental concepts which had been introduced such as time-sharing. Some of the hardware modifications, which were introduced to enable time-sharing such as having a hardware timer to interrupt user programs, are still in use today. However the operating system which was to be influenced most by CTSS was the Multics system.
Multics: (Multiplexed Information and Computing Service)
Genesis
The Multics system was a product of Project MAC. The Advanced Research Projects Agency of the U.S. Department of Defence funded the project. In a paper authored by Professor Corbató, J.H. Saltzer and C.T. Clingen we find that while the CTSS was being finished planning for a more fully featured system began, the goal was "the development of a new computer system specifically organised as a prototype of a computer utility."
(See http://www.multicians.org/f7y.html)
Professor Corbató wrote another report about the management of the project in which he highlighted some of the major design goals that the project had.
- Convenient remote terminal use.
- Continuous operation (i.e., without shutdown) analogous to power and telephone companies.
- A wide range of configuration capacity which could be dynamically varied without system or user program reorganisation.
- An internal file system with apparent reliability high enough for users to entrust their only copies of programs and data to it.
- The ability of users to share selectively information among themselves.
- The ability to store and create hierarchical structures of information for purposes of system administration and decentralisation of user activities.
- The ability to support a wide range of applications ranging from heavy numerical production calculations to inter active time-sharing users without inordinate inefficiency.
- The ability to allow a multiplicity of programming environments and human interfaces within the same system.
- The ability to evolve the system with changes in technology and in user aspirations.
(See Research Directions in Software Technology edited by P. Wegner, MIT Press, 1979 or http://www.multicians.org/managerial.html)
Influences
The development of Multics system began in earnest in 1964. As a collaboration between M.I.T., Bell labs and G.E. We can see how these various parties brought their own experience, ideas and goals. One of the major influences on Multics development was of course the experience gained by Professor Corbató's team in developing CTSS.
Bell Labs had their own software development experiences, which they brought into the project, for example they too were mainly operating IBM 7090's and 7094's as were the CTSS team. However Bell Labs were mostly running their computers in batch mode. Bell Labs had also developed an in house operating system called BESYS, and were involved in several other software projects "notably BLODI (essentially, early dataflow architecture) and Snobol (string processing)." (See http://cm.bell-labs.com/cm/cs/who/dmr/mdmpipe.html)
G.E. provided the hardware for the Multics system. Initially the basic system chosen was the newly marketed GE 635.This computer was similar to the IBM 7094's which Project MAC and Bell-Labs already had experience with, both machines had the same 36-bit word, accumulator, quotient register, index registers. The advantages of this computer were the support for multiple memory modules and multiple processors. Several modifications had to be made though to the basic model to accommodate some of the developments, which were proposed by the software developers. (See http://www.multicians.org/managerial.html)
How it was developed
The initial development was co-ordinated by two groups, a group called the Trinity, consisting of Robert M. Fano (M.I.T.), Edward E. David (B.T.L.) and C. Walker Dix (G.E.) made major policy decisions. However the actual management of the project was done by a group called the Triumvirate which consisted of Fernando J. Carbotó (M.I.T.), Peter G. Neumann (B.T.L.) and A. L. Dean (G.E.). The Triumvirate also had Jerome H. Saltzer and Edward L. Glaser as consultants on the project.
One of the revolutionary concepts introduced by the Multics development was the decision to implement the system in a high level language. The language chosen was PL/1 (Programming Language 1). Professor Corbató stated in his report "A Managerial View of the Multics System Development" that PL/1 was chosen "partly because of the richness of its constructs and partly because of the enthusiasm of those planning to implement the compiler" (see http://www.multicians.org/managerial.html), however there were problems to be overcome.
Due to the significant changes in hardware (The GE 635 became the GE 645) which were needed to implement some of the advanced features which Multics would incorporate there were no assemblers or compilers for the machine available. Problems were found when trying to modify an existing assembler from the related GE 635. An assembler was eventually built from scratch, however implementing PL/1 was a much tougher problem. The contract for providing a compiler was outsourced to another company but they failed to deliver a workable compiler after over a year (This can be attributed to the proposed vendor eventually realising that techniques used in constructing FORTRAN compilers do not extrapolate well when creating a PL/1 compiler). To remedy this a roughly implemented version of a PL/1 compiler (really a sub-set of the language) was implemented by the Multics team on which to begin implementing their system.
The time between beginning the project and obtaining a usable compiler was put to use in developing a document called the Multics System Programmers' Manual (MSPM). This document was the eventually occupied around 3000 pages and constituted the "primary design document for the system. Most of the MSPM was written between 1965 and 1969." (See http://www.multicians.org/devdoc.html)
Basic outline of system
The Multics system was designed to be used by multiple users and provide a wide array of services to the users of the machine.
A typical Multics system (in its development years) would consist of
- A GE 645 computer with two processors.
- Two Generalised Input/Output Controllers.
- Multiple memory modules.
- Storage Devices.
Some of the hardware modifications needed to implement the Multics system on GE machines were
- Change to processor architecture to enable suitable addressing of segmented memory to occur.
- Changes to the processor to enable the supervisor problem to handle paging of the memory.
- An interrupt clock and a non-repeating calendar clock were added to support some of the supervisor functions.
- A special purpose input/output controller.
Innovative Features
Some of the innovative features developed by the Professor Corbató's team included
- Segmented memory.
- Virtual memory.
- Shared memory multiprocessor.
- On-line reconfiguration.
Technical Details
At the time Multics was implemented sharing information between users was primarily achieved through use of the input and output of files kept in secondary storage. Multics however achieves information sharing by using memory segmentation. "Information is stored in segments each of which is potentially sharable and carries its own independent attributes of size and access privilege". (See Communications of the ACM, May 1972, Volume 15, Number 5, pp. 308-318.) To implement this system in Multics the computer is able to directly address any information held on the computer. The file system is integrated with the segmented memory. This means that apart from backup purposes it is not necessary to duplicate data on the computer as any program which need to access data is able to directly access that data.
One way in which Multics takes advantage of this is by supporting dynamic linking. Multics does not need to use a loader, duplication of routines or procedures in Multics is not necessary. When a user is running a compiled procedure and that procedure refers to another external procedure a "linkage fault" occurs. The system fault handler searches for the external procedure and when it is found it is dynamically linked to the running program. (See http://www.multicians.org/features.html for an example of this.)
The Multics system uses virtual memory, this is a technique, which is reasonably common today but at the time had only been seen in operation a few years earlier in 1962. Multics implements a "classical demand-paged virtual memory management system."(See ftp://ftp.stratus.com/pub/vos/multics/pg/mvm.html). This is similar to the manner initially implemented in the Atlas system. The Addresses generated by the CPU are translated from a virtual address to an actual address. Access to the virtual memory is provided transparently using a hierarchical three-level scheme, using main storage, paging device, and disk.
Multics also developed a system of "rings" which expands beyond the usual superuser/user scheme most systems operate. Multics implements around 8 separate privilege levels. Rings are numbered 0 - 7. Ring 0 contains the supervisor program. Ring 1 contains extensions to the supervisor program. Vendor supplied programs are stored in Ring 2, user supplied programs are stored in Ring 3. Typical user programs are stored in Ring 4 and less privileged programs in Ring 5. Rings 6 and 7 are not able to directly access most system functions but have to call user supplied programs in other rings to accomplish useful work.
On-line reconfiguration is an interesting feature implemented in the Multics system, which was at the time. This feature enables the Multics system to reconfigure itself while still running. During development of the Multics system it was common for Professor Corbató's team to reconfigure the computer to run as two separate computers, one to enable continued use of the system to it's users and the second system for the developers to use to update the system. The system is able to have memory CPU's and I/O handlers added to it while the system is running.
Multics offers a concept to the user called environment shaping. The system provides a project administrator the facility to define the initial environment to which the members of the project are presented. This is achieved by being able to specify an initial procedure for the system to implement when the specified user/s log on. While this may sound a fairly simple action, it opens up to the administrators the potential to implement and evolve a project environment entirely on their own. These subsystems may bear no actual resemblance to the procedural based Multics environment. Professor Corbató mentions a few of these sub-systems in analysing the effectiveness of the first seven years of the Multics system. The subsystems are
The Dartmouth Basic [9] compiler executes in a closed subsystem implemented by an M.I.T. student group for use by undergraduate students. The compiler, its object code, and all support routines execute in a simulation of the native environment provided at Dartmouth. The users of this subsystem need little, if any, knowledge of Multics and are able to behave as if logged into the Dartmouth system proper.
Other examples of controlled environment subsystems include one to permit many programs which normally run under the GCOS operating system to also run unmodified in Multics.
Finally, an APL subsystem allows the user to behave for the most part as if he were logged into an APL machine. The significance of these subsystems is that their implementers did not need to interact with the system administrator or to modify already existing Multics capabilities.
The administrative facilities permit each such subsystem to be offered by its supporters as a private service with its own group of users, each effectively having its own private computer system.
(See http://www.multicians.org/f7y.html).
Conclusions
Having covered some of the major projects which Professor Corbató lead we now have a basis on which we can draw some conclusions as to what effect his work has had in the discipline of Computing Science. The Projects mentioned in this report with which Professor Corbató has had a leading role cover a period of time beginning in 1961 to around 1973. The report will also examine one of the fundamental concepts which Professor Corbartó and others held that of the computer as a utility (like power companies, or gas companies).
Critical Evaluation
CTSS - academic venture
The CTSS was an academic venture to implement time-sharing in a practical manner. It was the first or one of the first purposes built time-sharing computers to be developed. In it's "mature" form the CTSS provided computing facilities to M.I.T. a few of the New England Colleges and the Woods Hole Oceanographic Institution. (See http://www.cnn.com/TECH/computing/9906/29/1961.idg/index.html). The CTSS was also used to develop the Multics system before Multics could support it's own development. As an academic project it would not be appropriate to judge it by any commercial success, as it was not intended to be a commercial system.
The only real criteria against which we can judge the CTSS initially are as an experimental system. The CTSS is a significant development in the sphere of computing science because of
- Being the first implementation of a real Time-sharing computer.
- Being able to run another operating system simultaneously in the computers second core memory.
- Being the project, which drove such hardware innovations such as a hardware timer that could interrupt user programs and a mechanism to prevent user programs, acting outside of their memory boundaries.
One of its major achievements though was to generate funding for Project MAC. Funding was received from the ARPA and also others such as Bell Labs and General Electric were willing to fund and work on a major project with M.I.T. because of M.I.T.'s experience in developing this revolutionary machine the CTSS.
Multics - commercial venture
Whereas CTSS was an academic project, Multics was a commercial venture. It involved the collaboration of some of the best researchers from the academic world with those from the commercial world. As it's predecessor introduced some revolutionary concepts such as time-sharing, the Multics system aimed to develop these concepts into a more rounded system, which could serve a wider range of uses than the CTSS machine.
The criteria against which we may evaluate the impact of the Multics system include
- Commercial success.
- It's introduction of new concepts.
- It's integration of both new and recent concepts into a cohesive system.
- It's influence on the development of operating systems.
On the criteria of commercial success it can be seen that the Multics system was not as successful as the developers hoped it would be. Multics was not installed on very many sites, however despite this it still had some important roles as a commercial computer. It was on the Multics that the first Relational Database System was offered by a large computer vendor. The Database system was called the MRDS (Multics Relational Data Store) and was first released in June 1976. (See http://www.mcjones.org/System_R/mrds.html)
Multics was also the first computer system to be given a B2 security rating by the NCSC, it was used by the U.S. Air Force at the Air Force Data Services Centre. Some major companies such as Ford and General Motors as well as research institutions such as the Rome Air Development Centre in New York also operated it. Most of the systems limited commercial success occurred in Europe in the 1980's. (See http://www.multicians.org/history.html)
Multics introduced some important concepts to operating systems, which were revolutionary at the time. These included
- Writing the OS in a high Level Language.
- Ringed, segmented memory within which the file system was integrated.
- The ability to dynamically reconfigure the system.
These were important concepts which were introduced, there were also other techniques pioneered by others which were successfully integrated into the Multics system, such as paged memory. The implementation of these concepts in a high level language, and the ability to dynamically link procedures enabled Professor Corbató's team to "prototype" new procedures relatively quickly. This ability meant that the system could be developed to a working state in a similar time-scale to CTSS despite being a much more complex system than the CTSS and the team developing Multics being geographically separated.
System | Multics | CTSS |
---|---|---|
Development | 1964-1969 | 1960-1963 |
Development & use | 1969-1985 | 1963-1965 |
Use only | 1985-2001 | 1965-1973 |
However the project was a very complicated system which it was hard to manage at times. This lead to Bell Labs dropping out of the Multics project in 1969. The system had become somewhat unwieldy because each of the institutions working on the project had different goals for the project. When this was added to the wide ranging vision of what the Multics system was to accomplish, the project costs began to increase substantially, and also further development took a lot of resources.
The Influence, which Multics had on other operating systems, is quite widespread. The most well known influence the system had was on the UNIX system, originally called UNICS. When Bell Labs dropped out of the Multics project in 1969 they replaced their early implementation of Multics a much less state of the art OS called GECOS. One of the benefits, which Multics had, was that it was, for the time, a nice environment in which to program. This was due to the interactive nature of computing which Multics offered. When Multics was removed Ken Thompson, Dennis Ritchie and a few others began looking for a way to get another OS, which could offer a similar level of productivity. Eventually they managed to procure a PDP-7 computer to implement their system. This computer was actually first used to control the Graphics II display system which Bell Labs used on their BESYS operating system before they became involved in Multics.
Unix developed some of the early ideas developed in the Multics project. For example they implemented their OS in a high level language. Theirs however was of their own design called "C" rather than the incomplete PL/1 compiler the Multics team used on their system.
Other OS's directly influenced by Multics include Primes PRIMOS, Stratus's VOS, Apollo's DOMAIN OS which were all developed by people who were involved in developing the Multics system. Other OS systems were less directly influenced by Multics but included some of the features which Multics pioneered such as ringed, segmented memory.
Computer as a utility
The concept that Professor Corbató held was of the computer as a utility to which the users would be attached and it would appear that they were running their own personal system. They would be able to have their own individual style of interface with the computer and would potentially be able to access any programs or data on the system. However as Bob Metcalfe writes "In their 1965 manifesto, Multics designers assumed that Grosch's Law was true -- bigger computers are more economical. Funny, 1965 was the year that Intel's Gordon Moore first wrote about his law, which for the last 35 years has held that many small computers are better than a few big ones."(See http://www.infoworld.com/cgi-bin/displayNew.pl?/metcalfe/991018bm.htm.)
However despite the emergence of the PC as the most widespread computer on which to perform business, the concept of having a source of data and applications available continuously is one which is still with us today in the form of the Internet. When Professor Corbató began designing the Multics system the ARPANET, the precursor to the Internet, was not yet launched (that came in 1969). The Internet offers the facility of giving access to a wide range of information at anytime, and with the introduction of ASP (Application Service Providers) technology is moving back towards the utility computing envisioned by Professor Corbató and his team.
Final Conclusion
In conclusion, Professor Corbató's contribution to the Computing Science and specifically to operating system design has been wide-ranging and beneficial. Although the Multics system was not as successful commercially as it perhaps could have been, it did successfully implement several innovative features which have been developed into the operating systems we have today. Professor Corbató was instrumental in the development of computing from batch processing through to the more interactive time-sharing environment. His vision of computing also incorporates the future of computing as it is seen and worked towards by most people today, although his implementation of that vision is not the way it is being implemented.
Professor Corbató's ground braking work was done with little commercial success, but as with other ground breaking developments such as those at Xerox's famed Paulo Alto research Centre, others develop the work with the benefit of hindsight.