The system provides a high level of data independence by isolating the end user as much as possib... more The system provides a high level of data independence by isolating the end user as much as possible from underlying storage structures. The system permits definition of a variety of relational views on common underlying data. Data control features are provided, including authorization, integrity assertions, triggered transactions, a logging and recovery subsystem, and facilities for maintaining data consistency in a shared-update environment. This paper contains a description of the overall architecture and design of the system. At the present time the system is being implemented and the design evaluated. We emphasize that System R is a vehicle for research in database architecture, and is not planned as a product.
John McCarthy designed the LISP programming language for the symbolic computation typical of arti... more John McCarthy designed the LISP programming language for the symbolic computation typical of artificial intelligence at the time, and LISP was strongly associated with AI at least through the 1990s. By 1963, a number of ideas had been proposed for how LISP 1.5 could be improved and extended. This lead to the LISP 2 project, which was carried out at System Development Corporation by personnel from SDC and Information International, Inc., using the military AN/FSQ-32 computer. LISP 2 extended LISP 1.5 with ALGOL-like syntax, static type checking, efficient support for arithmetic and arrays, pattern-matching, and more, but the LISP 2 language failed to displace LISP 1.5. Despite this, LISP 2 foreshadowed later languages, such as ECL, Common Lisp, and Java. An online archive of LISP 2 documents and source code exists at the Computer History Museum, providing a snapshot of mid-1960s ARPA-funded research and development.
The Pilot operating system provides a single-user, single-language environment for higher level s... more The Pilot operating system provides a single-user, single-language environment for higher level software on a powerful personal computer. Its features include virtual memory, a large "flat" file system, streams, network communication facilities, and concurrent programming support. Pilot thus provides rather more powerful facilities than are normally associated with personal computers. The exact facilities provided display interesting similarities to and differences from corresponding facilities provided in large multiuser systems. Pilot is implemented entirely in Mesa, a highlevel system programming language. The modularization of the implementation displays some interesting aspects in terms of both the static structure and dynamic interactions of the various components.
The Pilot operating system provides a single-user, single-language environment for higher level s... more The Pilot operating system provides a single-user, single-language environment for higher level software on a powerful personal computer. Its features include virtual memory, a large "fiat" file system, streams, network communication facilities, and concurrent programming support. Pilot thus provides rather more powerful facilities than are normally associated with personal computers. The exact facilities provided display interesting similarities to and differences from corresponding facilities provided in large multiuser systems. Pilot is implemented entirely in Mesa, a highlevel system programming language. The modularization of the implementation displays some interesting aspects in terms of both the static structure and dynamic interactions of the various components.
The CAL Timesharing System (CAL TSS) was developed at the University of California at Berkeley be... more The CAL Timesharing System (CAL TSS) was developed at the University of California at Berkeley between 1968 and 1971 to provide interactive computing for research and instruction. It ran on a mainframe computer, the Control Data Corporation 6400, and was one of the earliest systems to use capabilities for protection. Using our memories, archival records, and files preserved by McJones that are part of a donation to the Computer History Museum, we discuss the origin of the project, development of the software, and the brief experience using the system before it was shut down in May 1972.
Proceedings of the seventh symposium on Operating systems principles - SOSP '79, 1979
The Pilot operating system provides a single-user, single-language environment for higher level s... more The Pilot operating system provides a single-user, single-language environment for higher level software on a powerful personal computer. Its features include virtual memory, a large "fiat" file system, streams, network communication facilities, and concurrent programming support. Pilot thus provides rather more powerful facilities than are normally associated with personal computers. The exact facilities provided display interesting similarities to and differences from corresponding facilities provided in large multiuser systems. Pilot is implemented entirely in Mesa, a highlevel system programming language. The modularization of the implementation displays some interesting aspects in terms of both the static structure and dynamic interactions of the various components.
This talk is an introduction to the book Elements of Programming published by Addison Wesley in 2... more This talk is an introduction to the book Elements of Programming published by Addison Wesley in 2009. The book presents practical programming as a mathematical discipline, where every programming construct has its place.
Multiple threads (program counters executing in the same address space) make it easier to write p... more Multiple threads (program counters executing in the same address space) make it easier to write programs that deal with related asynchronous activities and that execute faster on shared-memory multiprocessors. Supporting multiple threads places new constraints on the design of operating system interfaces. Part I of this report presents guidelines for designing (or redesigning) interfaces for multithreaded clients. We show how these guidelines were used to design an interface to UNIX 1 -compatible file and process management facilities in the Topaz operating system. Two implementations of this interface are in everyday use: a native one for the Firefly multiprocessor, and a layered one running within a UNIX process. Part II is the actual programmer's manual for the interface discussed in Part I. Paul R. McJones and Garret F. Swart Capsule review Unix was designed to support client address spaces containing exactly one program counter. This assumption about a Unix process has had...
The problems of software configuration and release management limit the size of systems that we c... more The problems of software configuration and release management limit the size of systems that we can build efficiently. Today's large systems strain the capabilities of traditional development tools. The Vesta system provides a novel repository and system builder that emphasize complete yet manageable descriptions of software components. These facilities enable Vesta to eliminate much of the manual and error-prone drudgery of system construction without enforcing a particular methodology on its users. This paper presents an overview of Vesta, followed by a series of detailed examples that illustrate how Vesta's facilities simplify the development of large systems. These examples are drawn from a year's use of Vesta by a group of about 25 researchers developing a rapidly changing software system of over 1.4 million source lines. That experience clearly demonstrates the power and practicality of the Vesta approach and its advantages over conventional tools. v Contents 1 ...
The Pilot operating system provides a single-user, single-language environment for higher level s... more The Pilot operating system provides a single-user, single-language environment for higher level software on a powerful personal computer. Its features include virtual memory, a large "fiat " file system, streams, network communication facilities, and concurrent programming support. Pilot thus provides rather more powerful facilities than are normally associated with personal computers. The exact facilities provided display interesting similarities to and differences from corresponding facilities provided in large multi-user systems. Pilot is implemented entirely in Mesa, a high-level system programming language. The modularization of the implementation displays some interesting aspects in terms of both the static structure and dynamic interactions of the various components. Key Words and Phrases: personal computer, operating system, high-level language, virtual memory,
The Pilot operating system provides a single-user, single-language environment for higher level s... more The Pilot operating system provides a single-user, single-language environment for higher level software on a powerful personal computer. Its features include virtual memory, a large "fiat" file system, streams, network communication facilities, and concurrent programming support. Pilot thus provides rather more powerful facilities than are normally associated with personal computers. The exact facilities provided display interesting similarities to and differences from corresponding facilities provided in large multi-user systems. Pilot is implemented entirely in Mesa, a high- level system programming language. The modularization of the implementation displays some interesting aspects in terms of both the static structure and dynamic interactions of the various components. Key Words and Phrases: personal computer, operating system, high-level language, virtual memory, file, process, network, modular programming, system structure CR Categories: 4.32, 4.35, 4.42, 6.20 I. In...
Allowing multiple threads to execute within the same address space makes it easier to write progr... more Allowing multiple threads to execute within the same address space makes it easier to write programs that deal with related asynchronous activities and that execute faster on shared-memory multiprocessors. Supporting multiple threads places new constraints on the design of operating system interfaces. We present several guidelines for designing or redesigning interfaces for multithreaded clients. We show how 1 these guidelines were used to design an interface to UNIX -compatible file and process management facilities in the Topaz operating system. Two implementations of this interface are in everyday use: a native one for the Firefly multiprocessor, and a layered one running within a UNIX process.
This paper describes and evaluates the recovery subsystem of System R. an experimental data manag... more This paper describes and evaluates the recovery subsystem of System R. an experimental data management system . The features of the recovery system include: The transaction concept which allows application programs to commit. abort or partially undo their effects . The DO-UNDO-REDO protocol allows new recoverable types and operations to be added to the recovery system . Application programs can record data in the transaction log to facilitate application-specific recovery . The checkpoint mechanism is based on differential files (shadows) . The recovery log is based on disk rather than tape .
This document describes how to incorporate the Each to Each recommendation technology in a comp... more This document describes how to incorporate the Each to Each recommendation technology in a complete application. Each to Each applies collaborative filtering techniques to the problem of making subjective recommendations to consumers faced with “infoglut”. The basic idea is to ask people to vote for items on a numeric scale, then perform a statistical analysis of the collection of all people’s votes, and use the results of the analysis to predict additional items of potential interest to a particular person. Unlike some competitive approaches, the Each to Each technology separates prediction from analysis, allows predictions to be made using compact “models” produced by the analysis, and provides meaningful predictions after a person has provided just a few votes.
The general goal of the APIs presented in this document is to separate core recommendation functionality from application-dependent features such as choice of platform, database, communication mechanism, etc. Implementing the “glue” code to connect these APIs into a complete application is straightforward.
The APIs are written in C++, but avoid advanced C++ features (e.g., no multiple inheritance, templates, or exceptions). Bindings for other languages (e.g., Java, C) would not be difficult to design.
This document describes everything needed for pure vote-based predictions of person-item and person-person affinity (the latter to be used for choosing reviews of potential interest to a person). The appendix describes an enhancement called categories, which allow the use of demographic information and item categorization information in predictions. We have little experience with categories.
Early design work on the LISP 2 project took place at MIT and Stanford during 1963 and 1964 and i... more Early design work on the LISP 2 project took place at MIT and Stanford during 1963 and 1964 and included one or more conferences to bring together the interested people. Starting around late 1964, arrangements were made with System Development Corporation (SDC) and Information International Incorporated (III) to complete the detailed design and carry out the implementation. A fairly complete system was running on SDC’s AN/FSQ-32 computer by the fall of 1966.
The charter of SRC is to advance both the state of knowledge and the state of the art in computer... more The charter of SRC is to advance both the state of knowledge and the state of the art in computer systems. From our establishment in 1984, we have performed basic and applied research to support Digital's business objectives. Our current work includes exploring distributed personal computing on multiple platforms, networking, programming technology, system modelling and management techniques , and selected applications. Our strategy is to test the technical and practical value of our ideas by building hardware and software prototypes and using them as daily tools. Interesting systems are too complex to be evaluated solely in the abstract; extended use allows us to investigate their properties in depth. This experience is useful in the short term in reening our designs, and invaluable in the long term in advancing our knowledge. Most of the major advances in information systems have come through this strategy, including personal computing, distributed systems, and the Internet. W...
Uploads
Papers by Paul R McJones
The general goal of the APIs presented in this document is to separate core recommendation functionality from application-dependent features such as choice of platform, database, communication mechanism, etc. Implementing the “glue” code to connect these APIs into a complete application is straightforward.
The APIs are written in C++, but avoid advanced C++ features (e.g., no multiple inheritance, templates, or exceptions). Bindings for other languages (e.g., Java, C) would not be difficult to design.
This document describes everything needed for pure vote-based predictions of person-item and person-person affinity (the latter to be used for choosing reviews of potential interest to a person). The appendix describes an enhancement called categories, which allow the use of demographic information and item categorization information in predictions. We have little experience with categories.