<<

Multics—The first seven *

by F. J. CORBATO and J. H. SALTZER Massachusetts Institute of Technology Cambridge, Massachusetts and . T. CLINGEN Information Systems Inc. Cambridge, Massachusetts

INTRODUCTION feel to be of special interest. We do not attempt detailed discussion of the organization of Multics; that is the In 1964, following implementation of the Compatible purpose of specialized technical books and papers.* Time-Sharing System (CTSS)1-2 serious planning began on the development of a new computer system specifi­ cally organized as a prototype of a computer utility. The GOALS plans and aspirations for this system, called Multics (for Multiplexed Information and Computing Service), The goals of the computer utility, although stated at were described in a set of six papers presented at the length in the 1965 papers, deserve a brief review. By a 1965 Fall Joint Computer Conference.3-8 The develop­ computer utility it was meant that one had a com­ ment of the system was undertaken as a cooperative ef­ munity computer facility with: fort involving the Bell Telephone Laboratories (from 1965 to 1969), the computer department of the General (1) Convenient remote terminal access as the normal Electric Company,* and Project MAC of M.I.T. mode of system usage; Implicit in the 1965 papers was the expectation that (2) A view of continuous operation analogous to that there should be a later examination of the development of the electric power and telephone companies; effort. From the present vantage point, however, it is (3) A wide range of capacity to allow growth or clear that a definitive examination cannot be presented contraction without either system or user re­ in a single paper. As a result, the present paper discusses organization ; only some of the many possible topics. First we review (4) An internal so reliable that users trust the goals, history and current status of the Multics proj­ their only of programs and data to be stored ect. This review is followed by a brief description of the in it; appearance of the Multics system to its various classes (5) Sufficient control of access to allow selective of users. Finally several topics are given which represent sharing of information; some of the research insights which have come out of (6) The ability to structure hierarchically both the the development activities. This organization has been logical storage of information as well as the ad­ chosen in order to emphasize those aspects of software ministration of the system; systems having the goals of a computer utility which we (7) The capability of serving large and small users without inefficiency to either; * Work reported herein was sponsored (in part) by Project MAC, (8) The ability to support different programming an M.I.T. research program sponsored by the Advanced Research environments and human interfaces within a Projects Agency, Department of Defense, under office of Naval single system; Research Contract Number N00014-70-A-0362-0001. Re­ production is permitted for any purpose of the United States Government. * For example, the essential mechanisms for much of the Multics * Subsequently acquired by Honeywell Information Systems Inc. system are given in books by Organick9 and .10 572 Spring Joint Computer Conference, 1972

(9) The flexibility and generality of system organiza­ gradually became apparent as the module integration tion required for evolution through successive continued was that there wTere gross discrepancies be­ waves of technological improvements and the tween actual and expected performance of the various inevitable growth of user expectations. logical execution paths throughout the software. The result was that an unanticipated phase of design itera­ In an absolute sense the above goals are extremely tions was necessary. These design iterations did not difficult to achieve. Nevertheless, it is our belief that mean that major portions of the system were scrapped Multics, as it now exists, has made substantial progress without being used. On the contrary, until their re­ toward achieving each of the nine goals.* Most im­ placements could be implemented, often months later, portantly, none of these goals had to be compromised they were crucially necessary to allow the testing and in any important way. evaluation of the other portions of the system. The cause of the required redesigns was rarely "bad coding" HISTORY OF THE DEVELOPMENT since most of the system were well above average ability. Moreover the redesigns did not mean As previously mentioned, the Multics project got that the goals of the project were compromised. Rather under way in the Fall of 1964. The computer equipment three recurrent phenomena were observed: (1) typically, to be used was a modified 635 which specifications representing less-important features were was later named the 645. The most significant changes found to be introducing much of the complexity, (2) made were in the processor addressing and access control the initial choice of modularity and interfacing between logic where paging and segmentation were introduced. modules was sometimes awkward and (3) it was re­ A completely new Generalized Input/Output Controller discovered that the most important property of al­ was designed and implemented to accommodate the gorithms is simplicity rather than special mechanisms varied needs of devices such as disks, tapes and tele­ for unusual cases.* without presenting an excessive interrupt The reason for bringing out in detail the above design burden to the processors. To handle the expected paging iteration experience is that frequently the planning of traffic, a 4-million word (36-bit) high-performance drum large software projects still does not properly take the system with hardware queueing was developed. The need for continuing iteration into account. And yet we design specifications for these items were completed by believe that design iterations are a required activity on Fall 1965, and the equipment became available for soft­ any large scale system which attempts to break new con­ ware development in early 1967. ceptual ground such that individual programmers can­ Software preparation underwent several phases. The not comprehend the entire system in detail. For when first phase was the development and blocking out of new ground is broken, it is usually impossible to de­ major ideas, followed by the writing of detailed program duce the consequent system behavior except by experi­ module specifications. The resulting 3,000 typewritten mental operation. Simulation is not particularly ef­ pages formed the Multics System Programmers' Man­ fective when the system concepts and user behavior are ual and served as the starting point for all program­ new. Unfortunately, one does not understand the system ming. Furthermore, the software designers were ex­ well enough to simplify it correctly and thereby obtain pected to implement their own designs. As a general a manageable model which requires less effort to imple­ policy PL/I was used as the system programming ment than the system itself. Instead one must develop language wherever possible to maximize lucidity and a different view: 14 15 maintainability of the system. - This policy also in­ (1) The initial program version of a module should creased the effectiveness of system programmers by al­ be viewed only as the first complete specification lowing each one to keep more of the system within his of the module and should be subject to design grasp. review before being debugged or checked out. The second major phase of software development, (2) Module design and implementation should be well under way by early 1967, was that of module im­ based upon an assumption of periodic evaluation, plementation and unit checkout followed by merging redesign, and evolution. into larger aggregates for integrated testing. Up to then most software and hardware difficulties had been antici­ In retrospect, the design iteration effect was apparent pated on the basis of previous experience. But what * "In anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything * To the best of our knowledge, the only other attempt to to take away ..." comprehensively attack all of these goals simultaneously is the —Antoine de Saint-Exupery, Wind, Sand and Stars Quoted TSS/360 project at IBM.11-12-13 with permission of Harcourt Brace Jovanovich, Inc. Multics 573

even in the development of the earlier Compatible Time- TABLE I—A comparison of the system development and use Sharing System (CTSS) when a second file system with periods of CTSS and Multics. The Multics develop­ ment period is not significantly longer than that for many functional improvements turned out to have poor CTSS despite the development of about 10 times as performance when initially installed. A hasty design much code for Multics as for CTSS and a geographi­ iteration succeeded in rectifying the matter but the cally distributed staff. Although reasons for this episode at the time was viewed as an anomaly perhaps similarity in time span include the use of a higher- due to inadequate technical review of individual pro­ level and a somewhat larger staff, the use of CTSS as a develoDment tool for gramming efforts. Multics was of pivitol importance.

CURRENT STATUS Development Development System Only + Use Use Only In spite of the unexpected design iteration phase, the Multics system became sufficiently effective by late 1968 CTSS 1960-1963 1963-1965 1965-present to allow system programmers to use the system while Multics 1964-1969 1969-present still developing it. By October 1969, the system was made available for general use on a " cost-recovery" charging basis similar to that used for other major two crashes per 24 hour day. These crashes have no computation facilities at M.I.T. Multics is now the single cause. Some are due to hardware failures, others most widely used time-sharing system at M.I.T., sup­ to operator error and still others to software bugs intro­ porting a user community of some 500 registered sub­ duced during the course of development. At the two scribers. The system is currently operated for users 22 other sites where Multics is operated, but where active hours per day, 7 days per week. For at least eight hours system development does not take place, there have each day the system operates with two processors and been almost no system failures traced to software. three memory modules containing a total of 384k (k = Currently the Multics system, including , 1024) 36-bit words. This configuration currently is rated commands, and libraries, consists of about at a capacity of about 55 fairly demanding users such 1500 modules, averaging roughly 200 lines of PL/I that most trivial requests obtain response in one to five apiece. These compile to produce some 1,000,000 words seconds. (Future design iterations are expected to in­ of procedure code. Another measure of the system is the crease the capacity rating.) Several times a day during size of the resident supervisor which is about 30k words the off-peak usage hours the system is dynamically re­ of procedure and, for a 55 user load, about 36k words of configured into two systems: a reduced capacity service data and buffer areas. system and an independent development system. The Because the system is so large, the most powerful development system is used for testing those hardware maintenance tool available was chosen—the system it­ and software changes which cannot be done under nor­ self. With all of the system modules stored on-line, it is mal service operation. easy to manipulate the many components of different The reliability of the round-the-clock system opera­ versions of the system. Thus it has been possible to tion described above has been a matter of great con­ maintain steadily for the last year or so a pace of install­ cern, for in any on-line real-time system the impact of ing 5 or 10 new or modified system modules a day. mishaps is usually far more severe than in batch pro­ Some three-quarters of these changes can be installed cessing systems. In an on-line system especially im­ while the system is in operation. The remainder, per­ portant considerations are: taining to the central supervisor, are installed in batches once or twice a week. This on-line maintenance capa­ (1) the time required before the system is usable bility has proven indispensable to the rapid develop­ again following a mishap, ment and maintenance of Multics since it permits con­ (2) the extra precautions required for restoring pos­ stant upgrading of the without interrupt­ sibly lost files, and ing the service. We are just beginning to see instances of (3) the psychological stress of breaking the inter­ user-written applications which require this same capa­ active dialogue with users were counting on bility so that the application users need not be inter­ system availability. rupted while the software they are using is being Because of the importance of these considerations, care­ modified. ful logs are kept of all Multics "crashes" (i.e., system The software effort which has been spent on Multics service disruption for all active users) at M.I.T. in is difficult to estimate. Approximately 150 man-years order that analysis can reveal their causes. These analy­ were applied directly to design and system programming ses indicate currently an average of between one and during the "development-only" period of Table I. 574 Spring Joint Computer Conference, 1972

Since then we estimate that another 50 man-years have mechanism which determines what on-line information been devoted to improving and extending the system. can be referenced; therefore, what are apparently two But the actual cost of a single successful system is mis­ groups of users can be discussed as one. leading, for if one starts afresh to build a similar system, Major interfaces presented to programmers on the one must compensate for the non-zero probability of Multics system can be classified as the program prepara­ failure. tion and documentation facilities and the program exe­ cution and debugging environment. They will be touched upon briefly, in the order used for program THE APPEARANCE OF MULTICS TO preparation. ITS USERS

Having reviewed the background of the project, we Program preparation and documentation may now ask who are the users of the Multics system and what do the facilities that Multics provides mean The facilities for program preparation on Multics are to these users. Before answering, it is worth describing typical of those found on other time-sharing systems, the generic user as "viewed" by Multics. Although with some shifts in emphasis (see the Appendix). For from the system's point of view all users have the same example, programmers consider the file system suffi­ general characteristics and interface with it uniformly, ciently invulnerable to physical loss that it is used no single human interface represents the Multics ma­ casually and routinely to save all information. Thus, chine. That machine is determined by each user's the punched card has vanished from the work routine initial procedure coupled with those functions accessible of Multics programmers and access to one's programs to him. Thus there exists the potential to present each and the ability to work on them are provided by the Multics user with a unique external interface. closest terminal. However, Multics does provide a internal As another example, the full ASCII character set is program environment consisting of a stack-oriented, employed in preparing programs, data, and documenta­ pure-procedure, collection of PL/I procedures imbedded tion, thereby eliminating the need for multiple text in a segmented containing all pro­ editors, several varieties of text formatting and com­ cedures and data stored on-line. The extent to which parison programs, and multiple facilities for printing some, all, or none of this internal environment is visible information both on-line and off-line. This generaliza­ to the various users is an administrative choice. tion of user interfaces facilitates the learning and sub­ The implications of these two views—both the ex­ sequent use of the system by reducing the number of ternal interface and the internal programming environ­ conventions which must be mastered. ment—are discussed in terms of the following categories Finally, because the PL/I is a large set of of users: programs, considerable attention was given to shielding the user from the size of the compiler and to aiding • System programmers and user application pro­ him in mastering the complexities of the language. As grammers responsible for writing system and user in many other time-sharing systems, the compiler is software. invoked by issuing a simple line from a • Administrative personnel responsible for the man­ terminal exactly as for the less ambitious commands. agement of system resources and privileges. No knowledge is required of the user regarding the • The ultimate users of applications systems. various phases of compilation, temporary files required, • Operations and hardware maintenance personnel and optional capabilities for the specialist; explanatory responsible, respectively, for running the machine "sermons" diagnosing syntactic errors are delivered to room and maintaining the hardware. the terminal to effect a self-teaching session during each compilation. To the , the PL/I compiler is just another command. Multics as viewed by system and subsystem programmers

The machine presented to both the Multics system Program execution environment programmer and the application system programmer is the one with which we have the most experience; it is Another set of interfaces is embodied in the imple­ the raw material from which one constructs other en­ mentation environment seen by PL/I programmers. vironments. It is worth reemphasizing that the only This environment consists of a directly addressable differentiation between Multics system programmers virtual memory containing the entire hierarchy of on­ and user programmers is embodied in the access control line information, a dynamic linking facility which Multics 575

searches this hierarchy to bind procedure references, a tics, the early designs and implementations of the pro­ device-independent input/output16 system,* and pro­ grams supporting the virtual memory18 made over- gram debugging and metering facilities. These facilities optimistic use of variable-sized storage allocation enjoy a symbiotic relationship with the PL/I procedure techniques. The result was a functionally correct but environment used both to implement them and to im­ inadequately performing set of programs. Nevertheless, plement user facilities co-existing with them. Of major these modules were used as the foundation for subse­ significance is that the natural internal environment quent work for many months. When they were finally provided and required by the system is exactly that replaced with modules using simplified fixed-size storage environment expected by PL/I procedures. For example, techniques, performance improvements of over an order PL/I pointer variables, call and return statements, of magnitude were realized. This technique emphasizes conditions, and static and automatic storage all corre­ two points: first, it is frequently possible to provide a spond directly to mechanisms provided in the internal practical, usable facility containing temporary versions environment. Consequently, the system supports PL/I of programs; second, often the insight required to sig­ code as a matter of course. nificantly improve the behavior of a program comes The main effect of the combination of these features only after it is studied in operation. As implied in the is to permit the implementer to spend his time concen­ earlier discussion of design iteration, our experience has trating on the logic of his problem; for the most part been that structural and strategic changes rather than he is freed from the usual mechanical problems of "polishing" (or recoding in ) produce storage management and overlays, input/output device the most significant performance improvements. quirks, and machine-dependent features. In general, we have noticed a significant "amplifier" or "leverage" effect with the use of an effective on-line Some implementation experience environment as a system programming facility. Major implementation projects on the Multics system seldom The Multics team began to be much more productive involve more than a few programmers, thereby easing once the Multics system became useful for software the management and communications problems usually development. A few cases are worth citing to illustrate entailed by complex system implementations. As would the effectiveness of the implementation environment. be expected, the amplification effect is most apparent A good example is the current PL/I compiler, which is with the best project personnel. the third one to be implemented for the project, and which consists of some 250 procedures and about 125k Administration of Multics facilities and resources words of object code. Four people implemented this compiler in two years, from start to first general use. The problem of managing the capabilities of a com­ The first version of the Multics program debugging puter utility with geographically dispersed subscribers system, composed of over 3,000 lines of source code, leads to a requirement of decentralized administration. was usable after one person spent some six months of At the apex of an administrative pyramid resides a sys­ nights and weekends "bootlegging" its implementation. tem administrator with the ability to register new users, As a last example, a facility consisting of 50 procedures confer resource quotas, and generate periodic bills for with a total of nearly 4,000 PL/I statements permitting services rendered. The system administrator deals with execution of Honeywell 635 programs under Multics user groups called projects. Each group can in turn became operational after one person spent eight months designate a project administrator who is delegated th,e learning about the GCOS for the 635, authority to manage a budget of system resources on PL/I, and Multics, and then implemented the environ­ behalf of the project. The project administrator is then ment. In each of these examples the implementation free to d^al directly with project members without fur­ was accomplished from remote terminals using PL/L ther intervention from the system administrator, Multics users have discovered that it is possible to thereby greatly reducing the bottlenecks inherent in a get their programs running very quickly in this environ­ completely centralized administrative structure. ment. They frequently prepare "rough drafts" of pro­ grams, execute them, and then improve their overall design and operating strategy using the results of ex­ Environment shaping perience obtained during actual operation. As an ex­ ample, again drawn from the implementation of Mul- In addition to having immediate control of such re­ sources as secondary storage, port access, and rate of * The Michigan Terminal System17 has a similar device-inde­ processor usage, the project administrator is also able pendent input/output system. to define or shape the environment seen by the members 576 Spring Joint Computer Conference, 1972

of his project when they log into the system. He does use to the designers of other systems. Having a bright this by defining those procedures that can be accessed idea which clearly solves a problem is not sufficient by members of his project and by specifying the initial cause to claim a contribution if the idea is to be part of procedure executed by each member of his project when a complex system. In order to establish the real feasi­ he logs in. This environment shaping facility has led to bility of an idea, all of its implications and consequences the notion of a private project subsystem on Multics. must be followed out. Much of the work on Multics It combines the administrative and programming facili­ since 1965 has involved following out implications and ties of Multics so that a project administrator and a consequences of the many ideas then proposed for the few project implementers can build, maintain, and prototype computer utility. That following out is an evolve environments entirely on their own. Thus, some essential part of proof of ideas is attested by the diffi­ subsystems bear no internal resemblance to the stand­ culties which have been encountered in other engineer­ ard Multics procedure environment. ing efforts such as the development of nuclear fusion For example, the Dartmouth BASIC19 compiler exe­ power plants and the electric automobile. Not all pro­ cutes in a closed subsystem implemented by an M.I.T. posals work out; for example, extended attempts to student group for use by undergraduate students. The engineer an atomic powered airplane suggest in- compiler, its object code, and all support routines exe­ feasibility. cute in a simulation of the native environment provided Perhaps Multics' most significant single contribution at Dartmouth. The users of this subsystem need little, to the state of the art of computer system construction if any, knowledge of Multics and are able to behave as is the demonstration of a large set of fully implemented if logged into the Dartmouth system proper. Other ideas in a working system. Further, most of these ideas examples of controlled environment subsystems include have been integrated without straining the overall de­ one to permit many programs which -normally run sign; most additional proposals would not topple the under the GCOS operating system to also run unmodi­ structure. Ideas such as virtual memory access to on­ fied in Multics. Finally, an APL20 subsystem allows the line storage, parallel organization, routine but user to behave for the most part as if he were logged controlled information sharing, dynamic linking of into an APL machine. The significance of these sub­ procedures, and high-level language implementa- systems is that their implementers did not need to interact with the system administrator or to modify already existing Multics capabilities. The administra­ tive facilities permit each such subsystem to be offered Root by its supporters as a private service with its own group of users, each effectively having its own private com­ puter system. System Project directory directory Address map Other Multics users for user 1 Virtual processor » Supervisor User 1 User 2 Finally, we observe that the roles of the application for user 1 segment directory directory user, the system operators and the hardware main- tainers as seen by the system are simply those of or­ w& dinary Multics users with specialized access to the Address map for user 2 Segment Segment on-line procedures and data. The effect of this uni­ a Virtual formity of treatment is to reduce greatly the mainte­ processor nance burden of the system control software. One for user 2 ~Wk example, of great practical importance, has been the H ease with which system performance measurement tools have been prepared for use by the operating Virtual memory storage system staff.

Figure 1—The entire storage hierarchy may be mapped into INSIGHTS individual user process address spaces (see arrows) as if contained in primary memory. Illustrated are the sharing of a supervisor segment by user 1 and user 2 and private access to segment a So far, we have discussed the status and appearance and segment b. The necessary primary storage is simulated by a of the Multics system. A further question is what has demand paging technique which moves information between been learned in the construction of Multics which is of the real primary memory and secondary storage Multics 577

tion have proven remarkably compatible and functional modularity was achieved was in the area of complementary. scheduling, multiprogramming, and processor manage­ To illustrate some of the areas of progress in under­ ment. Because harnessing of multiple processors was an standing of system organization and construction which objective from the beginning, a careful and methodical have been achieved in Multics, we consider here the approach to multiplexing processors, handling inter­ following five topics: rupts, and providing interprocess synchronizing primi­ tives was developed. The resulting design, known as the 1. Modular division of responsibility Multics traffic controller, absorbed into a single, simple 2. Dynamic reconfiguration module a set of responsibilities often diffused among a 3. Automatically managed multilevel memory scheduling algorithm, the input/output controlling sys­ 4. Protection of programs and data tem, the on-line file management system, and special 5. System programming language purpose inter-user communication mechanisms.21 Finally, with processor management and on-line Modular division of responsibility storage management uncoupled into well-isolated modules, the Multics input/output system was left Early in the design of Multics a decision had to be with the similarly isolatable function of managing made whether or not to treat the segmented virtual streams of data flowing from and to source and sink memory as a separately usable "feature," independent type devices.16 Thus, this section of the system concen­ of a traditionally organized read/write type file system. trates only on switching of the streams, allocation of The alternative, to use the segmented virtual memory data buffering areas, and device control strategies. as the file system itself, providing the illusion of direct Each of the divisions of labor described above repre­ "in-core" access to all on-line storage, was certainly the sents an interesting result primarily because it is so less conservative approach (see Figure 1). The second difficult to discover appropriate divisions of complex approach, which was the one chosen, led to a strong systems.* Establishing that a certain proposed division test of the ability of a computing system to support an results in simplicity, creates an uncluttered interface, apparent one-level memory for an arbitrarily large in­ and does not interfere with performance, is generally formation base. It is interesting that the resulting al­ cause for a minor celebration. most total decoupling between physical storage alloca­ tion and data movement on the one hand and directory Dynamic reconfiguration structure, naming, and file organization on the other led to a remarkably simple and functionally modular struc­ ture for that part of the system18 (see Figure 2). If the computer utility is ever to become as much a reality as the electric power utility or the telephone Another area of Multics in which a high degree of communication service, its continued operation must not be dependent upon any single physical component, since individual components will eventually require maintenance. This observation leads an electric power User programs and command /subroutine library utility to provide procedures whereby an idle generator may be dynamically added to the utility's generating capacity, while another is removed for maintenance, all General user interface without any disruption of service to customers. A simi­ Directory User I/O device lar scenario has long been proposed for multiprocessor, address space control and multimemory computer systems, in which one would management buffering dynamically switch processsors and memory boxes in / and out of the operating configuration as needed. Un­ fortunately, though there have been demonstrated a Virtual memory/ few "special purpose" designs,* it has not been apparent multi-process interface how to provide for such operations in a general purpose 24 Dram, disk, core Processor multi - system. A recent thesis proposed a general model for demand paging plexing and process the dynamic binding and unbinding of computation controller synchronization and memory structures to and from ongoing computa-

Figure 2—Major lines of modular division in Multics. Solid lines * See Dijkstra22 for a further discussion of this point. indicate calls for services. Dotted lines indicate implicit use of * An outstanding example is the American Airlines the virtual memory system.23 578 Spring Joint Computer Conference, 1972

Automatically managed multilevel memory By now it has become accepted lore in the computer a. system field that the use of automatic management Central Central processor processor algorithms for memory systems constructed of several levels with different access times can provide a signifi­ cant reduction of user programming effort. Examples of such automatic management strategies include the buffer memories of the IBM system 370 models 155, Memory Memory Memory 165, and 19525 and the demand paging virtual memories of Multics, IBM's CP-6726 and the Michigan Terminal Service system System.17 Unfortunately, behind the mask of accep­ tance hides a worrisome lack of knowledge about how to engineer a multilevel memory system with appropriate 1 r strategy algorithms which are matched to the load and Central Central hardware characteristics. One of the goals of the Multics processor processor project has been to instrument and experiment with the multilevel memory system of Multics, in order to learn I *Z-J "I better how to predict in advance the performance of proposed new automatically managed multilevel mem­ ory systems. Several specific aspects of this goal have Memory Memory Memory been explored: Development • A strategy to treat core memory, drum, and disk as system j |_ Service system. a three-level system has been proposed, including a "least-recently-used" algorithm for moving in­ 1 r 1 formation from drum to disk. Such an algorithm i has been used for some time to determine which Off-line i 27 Central i Central pages should be removed from core memory. The for processor processor maintenance i dynamics of interaction among two such algorithms I operating at different levels are weakly understood, I I and some experimental work should provide much I insight. The proposed strategy will be imple­ mented, and then compared with the simpler pres­ Memory Memory Memory ent strategy which never moves things from drum to disk, but instead makes educated "guesses" as Service system to which device is most appropriate for the perma­ nent residence of a given page. If the automatic Figure 3—Dynamic reconfiguration permits switching among algorithm is at least as good as the older, static one, the three typical operating configurations shown here, without it would represent an improvement in overall de­ currently logged-in users being aware that a change has taken sign by itself, since it would automatically track place changes in user behavior, while the static algorithm requires attention to the validity of its guesses. • A scheme to permit experimentation with predic­ tions. Using this model as a basis, the thesis also pro­ tive paging algorithms was devised. The scheme posed a specific implementation for a typical multi­ provides for each process a list of pages to be pre­ processor, multimemory computing system. One of the loaded whenever the process is run, and a second results of this work was the addition to the operating list to be immediately purged whenever the process Multics system of the capability of dynamically adding stops. The updating of these lists is controlled by a and removing central processors and memory modules decision table exercised every time the process as in Figure 3. The usefulness of the idea may be gauged stops running. Since every page of the Multics by observing that at M.I.T. five to ten such reconfigura­ virtual memory is potentially shared, the decision tions are performed in a typical 24-hour operating day. table represents a set of heuristics designed to Most of the reconfigurations are used to provide a separate out those which are probably not being secondary system for Multics development. shared at the moment. Multics 579

• A series of measurements was made to establish is included in the specifications for the next genera the effectiveness of a small hardware associative tion of hardware to be used for Multics. memory used to hold recently accessed page de­ • As an experiment in the feasibility of a multi- scriptors. These measurements established a profile layered supervisor, several supervisor procedures of hit ratio (probability of finding a page descriptor which required protection, but not all supervisor in the associative memory) versus associative privileges, were moved into a ring of protection memory size which should be useful to the designers intermediate between the users and the main of virtual memory systems.28 supervisor. The success of this experiment estab­ • A set of models, both analytic and simulation, was lished that such layering is a practical way to re­ constructed to try to understand program behavior duce the quantity of supervisor code which must in a virtual memory. So far, two results have been be given all privileges. obtained. One is the finding that a single program Both of these results are viewed as steps toward first, a characteristic (the mean execution time before en­ more complete exploitation and understanding of rings countering a "missing" page in the virtual memory of protection, and later, a less constrained organization as a function of memory size) suffices to provide a of the type suggested by Evans and LeClerc31 and by quite accurate prediction of paging and idle over­ Lampson.32 But more importantly, rings of protection heads. The second is direct calculation of the dis­ appear applicable to any computer system using a seg­ tribution of response times under multiprogram­ mented virtual memory. Two doctoral theses are under ming. Having available the entire response time way in this area. distribution, rather than just averages, permits estimation of the variance and 90-percentile points of the distribution, which may be more meaningful System programming language than just the average. A doctoral thesis is in prog­ Another technique of system engineering method­ ress on this topic. ology being explored within the Multics project is that Although the immediate effect of each of these in­ of higher level programming language for system imple­ vestigations is to improve the understanding or per­ mentation. The initial step in this direction (which formance of the current version of Multics, the long- proved to be a very big step) was the choice of the PL/I range payoff in methodical engineering using better- language for the implementation of Multics. By now, understood memory structures is also evident. Multics offers an extensive case study in the viability of this strategy. Not only has the cost of using a higher level language been acceptable, but increased main­ Protection of programs and data tainability of the software has permitted more rapid evolution of the system in response to development A long-standing objective of the public computer ideas as well as user needs. Three specific aspects of this utility has been to provide facilities for the protection experience have now been completed: of executing programs from one another, so that users • The transition from an early PL/I subset com­ may with confidence place appropriate control on the piler14 to a newer compiler which handles almost the release of their private information. In 1967, a mecha­ entire language was completed. This transition nism was proposed29 and implemented in software was carried out with performance improvement in which generalized the usual supervisor-user protection practically every module converted in spite of the relationship. This mechanism, named "rings of protec­ larger language involved. The significance of the tion," provides user-written subsystems with the same transition is the demonstration that it is not neces­ protection from other users that the supervisor has, yet sary to narrow one's sights to a "simple" subset does not require that the user-written subsystem be in­ language for system programming. If the language corporated into the supervisor. Recently, this approach is thoroughly understood, even a language as com­ was brought under intense review, with two results: plex as the full PL/I can be effectively used. As a • A hardware architecture which implements the result, the same language and compiler provided mechanism was proposed.30 One of the chief fea­ for users can also be used for system implementa­ tures of the proposed architecture is that subrou­ tion, thereby minimizing maintenance, confusion, tine calls from one to another use and specialization. exactly the same mechanisms as do subroutine • Notwithstanding the observation just made, the calls among procedures within a protection area. time required to implement a full PL/I compiler The proposal appears sufficiently promising that it is still too great for many situations in which the 580 Spring Joint Computer Conference, 1972

compiler implementation cannot be started far but significant architectural extensions to the current enough in advance of system coding. For this hardware. The circuit technology used will be that of reason, there is considerable interest in defining a the Honeywell 6080 computer. The substantial changes smaller language which is easily compilable, yet include: retains the features most important for system im­ plementation. On the basis of the experience of (1) replacement of the high-performance paging programming Multics in a subset of PL/I, such a drum initially with bulk core and, when avail­ language was defined but not implemented, since able, LSI memory, and it was not needed.33 (2) implementation of rings of protection as part of the paging and segmentation hardware. • A census of Multics system modules reveals how much of the system was actually coded in PL/I, Wherever possible the strategy of using off-the-shelf and reasons for use of other languages. Roughly, standard equipment rather than specially engineered of the 1500 system modules, about 250 were written units for Multics has been followed. This strategy is in machine language. Most of the machine language intended to simplify maintenance. modules represent data bases or small which execute a single privileged instruction. (No attempt was made to provide either a data base CONCLUSIONS compiler or PL/I built-in functions for specialized hardware needs.) Significantly, only a half dozen areas (primarily in the traffic controller, the cen­ There are many conclusions which could possibly be tral page fault , and interrupt handlers) which drawn from the experience of the Multics project. Of were originally written in PL/I have been recoded these, we consider four to be major and worthy of note. in machine language for reasons of squeezing out First, we feel it is clear that it is possible to achieve the the utmost in performance. Several programs, goals of a prototype computer utility. The current im­ originally in machine language, have been recoded plementation of Multics provides a measure of the in PL/I to increase their maintainability. mechanisms required. Moreover, the specific imple­ mentation of the system, because it has been written in PL/I, forms a model for other system designers to As with the earlier topics, the implications of this draw upon when constructing similar systems. work with PL/I should be felt far beyond the Multics Second, the question of whether or not the specific system. Most implementers, when faced with the eco­ software features and mechanisms which were postu­ nomic uncertainties of a higher-level language, have lated for effective computer utility operation are desir­ chosen machine language for their central operating able has now been tested with specific user experience. systems. The experience of PL/I in Multics when added 34 Although the specific mechanisms implemented subse­ to the expanding collection of experience elsewhere quently may be superseded by better ones, it is certainly should reduce the uncertainty. clear that the improvement of the user environment In a research project as large, long, and complex as which was wanted has been achieved. Multics, any paper such as this must necessarily omit Third, systems of the computer utility class must many equally significant ideas, and touch only a few evolve indefinitely since the cost of starting over is which may happen to have wide current interest. It is usually prohibitive and the many-year lead time re­ the purpose of individual and detailed technical papers quired may be equally unacceptable. The requirement to explain these and other ideas more fully. The bibli­ of evolvability places stringent demands on design, ography found in Reference 35 contains over twenty maintainability, and implementation techniques. such technical papers. Fourth and finally, the very act of creating a system which solves many of the problems posed in 1965 has Immediate future plans opened up many new directions of research and develop­ ment. It would appear almost a certainty that increased The Multics software is continuing to evolve in re­ user aspirations will continue to require intensive work sponse to user needs and improved understanding of its in the areas of computer system principles and organization. In 1972 a new hardware base for Multics techniques. will be installed by the Information Processing Center In closing, perhaps we should take note that in the at M.I.T. for use by the M.I.T. computing community. seven years since Multics was proposed, a great many This program compatible hardware base contains small other systems have also been proposed and constructed; Multics 581

many of these have developed similar ideas.* In most 4 E L GLASER et al cases, their designers have developed effective imple­ System design of a computer for time-sharing application mentations which are directed to a different interpreta­ AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington D C 1965 pp 197-202 tion of the goals, or to a smaller set of goals than those 5• V A VYSSOTSKY et al required for the complete computer utility. This di­ Structure of the Multics supervisor versity is valuable, and probably necessary, to accom­ AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington plish a thorough exploration of many individually com­ D C 1965 pp 203-212 plex ideas, and thereby to meet a future which holds 6 R C DALEY P G NEUMANN A general-purpose file system for secondary storage increasing demand for systems which embrace the AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington totality of computer utility requirements. D C 1965 pp 213-229 7 J F OSSANNA et al ACKNOWLEDGMENT Communication and input/output switching in a multiplex computing system It is impossible to acknowledge accurately the contri­ AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington D C 1965 pp 231-241 butions of all the individuals or even the several organi­ 8 E E DAVID JR R M FANO zations which have given various fo^ms of support to Some thoughts about the social implications of accessible the development of Multics over the past seven years. computing As would be expected of any multi-organization project AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington spanning several years there has been a turnover in the D C 1965 pp 243-247 personnel involved. As the individual contributors now 9 E I ORGANICK The Mutlics system: An examination of its structure number in the hundreds, proper recognition cannot be MIT Press (in press) Cambridge Massachusetts and London given here. Instead, since the development of signifi­ England cant features and designs of Multics has occurred in 10 R W WATSON specific areas and disciplines such as input/output, Timesharing system design concepts virtual memory design, languages, and resource multi­ McGraw-Hill Book Company New York 1970 11 W T COMFORT plexing, a more accurate delineation of achievements A computing system design for user service should be made in specialized papers. So in the end we AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington must defer to the authors of individual papers, past and D C 1965 pp 619-626 future, to acknowledge the efforts of some of the many 12 A S LETT W L KONIGSFORD contributors who have made the evolution of Multics TSS/360: A time-shared operating system AFIPS Conf Proc 33 1968 FJCC Thompson Books pp 15-28 possible. 13 R E SCHWEMM Experience gained in the development and use of TSS/360 AFIPS Conf Proc 40 1972 SJCC AFIPS Press (This REFERENCES volume) 1 F J CORBATO M M DAGGETT R C DALEY 14 F J CORBATO PL/1 as a tool for system programming An experimental time-sharing system Datamation 15 6 May 1969 pp 68-76 AFIPS Conf Proc 21 Spartan Books 1962 pp 335-344 15 R A FREIBURGHOUSE 2 P A CRISMAN The Multics PL/1 compiler The compatible time-sharing system: A programmer's guide 2nd ed MIT Press Cambridge Massachusetts 1965 AFIPS Conf Proc 35 1969 FJCC AFIPS Press 1969 3 F J CORBATO V A VYSSOTSKY pp 187-199 Introduction and overview of the Multics system 16 R J FEIERTAG E I ORGANICK AFIPS Conf Proc 27 1965 FJCC Spartan Books Washington The Multics input-output system D C 1965 pp 185-196 ACM Third Symposium on Operating Systems Principles October 18-20 1971 pp 35-41

* Some examples which have not already been mentioned include: 17 M T ALEXANDER the TENEX system of Bolt, Beranek and Newman, the VENUS Organization and features of the system of Mitre Corp., the MU5 at Manchester University, AFIPS Conf Proc 40 1972 SJCC AFIPS Press (This RC-4000 of Regnecentralen, 5020 TSS of Hitachi Corp., DIPS-1 volume) of Nippon Telephone, the Japanese National Computer Project, 18 A BENSOUSSAN C T CLINGEN R C DALEY the PDP-10/50 TSS of Digital Equipment Corp., the BCC-500 The Multics virtual memory of Berkeley Computer Corp., I.T.S. of the M.I.T. Artificial ACM Second Symposium on Operating System Principles Intelligence Laboratory, Exec-8 of Univac, System 3 and 7 and October 20-22 1969 Princeton University pp 30-42 the SPECTRA 70/46 of RCA, Star-100 of CDC, UTS of Xerox 19 BASIC Data Systems, the 6700 system of Burroughs, and the Dartmouth Fifth Edition Kiewit Computation Center Dartmouth Time-Sharing System. College September 1970 582 Spring Joint Computer Conference, 1972

20 APL/360 user's manual APPENDIX: A CHECKLIST OF MULTICS IBM form number GH20-0683-1 March 1970 FEATURES 21 J H SALTZER Traffic control in a multiplexed computer system ScD Thesis MIT Department of Electrical Engineering Following is a checklist of currently available features 1966 Also available as Project MAC technical report and facilities of Multics. Although many of the features TR-30 are described in cryptic and untranslated local jargon, 22 E W DIJKSTRA one can at least obtain a feel for the range of facilities The structure of the 'THE'-Multiprogramming system now provided. Further information on most of these Comm ACM 11 5 May 1968 pp 341-346 features may be found in the Multics Programmers' 23 R W PARKER 35 The Sabre system Manual. Datamation 119 September 1965 pp 49-52 Interactive Time-Sharing Facilities 24 R R SCHELL file editors Dynamic reconfiguration in a modular computer system PhD Thesis MIT Department of Electrical Engineering file manipulation (rename/move/delete) 1971 Also available as Project MAC technical report personal command abbreviations TR-86 recursive command language 25 C J CONTI source language debugging with breakpoints Concepts for buffer storage subroutine call tracer IEEE Computer Group News March 1969 pp 9-13 can stop any running command or program 26 R A MEYER L H SEAWRIGHT A virtual machine time-sharing system Programming Languages IBM Systems Journal 9 3 1970 pp 199-218 PL/I 27 F J CORBATO A paging experiment with the Multics system In Honor of P M Morse MIT Press Cambridge BASIC* Massachusetts 1969 pp 217-228 APL 28 M D SCHROEDER LISP Performance of the OE-645 associative memory while Multics BCPL is in operation ALM (assembly language/Multics) ACM Workshop on System Performance Evaluation April 1971 pp 227-245 Information Storage System 29 R M GRAHAM configuration independent Protection in an information processing utility accessed through virtual memory (segments) Comm ACM 11 5 May 1968 pp 365-369 access control lists by user and project 30 M D SCHROEDER J H SALTZER A hardware architecture for implementing protection rings links to segments of other users ACM Third Symposium on Operating Systems Principles hierarchical directory (catalog) arrangement October 18-20 1971 pp 42-54 public library facilities 31 D C EVANS J Y LeCLERC sharing at all levels Address mapping and the control of access in an interactive multiple segment names (synonyms) computer separate control of read, write, and execute AFIPS Conf Proc 30 1967 SJCC Thompson Books 1967 pp 23-30 Programming Environment 32 B W LAMPSON segmented virtual memory An overview of the CAL time-sharing system Computer Center University of California Berkeley dynamic linking of procedures and data, or prelinking September 5 1969 interprocess communication 33 D D CLARK R M GRAHAM J H SALTZER independent of configuration M D SCHROEDER uniform error handling mechanism Classroom information and computing service user definable protection rings MIT Project MAC Technical Report TR-80 January 11 microsecond calendar clock with interrupt 1971 program interrupt signal from console 34 J E SAMMET ( Brief survey of languages used for systems implementation Input and Output SIGPLAN Notices 6 9 October 1971 pp 1-19 standard interface for device independence 35 The multiplexed information and computing service: Programmers' manual ASCII character set used throughout MIT Project MAC Rev 10 1972 (Available from the MIT input characters converted to canonical form Information Processing Center) erase and kill editing on typed input Multics 583

I/O streams switchable during execution Reliability Measures magnetic tape, printer, card punch, card reader weekly file copies onto tape typewriter terminals: IBM 2741, 1050 daily disk/drum copy onto tape Teletype 37, 33, 35 incremental file copies onto tape, 3^ hour behind use Dura, Datel, Execuport, salvager to clean up files after system crash Terminet-300 emergency shutdown entry to system graphic support library (devices: ARDS, IMLAC, DEC 338) Maintenance Features ARPA network on-line library change, no disruption of current users interfaces at three levels: entire system source on-line, maintenance tools formatted data conversion system checkout on small hardware configuration bit stream control on-line performance monitoring of full device control multiprogramming Management Facilities paging traffic passwords required for login drum/disk usage project may interpose authentication procedure typewriter traffic decentralized projects user performance feedback: accounting, billing, and quotas cpu time and paging load on each command on-line probing and account adjustment page trace always operating operator or system initiated logout of users subroutine call counters unlisted and anonymous users limited service system Private Project Subsystems dynamic reconfiguration of memories and processors project providable command interface system performance metering for parameter Dartmouth environment* adjustment student environment project-imposed starting procedure Miscellaneous Facilities Communication Facilities interuser desk calculators help command; help files command message of the day > memorandum formatting and typing subsystem on-line error reporting and consultation service user-provided list of programs to be automatically on-line user graffiti board executed when user logs in operations message broadcast to logged-in users GCOS environment Absentee Facilities priority/defer queues for printer, card punch * The BASIC system and the Dartmouth environment were queued translator facility developed at Dartmouth College. They are used at M.I.T. by general absentee job facility permission of Dartmouth College.