From the Preface
MAIN GOAL
This book tries to give students of computer science and professional programmers a general understanding of operating systems--the programs that enable people to share computers efficiently.
To make the sharing of a computer tolerable, an operating system must enforce certain rules of behavior on all its users. One would therefore expect the designers of operating systems to do their utmost to make them as simple, efficient, and reliable as possible.
A number of operating systems made in the early 1960's had these characteristics; but in the late 1960's designers were often overambitious and built enormous systems with poor performance.
I see no inherent reason why operating systems should not reach the quality of program construction found in present compilers; this will require an understanding of the principles common to all operating systems and a consistent use of safe methods of designing large programs. It is my hope that this book will give you a start in this direction.
I assume that you are familiar with the basic structure of computers and programming languages and have some experience in writing and testing non-trivial programs. In a few cases a knowledge of elementary calculus and probability theory is also needed.
THEMES
The main theme of the book is that operating systems are not radically different from other programs. The difficulties encountered in the design of efficient, reliable operating systems are the same as those one encounters in the design of other large programs, such as compilers or payroll programs.
The historical importance of operating systems is that they led to the discovery of new principles of resource sharing, multiprogramming, and program construction. These principles have a general validity beyond operating systems, and I think that they should be taught as part of a core of computer science courses, following courses on programming languages, data structures, and computer structures.
The purpose of an operating system is to share computational resources among competing users. To do this efficiently a designer must respect the technological limitations of these resources.
Present computers consist of a small number of components (processors, store modules, and peripherals) which operate strictly sequentially. It is possible to multiplex a single processor and a small internal store (supported by a large backing store) among several computations to create the illusion that they are executed concurrently and have access to a large, homogeneous store. But these abstractions are not supported by the underlying technology, and if they are carried too far, the result is a total collapse of computational service known as thrashing.
One of the difficulties of operating systems is the highly unpredictable nature of the demands made upon them. Independent users submit jobs with varying resource requirements at irregular intervals. An operating system is expected to schedule this unpredictable mixture of jobs in such a manner that the resources are utilized efficiently and the users can expect response within reasonably predictable times!
The only way to satisfy these expectations is probably to put restrictions on the characteristics of jobs so the designer can take advantage of the expected usage of resources. This is certainly the main reason for the success of small, specialized operating systems. It also gives a plausible explanation of the failure of recent "general-purpose" operating systems which try to handle a much greater variety of jobs (in some cases for a variety of machine configurations as well).
Although most components of present computers are sequential in nature, they can work simultaneously to some extent. This influences the design of operating systems so much that the subject can best be described as the management of shared multiprogramming systems.
The main difficulty of multiprogramming is that concurrent activities can interact in a time-dependent manner which makes it practically impossible to locate programming errors by systematic testing. Perhaps, more than anything else, this explains the difficulty of making operating systems reliable.
If we wish to succeed in designing large, reliable multiprogramming systems, we must use programming tools which are so well-structured that most time-dependent errors can be caught at compile time. It seems hopeless to try to solve this problem at the machine level of programming, nor can we expect to improve the situation by means of so-called "implementation languages," which retain the traditional "right" of systems programmers to manipulate addresses freely.
I use the programming language Pascal throughout the text to define operating system concepts concisely by algorithms. Pascal combines the clarity needed for teaching with the efficiency required for design. It is easily understood by programmers familiar with Algol 60 or Fortran, but Pascal is a far more natural programming tool than these languages, particularly with respect to data structuring. As we go along, I extend Pascal with a well-structured notation for multiprogramming.
STRUCTURE
The book contains eight chapters:
Chapter 1 is an overview of operating systems. It defines the purpose of operating systems and outlines their historical development from early batch processing to recent interactive systems. It also points out the influence of technological constraints on the services offered by operating systems.
Chapter 2 on sequential processes discusses the role of abstraction and structure in problem solving and the nature of computations. It summarizes structuring principles of data and sequential programs and gives an example of hierarchal program construction.
Chapter 3 on concurrent processes emphasizes the role of reproducible behavior in program testing and compares various methods of process synchronization: simple and conditional critical regions, semaphores, message buffers, and event queues. It concludes with an analysis of the prevention of deadlocks by a hierarchal ordering of process interactions.
Chapters 2 and 3 present an abstract view of computational processes and their representation in programming languages. The following Chapters, 4 to 6, discuss techniques of implementing processes on computers with limited resources. This problem is mainly technological, and it seems unrealistic to look for a unifying view of how different kinds of components are used efficiently. I try to describe various techniques and point out under which circumstances they are successful.
Chapter 4 on processor management discusses the short-term problems of scheduling concurrent processes on a limited number of processors at the lowest level of programming. It also explains the implementation of synchronizing primitives and evaluates the influence of these abstractions on the real-time characteristics of a system.
Chapter 5 on store management considers the short-term problems of sharing an internal store of limited capacity among concurrent processes. It summarizes current store technology and explains the influence of recursive procedures, concurrent processes, and dynamic relocation on store addressing. It ends with an analysis of placement algorithms and store multiplexing.
Chapter 6 analyzes the performance of various medium-term scheduling algorithms. It uses elementary queuing theory to derive analytical results for the average response time to user requests in a single processor system with these priority rules: first-come first-served, shortest job next, highest response ratio next, and round robin. Foregound-background scheduling is discussed informally.
Chapter 7 is concerned with resource protection--the problem of ensuring that physical resources and data are accessed by well-defined operations within computations authorized to use them. This is a fundamental problem of program design which should have been presented earlier in the book, if only I understood it better. It is handled inadequately in all present operating systems. As fragments of a solution I mention two of the more systematic techniques used: the class concept in Simula 67 and the capability concept.
It is important that a designer of operating systems understand the underlying common principles. But the danger of this division of the subject into separate chapters is that you may find it difficult to see how they fit together into a working system and be unaware of the more subtle interactions between, say, process communication, store management, input/output, and preemptive scheduling.
I have therefore tried to describe a complete operating system in some detail in Chapter 8. It is a case study of the RC 4000 multiprogramming system. It is by no means an ideal system, but it is the only one I know in detail, and is regarded as a consistent, simple, and reliable design which illustrates the concepts and implementation of concurrent processes.
It should perhaps be explained why there are no chapters on input/ output and filing systems. For a particular operating system, considerations about how these tasks are handled are highly relevant. But in this book I have concentrated on the more elementary aspects of these complicated tasks, namely process synchronization, store management, scheduling, and resource protection.
VOCABULARY
In each chapter many words are first used intuitively to give you a feeling for the subject. Later I return to these words and try to give reasonably precise verbal definitions of their meaning. My use of a common word may not always agree completely with the various shades of meaning it has acquired elsewhere, but I hope to justify the usefulness of the concept behind the word and show that it is possible to describe operating systems in an informal but consistent terminology.
The most important terms are collected in a Vocabulary section at the end of the book.
LITERATURE
This book is only one designer's view of operating systems. I urge you to examine my viewpoints critically and compare them with other literature on the subject. As a guide to such a study I have included an annotated selective bibliography at the end of each chapter.
For the sake of completeness I have listed all references mentioned in the text at the end of the book.
- ALDERSON, A., LYNCH, W. C., and RANDELL, B., "Thrashing in a multiprogrammed paging system," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- ALEXANDER, S. L. and KONIGSFORD, W. L., "TSS/360: a time-shared operating system," Proc. AFIPS Fall Joint Computer Conf., pp. 15-28, 1968.Google Scholar
- ANDERSEN, P. L., "RC 4000 datamatics: monitor 3," Regnecentralen, Copenhagen, Denmark, Feb. 1972.Google Scholar
- ARDEN, B. and BOETTNER, D., "Measurement and performance of a multiprogramming system," The 2d ACM Symposium on Operating System Principles, Princeton, New Jersey, Oct. 1969.Google Scholar
- BATSON, A., JU, S., and WOOD, D., "Measurements of segment size," Comm. ACM 13, 3, pp. 155-59, March 1970.Google ScholarDigital Library
- BELADY, L. A., "A study of replacement algorithms for a virtual-store computer," IBM Systems Journal 5, 2, pp. 78-101, 1966.Google ScholarDigital Library
- BELADY, L. A., NELSON, R. A., and SHEDLER, G. S., "An anomaly in space-time characteristics of certain programs running in a paging machine," Comm. ACM 12, 6, pp. 349-53, June 1969.Google ScholarDigital Library
- BRATMAN, H., and BOLDT, I. V., "The SHARE 709 system: supervisory control," Journal ACM 6, 2, pp. 152-55, April 1959.Google ScholarDigital Library
- BRIGHT, H. S., CHEYDLEIJR, B. F., and GROWE, W., "On the reduction of turnaround time," Proc. AFIPS Fall Joint Computer Conf., pp. 161-69, Dec. 1962.Google Scholar
- BRINCH HANSEN, P. (ed.), "RC 4000 software: multiprogramming system," Regnecentralen, Copenhagen, Denmark, April 1969.Google Scholar
- BRINCH HANSEN, P., "An analysis of response ratio scheduling," IFIP Congress 71, Ljubljana, Yugoslavia, Aug. 1971a.Google Scholar
- BRINCH HANSEN, P., "An outline of a course on operating system principles," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971b.Google Scholar
- BRINCH HANSEN, P., "A comparison of two synchronizing concepts," Acta Informatica 1, 3, pp. 190-99, 1972a.Google Scholar
- BRINCH HANSEN, P., "Structured multiprogramming," Comm. ACM 15, 7, pp. 574-78, July 1972b.Google Scholar
- BRINCH HANSEN, P., "Testing a multiprogramming system," Software--Practice & Experience 3, 2, pp. 145-50, April-June 1973.Google Scholar
- COFFMAN, E. G. and WOOD, R. C., "Interarrival statistics for time-sharing systems," Comm. ACM 9, 7, pp. 500-03, July 1966.Google ScholarDigital Library
- COFFMAN, E. G. and VARIAN, L. C., "Further experimental data on the behavior of programs in a paging environment," Comm. ACM 11,7, pp. 471-74, July 1968b.Google ScholarDigital Library
- COFFMAN, E. G. and KLEINROCK, L., "Feedback queuing models for time-shared systems," Journal of ACM 15, 4, pp. 549-76, Oct. 1968c.Google ScholarDigital Library
- COMEAU, L. W., "A study of the effect of user program optimization in a paging system," ACM Symposium on Operating System Principles, Gatlinburg, Tennessee, Oct. 1967.Google Scholar
- COMFORT, W. T., "A computing system design for user service," Proc. AFIPS Fall Joint Computer Conf., pp. 619-28, 1965.Google Scholar
- CORBATO, F. J. and VYSSOTSKY, V. A., "Introduction and overview of the MULTICS system," Proc. AFIPS Fall Joint Computer Conf., pp. 185-96, Nov. 1965.Google Scholar
- COSINE REPORT on "An undergraduate course on operating systems principles," Commission on Education, National Academy of Engineering, Washington, D.C., June 1971.Google Scholar
- COURTOIS, P. J., HEYMANS, F., and PARNAS, D. L., "Concurrent control with 'readers' and 'writers.'" Comm. ACM 14, 10, pp. 667-68, Oct. 1971.Google ScholarDigital Library
- COX, D. R. and SMITH, W. L., Queues, John Wiley and Sons, New York, New York, 1961.Google Scholar
- DAHL, O.-J., MYHRHAUG, B., and NYGAARD, K., "Simula 67--Common base Language," Norsk Regnesentral, Oslo, Norway, May 1968.Google Scholar
- DALEY, R. C. and NEUMAN, P. G., "A general purpose file system for secondary storage," Proc. AFIPS Fall Joint Computer Conf., pp. 213-29, 1965.Google Scholar
- DALEY, R. C. and DENNIS, J. B., "Virtual memory, processes, and sharing in Multics," Comm. ACM 11, 5, pp. 306-12, May 1968.Google ScholarDigital Library
- DeMEIS, W. M. and WEIZER, N., "Measurements and analysis of a demand paging time sharing system," Proc. ACM National Meeting, pp. 201-16, 1969.Google Scholar
- DENNING, P. J., "The working set model for program behavior," Comm. ACM 11, 5, pp. 323-33, May 1968.Google ScholarDigital Library
- DENNIS, J. B., "Segmentation and the design of multiprogrammed computer systems," Journal of ACM 12, 4, pp. 589-602, Oct. 1965.Google ScholarDigital Library
- DIJKSTRA, E. W., "Hierarchal ordering of sequential processes," Acta Informatica 1, 2, pp. 115-38, 1971b.Google ScholarDigital Library
- DIJKSTRA, E. W., "A class of allocation strategies inducing bounded delays only," Proc. AFIPS Spring Joint Computer Conf., pp. 933-36, May 1972.Google Scholar
- FELLER, W., "An Introduction to Probability Theory and its Applications," Vol. I, 2 ed., John Wiley and Sons, New York, New York, 1957.Google Scholar
- FIFE, D. W., "An optimization model for time-sharing," Proc. AFIPS Spring Joint Computer Conf., pp. 97-104, April 1966.Google Scholar
- FINE, G. H., JACKSON, C. W., and McISAAC, P. V., "Dynamic program behavior under paging," Proc. ACM National Meeting, pp. 223-28, 1966.Google Scholar
- FREEMAN, D. N. and PEARSON, R. R., "Efficiency vs responsiveness in a multiple-services computer facility," Proc. ACM National Meeting, pp. 25-34B, 1968.Google Scholar
- FUCHEL, K. and HELLER, S., "Consideration in the design of a multiple computer system with extended core storage," The ACM Symposium on Operating System Principles, Gatlinburg, Tennessee, Oct. 1967.Google Scholar
- GLASER, E. L., COULEUR, J. F., and OLIVER, G. A., "System design of a computer for time sharing applications," Proc. AFIPS Fall Joint Computer Conf., pp. 197-202, 1965.Google Scholar
- GRAHAM, R. M., "Protection in an information processing utility," Comm. ACM 11, 5, pp. 365-69, May 1968.Google ScholarDigital Library
- HABERMANN, A. N., "On the harmonious cooperation of abstract machines," Technological University, Eindhoven, The Netherlands, 1967.Google Scholar
- HABERMANN, A. N., "Prevention of system deadlocks," Comm. ACM 12, 7, pp. 373-85, July 1969.Google ScholarDigital Library
- HABERMANN, A. N., "Synchronization of communicating processes," Comm. ACM 15, 3, pp. 171-76, March 1972.Google ScholarDigital Library
- HAVENDER, J. M., "Avoiding deadlock in multitasking systems," IBM Systems Journal 7, 2, pp. 74-84, 1968.Google ScholarDigital Library
- HOARE, C. A. R., "Proof of a program: Find," Comm. ACM 14, 1, pp. 39-45, Jan. 1971a.Google ScholarDigital Library
- HOLT, R. C., "On deadlock in computer systems," Cornell University, Ithaca, New York, 1971.Google Scholar
- HUME, J. N. P. and ROLFSON, C. B., "Scheduling for fast turnaround in job-at-a-time processing," IFIP Congress 68, Edinburgh, Great Britain, Aug. 1968.Google Scholar
- IRONS, E. T., "A rapid turnaround multiprogramming system," Comm. ACM 8, pp. 152-57, March 1965.Google ScholarDigital Library
- KILBURN, T., EDWARDS, D. B. G., LANIGAN, M. J., and SUMNER, F. H., "One-level storage system," IRE Transactions on Electronic Computers 11, 2, pp. 233-35, April 1962.Google Scholar
- KLEINROCK, L., "A conservation law for a wide class of queuing disciplines," Naval Research Logistics Quarterly 12, pp. 181-92, June 1965.Google ScholarCross Ref
- KLEINROCK, L., "Certain analytic results for time-shared processors," IFIP Congress 68, Edinburgh, Great Britain, Aug. 1968.Google Scholar
- KLEINROCK, L., "A continuum of time-sharing scheduling algorithms," Proc. AFIPS Spring Joint Computer Conf., pp. 453-58, 1970.Google Scholar
- LAMPSON, B. W., LICHTENBERGER, W. W., and PIRTLE, M. W., "A user machine in a time-sharing system," Proc. IEEE 54, 12, pp. 1766-74, Dec. 1966.Google ScholarCross Ref
- LICKLIDER, J. C. R. and CLARK, W. E., "On-line man-computer communication," Proc. AFIPS Spring Joint Computer Conf., pp. 113-28, May 1962.Google Scholar
- LITTLE, J. D. C., "A proof of the queuing formula L = kW," Operations Research 9, pp. 383-87, 1961.Google ScholarDigital Library
- McCULLOUGH, J. D., SPEIERMAN, K. H. and ZURCHER, F. W., "A design for a multiple user multiprocessing system," Proc: AFIPS Fall Joint Computer Conf., pp. 611-17, 1965.Google Scholar
- MEALY, G. H., "The functional structure of OS/360. Part I--Introductory survey," IBM Systems Journal 5, 1, 1966.Google ScholarDigital Library
- MOTOBAYASHI, S., MASUDA, T. and TAKAHASHI, N., "The HITAC 5020 time sharing system," Proc. ACM National Meeting, pp. 419-29, 1969.Google Scholar
- NATO REPORT on "Software Engineering,," Garmisch, Germany, Oct. 1968.Google Scholar
- NATO REPORT on "Software Engineering," Rome, Italy, Oct. 1969.Google Scholar
- NAUR, P., "The design of the GIER Algol compiler," BIT 3, 2-3, pp. 124-40 and 145-66, 1963.Google Scholar
- NAUR, P., "The performance of a system for automatic segmentation of programs within an Algol compiler (GIER Algol)," Comm. ACM 8, 11, pp. 671-77, Nov. 1965.Google ScholarDigital Library
- NAUR, P., "Program translation viewed as a general data processing problem," Comm. ACM 9, 3, pp. 176-79, March 1966.Google ScholarDigital Library
- OPPENHEIMER, G. and WEIZER, N., "Resource management for a medium-scale time-sharing operating system," Comm. ACM 11, 5, pp. 313-22, May 1968.Google ScholarDigital Library
- ORGANICK, E. I. and CLEARY, J. G., "A data structure model of the B6700 computer system," Proc. Symposium on Data Structures in Programming Languages, Gainsville, Florida, pp. 83-145, Feb. 1971.Google Scholar
- PATIL, S. S., "Closure properties of intetconnections of determinate systems," Record of the Project MAC Conference on Concurrent Systems and Parallel Computations, ACM, New York, New York, pp. 107-16, June 1970.Google Scholar
- PHIPPS, T. E., "Machine repair as a priority waiting-line problem," Operations Research 4, pp. 76-85, 1956.Google ScholarDigital Library
- RANDELL, B. and RUSSELL, L. J., Algol 60 Implementation. Academic Press, New York, New York, 1964.Google Scholar
- RANDELL, B., "A note on storage fragmentation and program segmentation," Comm. ACM 12, 7, pp. 365-72, July 1969.Google ScholarDigital Library
- ROSIN, R. F., "Determining a computing center environment," Comm. ACM 8, 7, pp. 463-68, July 1965.Google ScholarDigital Library
- SCHERR, A. L., "An analysis of time-shared computer systems," MAC-TR-18, Massachusetts Institute of Technology, Cambridge, Massachusetts, June 1965.Google Scholar
- SCHROEDER, M. D. and SALTZER, J. H., "A hardware architecture for implementing protection rings," Comm. ACM 15, 3, pp. 157-70, March 1972.Google ScholarDigital Library
- SHEMER, J. E. and HEYING, D. W., "Performance modeling and empirical measurements in a system designed for batch and time-sharing users," Proc. AFIPS Fall Joint Computer Conf., pp. 17-26, 1969.Google Scholar
- SIMON, H. A., "Reflections on time sharing from a user's point of view," Computer Science Research Review, Carnegie.Mellon University, Pittsburgh, Pennsylvania, 1966.Google Scholar
- STRACHEY, C., "Time sharing in large fast computers," Proc. International Conference on Information Processing, UNESCO, Paris, France, pp. 336-41, June 1959.Google Scholar
- VAREHA, A. L., RUTLEDGE, R. M., and GOLD, M. M., "Strategies for structuring two-level memories in a paging environment," The 2d ACM Symposium on Operating System Principles, Princeton, New Jersey, Oct. 1969.Google Scholar
- WALTER, E. S. and WALLACE, V. L., "Further analysis of a computing center environment," Comm. ACM 10, 5, 266-72, May 1967.Google ScholarDigital Library
- WIRTH, N., "The design of a Pascal compiler," Software--Practice and Experience 1, pp. 309-33, 1971b.Google ScholarCross Ref
- WULF, W. A., "Performance monitors for multiprogramming systems," The 2d ACM Symposium on Operating System Principles, Princeton, New Jersey, Oct. 1969.Google Scholar
- The following papers: ALDERSON, 1971; BRINCH HANSEN, 1971b; BRON, 1971; DIJKSTRA, 1971b; FRASER, 1971; HOARE, 1971b and 1971c; and LYNCH, 1971 have been reprinted in: Operating Systems Techniques--Proceedings of a Seminar held at Queen's University, Belfast, 1971. Edited by C. A. R. Hoare and R. H. Perrott. Academic Press, New York, 1972.Google Scholar
- DAHL, 1971 is included in: DAHL, O.-J., DIJKSTRA, E. W. and HOARE, C. A. R. Structured Programming, Academic Press, New York, 1972.Google Scholar
- CORBATO, F. J., MERWIN-DAGGETT, M., and DALEY, R. C., "An experimental time-sharing sytem," Proc. AFIPS Fall Join Computer Conf., pp.335-44, May 1962.Google Scholar
- FRASER, A. G., "The integrity of a disc based file system," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- KILBURN, T., HOWARTH, D. J., PAYNE, R. B., and SUMNER, F. H., "The Manchester University Atlas operating system. Part I: Internal organization," Computer Journal 4, 3, 222-25, Oct. 1961.Google ScholarCross Ref
- LYNCH, W. C. "Description of a high capacity fast turnaround university computing center," Proc. ACM National Meeting, pp. 273-88, Aug. 1967.Google Scholar
- LYNCH, W. C., "An operating system design for the computer utility environment," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- MORRIS, D., SUMNER, F. H., and WYLD, M. T., "An appraisal of the Atlas supervisor," Proc. ACM National Meeting, pp. 67.75, Aug. 1967.Google Scholar
- ROSIN, R. F., "Supervisory and monitor systems," Computing Surveys 1, 1, pp. 15-32, March 1969.Google ScholarDigital Library
- SCHWARTZ, J. L, COFFMAN, E. G., and WEISSMAN, C., "A general purpose time.sharing system," Proc. AFIPS Spring Joint Computer Conf., pp. 397-411, April 1964.Google Scholar
- SCHWARTZ, J. I. and WEISSMAN, C., "The SDC timesharing system revisited," Proc. ACM National Meeting, pp. 263-71, Aug. 1967.Google Scholar
- DIJKSTRA, E. W., "The structure of THE multiprogramming system," Comm. ACM 11, 5, pp. 341-46, May 1968.Google ScholarDigital Library
- DIJKSTRA, E. W., A short introduction to the art of programming, Technological University, Eindhoven, The Netherlands, Aug. 1971a.Google Scholar
- HOARE, C. A. R., "An axiomatic basis for computer programming," Comm. ACM 12, 10, pp. 576-83, Oct. 1969.Google ScholarDigital Library
- HORNING, J. J. and RANDELL, B., "Process structuring," University of Newcastle upon Tyne, England, 1972.Google Scholar
- MINSKY, M. L., Computation: finite and infinite machines, Prentice-Hall Inc., Englewood Cliffs, New Jersey, 1967.Google Scholar
- SIMON, H. A., "The architecture of complexity," Proc. American Philosophical Society 106, 6, pp. 468-82, 1962.Google Scholar
- WIRTH, N., "The programming language Pascal," Acta Informatica 1, 1, pp. 35-63, 1971a.Google ScholarDigital Library
- BREDT, T. H., "A survey of models for parallel computing," Stanford University, Palo Alto, California, Aug. 1970.Google Scholar
- BRINCH HANSEN, P., "The nucleus of a multiprogramming system," Comm. ACM 13, 4, 238-50, April 1970.Google Scholar
- COFFMAN, E. G., ELPHICK, M. J., and SHOSHANI, A., "System deadlocks," Computing Surveys 3, 2, pp. 67-78, June 1971.Google ScholarDigital Library
- CONWAY, M. E., "Design of a separable transition-diagram compiler," Comm. ACM 6, 7, pp. 396408, July 1963.Google ScholarDigital Library
- DIJKSTRA, E. W., "Cooperating sequential processes," Technological University, Eindhoven, The Netherlands, 1965. (Reprinted in Programming Languages, F. Genuys, ed., Academic Press, New York, New York, 1968).Google Scholar
- HOARE, C. A. R., "Towards a theory of parallel programming." International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.Sept. 1971b.Google Scholar
- KNUTH, D. E., The Art of Computer Programming, Volume 1, Chapter 1. Addison-Wesley, Reading, Massachusetts, 1969.Google Scholar
- MORENOFF, E. and McLEAN, J. B., "Inter-program communications, program string structures and buffer files," Proc. AFIPS Spring Joint Computer Conf., pp. 175-83, 1967.Google Scholar
- BRINCH HANSEN, P., "The nucleus of a multiprogramming system," Comm. ACM 13, 4, pp. 238-50, April 1970.Google Scholar
- HOOVER, E. S. and ECKHART, B. J., "Performance of a monitor for a real-time control system," Proc. AFIPS Fall Joint Computer Conf., pp. 23-25, Nov. 1966.Google Scholar
- LAMPSON, B. W., "A scheduling philosophy for multiprocessing systems," Comm. ACM 11, 5, pp. 347-60, May 1968.Google ScholarDigital Library
- LISKOW, B. H., "The design of the Venus operating system," Comm. ACM 15, 3, pp. 144-59, March 1972.Google Scholar
- SALTZER, J. H., "Traffic control in a multiplexed computer system," MAC-TR-30, Massachusetts Institute of Technology, Cambridge, Massachusetts, July 1966.Google Scholar
- WIRTH, N., "On multiprogramming, machine coding, and computer organization," Comm. ACM 12, 9, pp. 489.98, Sept. 1969.Google ScholarDigital Library
- BELL, G. and NEWELL, A., Computer Structures: Readings and Examples. McGraw-Hill Book Company. New York, 1971.Google Scholar
- BRON, C., "Allocation of virtual store in THE multiprogramming system," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- DENNING, P. J., "Virtual memory," Computing Surveys 2, 3, pp. 153-89, Sept. 1970.Google ScholarDigital Library
- HOARE, C. A. R. and McKEAG, R. M., "A survey of store management techniques," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971c.Google Scholar
- McKEAG, R. M., "THE Multiprogramming System," The Queen's University of Belfast, Northern Ireland, 1971b.Google Scholar
- COFFMAN, E. G. and KLEINROCK, L., "Computer scheduling methods and their countermeasures," Proc. AFIPS Spring Joint Computer Conf., pp. 11-21, April 1968a.Google Scholar
- CONWAY, R. W., MAXWELL, W. L., and MILLER, L. W., Theory of Scheduling. Addison-Wesley, Reading, Massachusetts, 1967.Google Scholar
- ESTRIN, G. and KLEINROCK, L., "Measures, models and measurements for time-shared computer utilities," Proc. ACM National Meeting, pp. 85-96, Aug. 1967.Google Scholar
- McKINNEY, J. M., "A survey of analytical time-sharing models," Computing Surveys 1, 2, pp. 105-16, June 1969.Google Scholar
- DAHL, O.-J. and HOARE, C. A. R., "Hierarchal program structures," Unpublished draft, 1971.Google Scholar
- DENNIS, J. B. and VAN HORN, E. C., "Programming semantics for multiprogrammed computations," Comm. ACM 9, 3, 143-55, March 1966.Google ScholarDigital Library
- FRASER, A. G., "The integrity of a disc based file system," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- LAMPSON, B. W., "Dynamic protection structures," Proc. AFIPS Fall Joint Computer Conf., pp. 27-38, 1969.Google Scholar
- LAMPSON, B. W., "On reliable and extensible operating systems," Infotech State of the Art Proceedings, 1970.Google Scholar
- ROSS, D. T., "Introduction to software engineering with the AED-0 language," Massachusetts Institute of Technology, Cambridge, Massachusetts, Oct. 1969.Google Scholar
- VANDERBILT, D. H., "Controlled information sharing in a computer utility." MAC-TR-67, Massachusetts Institute of Technology, Cambridge, Massachusetts, Oct. 1969.Google Scholar
- BRON, C., "Allocation of virtual store in THE multiprogramming system," International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.-Sept. 1971.Google Scholar
- DIJKSTRA, E. W., "Cooperating sequential processes," Technological University, Eindhoven, The Netherlands, 1965. (Reprinted in Programming Languages, F. Genuys, ed., Academic Press, New York, New York, 1968).Google Scholar
- DIJKSTRA, E. W., "The structure of THE multiprogramming system," Comm. ACM 11, 5, pp. 341-46, May 1968.Google ScholarDigital Library
- FRASER, A. G., "The integrity of a disc based file system." International Seminar on Operating System Techniques, Belfast, Northern Ireland, Aug.Sept. 1971.Google Scholar
- LONERGAN, W. and KING, P., "Design of the B5000 system," Datamation 7, 5, pp. 28-32, May 1961.Google Scholar
- McKEAG, R. M., "Burroughs B5500 Master control program," The Queen's University of Belfast, Northern Ireland, 1971a.Google Scholar
- McKEAG, R. M., "THE Multiprogramming system," The Queen's University of Belfast, Northern Ireland, 1971b.Google Scholar
- ORGANICK, E. I., The Multics System: An Examination of its Structure. MIT Press, Cambridge, Massachusetts, 1972.Google ScholarDigital Library
- THORNTON, J. E., "Parallel operation in the Control Data 6600," Proc. AFIPS Fall Joint Computer Conf., pp. 33-40, 1964.Google Scholar
- WILSON, R., "CDC Scope 3.2," The Queen's University of Belfast, Northern Ireland, 1971a.Google Scholar
- WILSON, R., "The Titan supervisor," The Queen's University of Belfast, Northern Ireland, 1971b.Google Scholar
Cited By
- Jiang Z, Yang K, Fisher N, Guan N, Audsley N and Dong Z (2024). Hopscotch: A Hardware-Software Co-Design for Efficient Cache Resizing on Multi-Core SoCs, IEEE Transactions on Parallel and Distributed Systems, 35:1, (89-104), Online publication date: 1-Jan-2024.
- Muller S, Singer K, Keeney D, Neth A, Agrawal K, Lee I and Acar U (2023). Responsive Parallelism with Synchronization, Proceedings of the ACM on Programming Languages, 7:PLDI, (712-735), Online publication date: 6-Jun-2023.
- Liu Q and Zhang Y Learning to Caching under the Partial-Feedback Regime Proceedings of the 18th International Conference on Network and Service Management, (1-9)
- Haverkort B Performance Evaluation: Model-Driven or Problem-Driven? Quantitative Evaluation of Systems, (3-11)
- Ferles K, Van Geffen J, Dillig I and Smaragdakis Y (2020). Symbolic Reasoning for Automatic Signal Placement, ACM SIGOPS Operating Systems Review, 54:1, (64-76), Online publication date: 31-Aug-2020.
- Lamport L The computer science of concurrency Concurrency, (13-26)
- Kamburjan E, Din C, Hähnle R and Johnsen E Asynchronous Cooperative Contracts for Cooperative Scheduling Software Engineering and Formal Methods, (48-66)
- Herlihy M (2019). Blockchains from a distributed computing perspective, Communications of the ACM, 62:2, (78-85), Online publication date: 28-Jan-2019.
- Ferles K, Van Geffen J, Dillig I and Smaragdakis Y (2018). Symbolic reasoning for automatic signal placement, ACM SIGPLAN Notices, 53:4, (120-134), Online publication date: 2-Dec-2018.
- Santos R, Rodriguez N and Ierusalimschy R Revisiting monitors Proceedings of the XXII Brazilian Symposium on Programming Languages, (75-82)
- Ferles K, Van Geffen J, Dillig I and Smaragdakis Y Symbolic reasoning for automatic signal placement Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation, (120-134)
- Cimini M and Siek J Fractional Permissions for Race-Free Mutable References in a Dataflow Intermediate Language First Workshop on Programming Models and Languages for Distributed Computing, (1-4)
- Lamport L (2015). Turing lectureThe computer science of concurrency, Communications of the ACM, 58:6, (71-76), Online publication date: 21-May-2015.
- Charousset D, Schmidt T, Hiesgen R and Wählisch M Native actors Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (87-96)
- Ricci A and Santi A Concurrent object-oriented programming with agent-oriented abstractions Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized control, (127-138)
- Reddy U and Reynolds J Syntactic control of interference for separation logic Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (323-336)
- Reddy U and Reynolds J (2012). Syntactic control of interference for separation logic, ACM SIGPLAN Notices, 47:1, (323-336), Online publication date: 18-Jan-2012.
- Charousset D, Meiling S, Schmidt T and Wählisch M A middleware for transparent group communication of globally distributed actors Proceedings of the Workshop on Posters and Demos Track, (1-2)
- Fatima U, Bræk R and Castejón H Session initiation as a service Proceedings of the 15th international conference on Integrating System and Software Modeling, (122-137)
- Huang Y, Dillon L and Stirewalt R Contract-based synchronization of IP telecommunication services Proceedings of the 5th International Conference on Communication System Software and Middleware, (1-12)
- Dalessandro L, Dice D, Scott M, Shavit N and Spear M Transactional mutex locks Proceedings of the 16th international Euro-Par conference on Parallel processing: Part II, (2-13)
- Cao J, Wang M, Wu W, Wang X and Chan S A generic distributed monitor construct for programming process synchronization in distributed systems Proceedings of the 5th international conference on Parallel and Distributed Processing and Applications, (695-706)
- Jenks S, Kim K, Li Y, Liu S, Zheng L, Kim M, Youn H, Lee K and Seol D (2007). A middleware model supporting time-triggered message-triggered objects for standard Linux systems, Real-Time Systems, 36:1-2, (75-99), Online publication date: 1-Jul-2007.
- OHearn P (2007). Resources, concurrency, and local reasoning, Theoretical Computer Science, 375:1-3, (271-307), Online publication date: 20-Apr-2007.
- Brookes S (2007). A semantics for concurrent separation logic, Theoretical Computer Science, 375:1-3, (227-270), Online publication date: 20-Apr-2007.
- Pym D and Tofts C (2006). A Calculus and logic of resources and processes, Formal Aspects of Computing, 18:4, (495-517), Online publication date: 1-Dec-2006.
- Johnson T, Lee S, Min S and Eigenmann R Can transactions enhance parallel programs? Proceedings of the 19th international conference on Languages and compilers for parallel computing, (2-16)
- Ábrahám E, Grüner A and Steffen M Abstract interface behavior of object-oriented languages with monitors Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems, (218-232)
- Buhr P and Harji A (2005). Implicit-signal monitors, ACM Transactions on Programming Languages and Systems, 27:6, (1270-1343), Online publication date: 1-Nov-2005.
- Bornat R, Calcagno C, O'Hearn P and Parkinson M (2005). Permission accounting in separation logic, ACM SIGPLAN Notices, 40:1, (259-270), Online publication date: 12-Jan-2005.
- Bornat R, Calcagno C, O'Hearn P and Parkinson M Permission accounting in separation logic Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (259-270)
- Shanneb A and Potter J Flexible exclusion control for composite objects Proceedings of the Twenty-eighth Australasian conference on Computer Science - Volume 38, (277-286)
- Denning P, Tichy W, Lazowska E and Liedtke J Operating systems Encyclopedia of Computer Science, (1290-1324)
- Wirth N Pascal and its successors Software pioneers, (108-119)
- Cao J, Cheung N and Chan A Run-Time Fault Detection in Monitor Based Concurrent Programming Proceedings of the 2001 International Conference on Dependable Systems and Networks (formerly: FTCS), (357-368)
- Bovet D and Cesati M (2001). A real bottom-up operating systems course, ACM SIGOPS Operating Systems Review, 35:1, (48-60), Online publication date: 1-Jan-2001.
- Buhr P, Harji A, Lim P and Chen J (2000). Object-oriented real-time concurrency, ACM SIGPLAN Notices, 35:10, (29-46), Online publication date: 1-Oct-2000.
- Noble J, Holmes D and Potter J (2000). Exclusion for composite objects, ACM SIGPLAN Notices, 35:10, (13-28), Online publication date: 1-Oct-2000.
- Buhr P, Harji A, Lim P and Chen J Object-oriented real-time concurrency Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (29-46)
- Noble J, Holmes D and Potter J Exclusion for composite objects Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (13-28)
- Creak G and Sheehan R (2000). A top-down operating systems course, ACM SIGOPS Operating Systems Review, 34:3, (69-80), Online publication date: 1-Jul-2000.
- Wand M (1999). Continuation-Based Multiprocessing Revisited, Higher-Order and Symbolic Computation, 12:3, (283-283), Online publication date: 1-Oct-1999.
- Wellings A and Burns A (1997). Implementing Atomic Actions in Ada 95, IEEE Transactions on Software Engineering, 23:2, (107-123), Online publication date: 1-Feb-1997.
- Gupta R Operation Serializability for Embedded Systems Proceedings of the 1996 European conference on Design and Test
- Hansen P Monitors and Concurrent Pascal History of programming languages---II, (121-172)
- Olsson R and McNamee C (1995). Tools for teaching CCRs, monitors, and CSP concurrent programming concepts, ACM SIGCSE Bulletin, 27:2, (31-40), Online publication date: 1-Jun-1995.
- Ferenczi S (1995). Guarded methods vs. inheritance anomaly, ACM SIGPLAN Notices, 30:2, (49-58), Online publication date: 1-Feb-1995.
- Hansen P Monitors and concurrent Pascal The second ACM SIGPLAN conference on History of programming languages, (1-35)
- Hansen P (1993). Monitors and concurrent Pascal, ACM SIGPLAN Notices, 28:3, (1-35), Online publication date: 1-Mar-1993.
- Hilzer R (1992). Synchronization of the producer/consumer problem using semaphores, monitors, and the Ada rendezvous, ACM SIGOPS Operating Systems Review, 26:3, (31-39), Online publication date: 1-Jul-1992.
- Saeed F, George K and Samadzadeh M (1992). Implementation of classical mutual exclusion algorithms in Ada, ACM SIGAda Ada Letters, XII:1, (73-84), Online publication date: 1-Jan-1992.
- Nourani C (1992). Parallel module specification on SLPX, ACM SIGPLAN Notices, 27:1, (114-115), Online publication date: 1-Jan-1992.
- Lamport L (1991). The mutual exclusion problem has been solved, Communications of the ACM, 34:1, (110-ff.), Online publication date: 3-Jan-1991.
- Fleisch B Fault-tolerance support in distributed systems Proceedings of the 4th workshop on ACM SIGOPS European workshop, (1-6)
- Yeung W and Topping G (1990). Implementing JSD designs in Ada: a tutorial, ACM SIGSOFT Software Engineering Notes, 15:3, (25-32), Online publication date: 1-Jul-1990.
- Rudolph B (1990). Self-assessment procedure XXI: a self-assessment procedure on concurrency, Communications of the ACM, 33:5, (563-576), Online publication date: 1-May-1990.
- Morales-Fernandez R and Moreno-Navarro J (1989). CC-modula: a modula-2 tool to teach concurrent programming, ACM SIGCSE Bulletin, 21:3, (19-25), Online publication date: 1-Sep-1989.
- Yun-Lin S (1989). On teaching operating systems, ACM SIGCSE Bulletin, 21:3, (11-14), Online publication date: 1-Sep-1989.
- Janicki R and Muldner T Complete sequential specification allows for concurrent execution Proceedings of the 17th conference on ACM Annual Computer Science Conference, (221-231)
- Silver J (1989). Concurrent programming in an upper level operating systems course, ACM SIGCSE Bulletin, 21:1, (217-221), Online publication date: 1-Feb-1989.
- Silver J Concurrent programming in an upper level operating systems course Proceedings of the twentieth SIGCSE technical symposium on Computer science education, (217-221)
- Slocum L Device driver development in Ada Proceedings of the fifth Washington Ada symposium on Ada, (25-33)
- Faulk S and Parnas D (1988). On synchronization in hard-real-time systems, Communications of the ACM, 31:3, (274-287), Online publication date: 1-Mar-1988.
- Kotulski L (1987). About the semantic nested monitor calls, ACM SIGPLAN Notices, 22:4, (80-82), Online publication date: 1-Apr-1987.
- Glass H On the use of personal computers in teaching the principles of concurrent processing (abstract only) Proceedings of the 15th annual conference on Computer Science
- Shub C The decline and fall of Operating Systems I Proceedings of the eighteenth SIGCSE technical symposium on Computer science education, (217-220)
- Shub C (1987). The decline and fall of Operating Systems I, ACM SIGCSE Bulletin, 19:1, (217-220), Online publication date: 1-Feb-1987.
- Stefik M, Foster G, Bobrow D, Kahn K, Lanning S and Suchman L (1987). Beyond the chalkboard: computer support for collaboration and problem solving in meetings, Communications of the ACM, 30:1, (32-47), Online publication date: 1-Jan-1987.
- McKay K, Buzacott J, Moore J and Strang C Software engineerng applied to discrete event simulations Proceedings of the 18th conference on Winter simulation, (485-493)
- Ranai K (1986). Design requirements of a single-user operating system, ACM SIGSMALL/PC Notes, 12:2, (8-14), Online publication date: 1-May-1986.
- Shay W A project for operating systems simulation Proceedings of the seventeenth SIGCSE technical symposium on Computer science education, (289-295)
- Shay W (1986). A project for operating systems simulation, ACM SIGCSE Bulletin, 18:1, (289-295), Online publication date: 1-Feb-1986.
- Tenny T (1985). Procedures and comments vs. the banker's algorithm, ACM SIGCSE Bulletin, 17:3, (44-53), Online publication date: 1-Sep-1985.
- Lees B (1985). Introductory concurrent programming with Modula-2, ACM SIGCSE Bulletin, 17:3, (34-41), Online publication date: 1-Sep-1985.
- Acree E and Smith M Simulation of a flexible manufacturing system-applications of computer operating system techniques Proceedings of the 18th annual symposium on Simulation, (205-216)
- Moulton R Measurement of processor occupancy in a cyclic non-preemptive real-time control system Proceedings of the 1985 ACM thirteenth annual conference on Computer Science, (151-162)
- Bonet R and Kung A (1984). Structuring into subsystems, ACM SIGSOFT Software Engineering Notes, 9:5, (23-27), Online publication date: 1-Oct-1984.
- Winkler J (1984). More on block structure, ACM SIGAda Ada Letters, III:6, (48-56), Online publication date: 1-May-1984.
- Trueblood R, Hartson H and Martin J (1983). MULTISAFE—a modular multiprocessing approach to secure database management, ACM Transactions on Database Systems, 8:3, (382-409), Online publication date: 1-Sep-1983.
- Lansky A and Owicki S GEM Proceedings of the second annual ACM symposium on Principles of distributed computing, (198-212)
- Hansen P (1983). Using personal computers in operating system courses, ACM SIGOPS Operating Systems Review, 17:3, (41-44), Online publication date: 1-Jul-1983.
- Silver J and Leeper R Schemata for teaching structured assembly language programming Proceedings of the fourteenth SIGCSE technical symposium on Computer science education, (128-132)
- Hayashi T An operating systems programming laboratory course Proceedings of the fourteenth SIGCSE technical symposium on Computer science education, (31-35)
- Silver J and Leeper R (1983). Schemata for teaching structured assembly language programming, ACM SIGCSE Bulletin, 15:1, (128-132), Online publication date: 1-Feb-1983.
- Hayashi T (1983). An operating systems programming laboratory course, ACM SIGCSE Bulletin, 15:1, (31-35), Online publication date: 1-Feb-1983.
- Wear L, Vayda T, MacKenzie K and Yakulis R An operating system model Proceedings of the 14th conference on Winter Simulation - Volume 1, (323-327)
- Wakshull M (1982). The use of APL in a concurrent data flow environment, ACM SIGAPL APL Quote Quad, 13:1, (367-372), Online publication date: 1-Sep-1982.
- Andrews G and Levin G On-the-fly deadlock prevention Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing, (165-172)
- Wakshull M The use of APL in a concurrent data flow environment Proceedings of the international conference on APL, (367-372)
- Kant K and Silberschatz A (1982). On the generalized critical region construct, ACM SIGOPS Operating Systems Review, 16:3, (4-16), Online publication date: 1-Jul-1982.
- Arden B and Ginosar R (1982). MP/C, IEEE Transactions on Computers, 31:5, (455-473), Online publication date: 1-May-1982.
- Miller L A heterogeneous multiprocessor design and the distributed scheduling of its task group workload Proceedings of the 9th annual symposium on Computer Architecture, (283-290)
- Reddy U Programming with sequences Proceedings of the 20th annual Southeast regional conference, (189-198)
- Miller L (1982). A heterogeneous multiprocessor design and the distributed scheduling of its task group workload, ACM SIGARCH Computer Architecture News, 10:3, (283-290), Online publication date: 1-Apr-1982.
- Adams J and Black A (1982). On proof rules for monitors, ACM SIGOPS Operating Systems Review, 16:2, (18-27), Online publication date: 1-Apr-1982.
- Kruijer H (1982). Processor management in a concurrent Pascal kernel, ACM SIGOPS Operating Systems Review, 16:2, (7-17), Online publication date: 1-Apr-1982.
- Wiley S An operating systems course using stand alone computers Proceedings of the thirteenth SIGCSE technical symposium on Computer science education, (88-91)
- Wiley S (1982). An operating systems course using stand alone computers, ACM SIGCSE Bulletin, 14:1, (88-91), Online publication date: 1-Feb-1982.
- Hailpern B and Owicki S Modular verification of concurrent programs Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (322-336)
- Wall D Messages as active agents Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (34-39)
- Andrews G Distributed programming languages Proceedings of the ACM '82 conference, (113-117)
- Kuenning G Minimal multitasking operating systems for real-time controllers Proceedings of the 1981 ACM SIGSMALL symposium on Small systems and SIGMOD workshop on Small database systems, (20-27)
- Bacon J (1981). An approach to distributed software systems, ACM SIGOPS Operating Systems Review, 15:4, (62-74), Online publication date: 1-Oct-1981.
- Denning P, Dennis T and Brumfield J (1981). Low contention semaphores and ready lists, Communications of the ACM, 24:10, (687-699), Online publication date: 1-Oct-1981.
- Kuenning G (1981). Minimal multitasking operating systems for real-time controllers, ACM SIGSMALL Newsletter, 7:2, (20-27), Online publication date: 1-Oct-1981.
- Kneis W (1981). Draft standard industrial real-time FORTRAN, ACM SIGPLAN Notices, 16:7, (45-60), Online publication date: 1-Jul-1981.
- Georgiadis P, Papazoglou M and Maritsas D Towards a parallel SIMULA machine Proceedings of the 8th annual symposium on Computer Architecture, (263-278)
- Arden B and Ginosar R MP/C Proceedings of the 8th annual symposium on Computer Architecture, (3-19)
- Basili V and Weiss D Evaluation of a software requirements document by analysis of change data Proceedings of the 5th international conference on Software engineering, (314-323)
- Cunha P and Maibaum T Resource = abstract data type + synchronization - A methodology for message oriented programming - Proceedings of the 5th international conference on Software engineering, (263-272)
- Sandewall E, Strömberg C and Sörensen H Software architecture based on communicating residential environments Proceedings of the 5th international conference on Software engineering, (144-152)
- Penedo M, Berry D and Estrin G An algorithm to support code-skeleton generation for concurrent systems Proceedings of the 5th international conference on Software engineering, (125-135)
- Andrews G (1981). Parallel programs, Communications of the ACM, 24:3, (140-145), Online publication date: 1-Mar-1981.
- Lehmann D and Rabin M On the advantages of free choice Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, (133-138)
- Smith R (1980). The Contract Net Protocol, IEEE Transactions on Computers, 29:12, (1104-1113), Online publication date: 1-Dec-1980.
- Wettstein H and Merbeth G (1980). The concept of asynchronization, ACM SIGOPS Operating Systems Review, 14:4, (50-70), Online publication date: 1-Oct-1980.
- Wupit A Writing device drivers Proceedings of the 3rd ACM SIGSMALL symposium and the first SIGPC symposium on Small systems, (78-83)
- Hall D, Scherrer D and Sventek J (1980). A virtual operating system, Communications of the ACM, 23:9, (495-502), Online publication date: 1-Sep-1980.
- Wand M Continuation-based multiprocessing Proceedings of the 1980 ACM conference on LISP and functional programming, (19-28)
- Coffman E, Gelenbe E and Wood R (1980). Optimal replication of parallel-read, sequential-write systems, ACM SIGMETRICS Performance Evaluation Review, 9:2, (209-216), Online publication date: 1-Aug-1980.
- Zhongxiu S, Li X, Xianglin F, Wenguo Y and Yaoming T (1980). An introduction to DJS200/XT1, ACM SIGOPS Operating Systems Review, 14:3, (70-74), Online publication date: 1-Jul-1980.
- Clarke E (1980). Synthesis of Resource Invariants for Concurrent Programs, ACM Transactions on Programming Languages and Systems, 2:3, (338-358), Online publication date: 1-Jul-1980.
- Coffman E, Gelenbe E and Wood R Optimal replication of parallel-read, sequential-write systems Proceedings of the 1980 international symposium on Computer performance modelling, measurement and evaluation, (209-216)
- Turton T (1980). The management of operating system state data, ACM SIGOPS Operating Systems Review, 14:2, (21-24), Online publication date: 1-Apr-1980.
- Silberschatz A and Kieburtz R (1980). The external consistency of abstract data types, ACM SIGPLAN Notices, 15:2, (64-73), Online publication date: 1-Feb-1980.
- Lampson B and Redell D (1980). Experience with processes and monitors in Mesa, Communications of the ACM, 23:2, (105-117), Online publication date: 1-Feb-1980.
- Lampson B and Sproull R An open operating system for a single-user machine Proceedings of the seventh ACM symposium on Operating systems principles, (98-105)
- Lampson B and Redell D Experience with processes and monitors in Mesa (Summary) Proceedings of the seventh ACM symposium on Operating systems principles, (43-44)
- Bloom T Evaluating synchronization mechanisms Proceedings of the seventh ACM symposium on Operating systems principles, (24-32)
- Ryan K Software engineering and simulation Proceedings of the 11th conference on Winter simulation - Volume 2, (477-482)
- Ichbiah J, Krieg-Brueckner B, Wichmann B, Barnes J, Roubine O and Heliard J (1979). Rationale for the design of the Ada programming language, ACM SIGPLAN Notices, 14:6b, (1-261), Online publication date: 30-Jun-1979.
- Keedy J (1979). On structuring operating systems with monitors, ACM SIGOPS Operating Systems Review, 13:1, (5-9), Online publication date: 1-Jan-1979.
- Good D, Cohen R and Keeton-Williams J Principles of proving concurrent programs in Gypsy Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (42-52)
- Hansen P Multiprocessor Architectures For Concurrent Programs Proceedings of the 1978 annual conference, (317-323)
- Abramson H, Fox M, Gorlick M, Manis V and Peck J The Pica-B Computer An Abstract Target Machine For A Transportable Single-User Operating Environment Proceedings of the 1978 annual conference, (301-309)
- Good D, Cohen R and Hunter L A Report On The Development Of Gypsy Proceedings of the 1978 annual conference, (116-122)
- Hansen P (1978). Multiprocessor architectures for concurrent programs, ACM SIGARCH Computer Architecture News, 7:4, (4-23), Online publication date: 1-Dec-1978.
- Dasgupta S (1978). Towards a microprogramming language schema, ACM SIGMICRO Newsletter, 9:4, (144-153), Online publication date: 1-Dec-1978.
- Van Campenhout J and Notredame P (1978). A Stochastic Model for Closed-Loop Preemptive Microprocessor I/O Organizations, IEEE Transactions on Computers, 27:12, (1126-1136), Online publication date: 1-Dec-1978.
- Dasgupta S Towards a microprogramming language schema Proceedings of the 11th annual workshop on Microprogramming, (144-153)
- Hansen P (1978). Distributed processes, Communications of the ACM, 21:11, (934-941), Online publication date: 1-Nov-1978.
- Kaufman A (1978). System design and implementation of BGRAF2, ACM SIGGRAPH Computer Graphics, 12:3, (87-92), Online publication date: 23-Aug-1978.
- Kaufman A System design and implementation of BGRAF2 Proceedings of the 5th annual conference on Computer graphics and interactive techniques, (87-92)
- Gold E (1978). Deadlock Prediction, SIAM Journal on Computing, 7:3, (320-336), Online publication date: 1-Aug-1978.
- Campos I and Estrin G Concurrent software system design supported by SARA at the age of one Proceedings of the 3rd international conference on Software engineering, (230-242)
- Schneider F and Bernstein A (1978). Scheduling in Concurrent Pascal, ACM SIGOPS Operating Systems Review, 12:2, (15-20), Online publication date: 1-Apr-1978.
- Weiner L The roots of structured programming Papers of the SIGCSE/CSA technical symposium on Computer science education, (243-254)
- Weiner L (1978). The roots of structured programming, ACM SIGCSE Bulletin, 10:1, (243-254), Online publication date: 1-Feb-1978.
- Mizell D Verification and design aspects of "true concurrency" Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (171-175)
- Arvind , Gostelow K and Plouffe W Indeterminacy, monitors, and dataflow Proceedings of the sixth ACM symposium on Operating systems principles, (159-169)
- Casey L and Shelness N A domain structure for distributed computer systems Proceedings of the sixth ACM symposium on Operating systems principles, (101-108)
- Baskett F, Howard J and Montague J Task communication in DEMOS Proceedings of the sixth ACM symposium on Operating systems principles, (23-31)
- Blasgen M, Casey R and Eswaran K (1977). An encoding method for multifield sorting and indexing, Communications of the ACM, 20:11, (874-878), Online publication date: 1-Nov-1977.
- Arvind , Gostelow K and Plouffe W (1977). Indeterminacy, monitors, and dataflow, ACM SIGOPS Operating Systems Review, 11:5, (159-169), Online publication date: 1-Nov-1977.
- Casey L and Shelness N (1977). A domain structure for distributed computer systems, ACM SIGOPS Operating Systems Review, 11:5, (101-108), Online publication date: 1-Nov-1977.
- Baskett F, Howard J and Montague J (1977). Task communication in DEMOS, ACM SIGOPS Operating Systems Review, 11:5, (23-31), Online publication date: 1-Nov-1977.
- Haddon B (1977). Nested monitor calls, ACM SIGOPS Operating Systems Review, 11:4, (18-23), Online publication date: 1-Oct-1977.
- PROBST W and BOCHMANN G Operating system design with computer network communication protocols Proceedings of the fifth symposium on Data communications, (4.19-4.25)
- Conrad V and Wallach Y (1977). Iterative Solution of Linear Equations on a Parallel Processor System, IEEE Transactions on Computers, 26:9, (838-847), Online publication date: 1-Sep-1977.
- Wirth N (1977). Toward a discipline of real-time programming, Communications of the ACM, 20:8, (577-583), Online publication date: 1-Aug-1977.
- Sweet A and Oldehoeft A Automated control of concurrency in multi-user hierarchical information systems Proceedings of the June 13-16, 1977, national computer conference, (907-916)
- Swan R, Fuller S and Siewiorek D Cm* Proceedings of the June 13-16, 1977, national computer conference, (637-644)
- Steel R (1977). Another general purpose computer architecture, ACM SIGARCH Computer Architecture News, 5:8, (5-11), Online publication date: 1-Apr-1977.
- Lomet D (1977). Process structuring, synchronization, and recovery using atomic actions, ACM SIGOPS Operating Systems Review, 11:2, (128-137), Online publication date: 1-Apr-1977.
- Ambler A, Good D, Browne J, Burger W, Cohen R, Hoch C and Wells R (1977). Gypsy, ACM SIGOPS Operating Systems Review, 11:2, (1-10), Online publication date: 1-Apr-1977.
- Agoston M (1977). An operating system for the INTEL MDS system, ACM SIGMINI Newsletter, 3:2, (7-9), Online publication date: 1-Apr-1977.
- Sullivan H, Bashkow T and Klappholz D (1977). A Large Scale, Homogenous, Fully Distributed Parallel Machine, II, ACM SIGARCH Computer Architecture News, 5:7, (118-124), Online publication date: 17-Mar-1977.
- Sullivan H and Bashkow T (1977). A large scale, homogeneous, fully distributed parallel machine, I, ACM SIGARCH Computer Architecture News, 5:7, (105-117), Online publication date: 17-Mar-1977.
- Dasgupta S (1977). The design of some language constructs for horizontal microprogramming, ACM SIGARCH Computer Architecture News, 5:7, (10-16), Online publication date: 17-Mar-1977.
- Sullivan H, Bashkow T and Klappholz D A Large Scale, Homogenous, Fully Distributed Parallel Machine, II Proceedings of the 4th annual symposium on Computer architecture, (118-124)
- Sullivan H and Bashkow T A large scale, homogeneous, fully distributed parallel machine, I Proceedings of the 4th annual symposium on Computer architecture, (105-117)
- Dasgupta S The design of some language constructs for horizontal microprogramming Proceedings of the 4th annual symposium on Computer architecture, (10-16)
- Lomet D Process structuring, synchronization, and recovery using atomic actions Proceedings of an ACM conference on Language design for reliable software, (128-137)
- Ambler A, Good D, Browne J, Burger W, Cohen R, Hoch C and Wells R Gypsy Proceedings of an ACM conference on Language design for reliable software, (1-10)
- Lomet D (1977). Process structuring, synchronization, and recovery using atomic actions, ACM SIGSOFT Software Engineering Notes, 2:2, (128-137), Online publication date: 1-Mar-1977.
- Ambler A, Good D, Browne J, Burger W, Cohen R, Hoch C and Wells R (1977). Gypsy, ACM SIGSOFT Software Engineering Notes, 2:2, (1-10), Online publication date: 1-Mar-1977.
- Lomet D (1977). Process structuring, synchronization, and recovery using atomic actions, ACM SIGPLAN Notices, 12:3, (128-137), Online publication date: 1-Mar-1977.
- Ambler A, Good D, Browne J, Burger W, Cohen R, Hoch C and Wells R (1977). Gypsy, ACM SIGPLAN Notices, 12:3, (1-10), Online publication date: 1-Mar-1977.
- Grit D and Georg D A top-down, laboratory based operating system course Proceedings of the seventh SIGCSE technical symposium on Computer science education, (73-76)
- Grit D and Georg D (1977). A top-down, laboratory based operating system course, ACM SIGCSE Bulletin, 9:1, (73-76), Online publication date: 1-Feb-1977.
- Dickover M, McGowan C and Ross D Software design using Proceedings of the 1977 annual conference, (125-133)
- Atkinson R and Hewitt C Synchronization in actor systems Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (267-280)
- Newton G and Starkey J (1977). SESPOOL, a language for systems programming, Computer Languages, 2:3, (75-91), Online publication date: 1-Jan-1977.
- Conradi R (1976). "Further critical comments on PASCAL, particularly as a systems programming language", ACM SIGPLAN Notices, 11:11, (8-25), Online publication date: 1-Nov-1976.
- Yau S, Cheung R and Cochrane D An approach to error-resistant software design Proceedings of the 2nd international conference on Software engineering, (429-436)
- Saxena A and Bredt T Verification of a monitor specification Proceedings of the 2nd international conference on Software engineering, (53-59)
- Howard J Signaling in monitors Proceedings of the 2nd international conference on Software engineering, (47-52)
- Karp R and Luckham D Verification of fairness in an implementation of monitors Proceedings of the 2nd international conference on Software engineering, (40-46)
- Severance D and Lohman G (1976). Differential files, ACM Transactions on Database Systems, 1:3, (256-267), Online publication date: 1-Sep-1976.
- Donovan J (1976). Tools and philosophy for software education, Communications of the ACM, 19:8, (430-436), Online publication date: 1-Aug-1976.
- Retz D and Schafer B Structure of the ELF operating system Proceedings of the June 7-10, 1976, national computer conference and exposition, (1007-1016)
- Matelan M (1976). A model of real time control system production, ACM SIGDA Newsletter, 6:2, (14-61), Online publication date: 1-Jun-1976.
- Howard J (1976). Proving monitors, Communications of the ACM, 19:5, (273-279), Online publication date: 1-May-1976.
- Denning P and Kahn K An L=S criterion for optimal multiprogramming Proceedings of the 1976 ACM SIGMETRICS conference on Computer performance modeling measurement and evaluation, (219-229)
- Lawson H Function distribution in computer system architectures Proceedings of the 3rd annual symposium on Computer architecture, (93-97)
- Widdoes L The minerva multi-microprocessor Proceedings of the 3rd annual symposium on Computer architecture, (34-39)
- Lawson H (1976). Function distribution in computer system architectures, ACM SIGARCH Computer Architecture News, 4:4, (93-97), Online publication date: 17-Jan-1976.
- Widdoes L (1976). The minerva multi-microprocessor, ACM SIGARCH Computer Architecture News, 4:4, (34-39), Online publication date: 17-Jan-1976.
- Wulf W, Levin R and Pierson C Overview of the Hydra Operating System development Proceedings of the fifth ACM symposium on Operating systems principles, (122-131)
- Russell D and Bredt T Error resynchronization in producer-consumer systems Proceedings of the fifth ACM symposium on Operating systems principles, (106-113)
- Wulf W, Levin R and Pierson C (1975). Overview of the Hydra Operating System development, ACM SIGOPS Operating Systems Review, 9:5, (122-131), Online publication date: 1-Nov-1975.
- Russell D and Bredt T (1975). Error resynchronization in producer-consumer systems, ACM SIGOPS Operating Systems Review, 9:5, (106-113), Online publication date: 1-Nov-1975.
- Wasserman A (1975). Issues in programming language design, ACM SIGPLAN Notices, 10:7, (10-12), Online publication date: 1-Jul-1975.
- Belpaire G (1975). Synchronization, ACM SIGOPS Operating Systems Review, 9:3, (3-10), Online publication date: 1-Jul-1975.
- Sintzoff M and Lamsweerde A (1975). Constructing correct and efficient concurrent programs, ACM SIGPLAN Notices, 10:6, (319-326), Online publication date: 1-Jun-1975.
- Saxena A and Bredt T (1975). A structured specification of a hierarchical operating system, ACM SIGPLAN Notices, 10:6, (310-318), Online publication date: 1-Jun-1975.
- Hansen P (1975). The purpose of concurrent Pascal, ACM SIGPLAN Notices, 10:6, (305-309), Online publication date: 1-Jun-1975.
- Walter K, Schaen S, Ogden W, Rounds W, Shumway D, Schaeffer D, Biba K, Bradshaw F, Ames S and Gilligan J (1975). Structured specification of a Security Kernel, ACM SIGPLAN Notices, 10:6, (285-293), Online publication date: 1-Jun-1975.
- Lynch W, Langner J and Schwartz M (1975). Reliability experience with Chi/OS, ACM SIGPLAN Notices, 10:6, (252-259), Online publication date: 1-Jun-1975.
- Boehm B, McClean R and Urfrig D (1975). Some experience with automated aids to the design of large-scale reliable software, ACM SIGPLAN Notices, 10:6, (105-113), Online publication date: 1-Jun-1975.
- Malhotra R Interaction monitors in a distributed system Proceedings of the May 19-22, 1975, national computer conference and exposition, (709-714)
- Wasserman A Issues in programming language design Proceedings of the May 19-22, 1975, national computer conference and exposition, (297-299)
- Stonebraker M Implementation of integrity constraints and views by query modification Proceedings of the 1975 ACM SIGMOD international conference on Management of data, (65-78)
- Sintzoff M and Lamsweerde A Constructing correct and efficient concurrent programs Proceedings of the international conference on Reliable software, (319-326)
- Saxena A and Bredt T A structured specification of a hierarchical operating system Proceedings of the international conference on Reliable software, (310-318)
- Hansen P The purpose of concurrent Pascal Proceedings of the international conference on Reliable software, (305-309)
- Walter K, Schaen S, Ogden W, Rounds W, Shumway D, Schaeffer D, Biba K, Bradshaw F, Ames S and Gilligan J Structured specification of a Security Kernel Proceedings of the international conference on Reliable software, (285-293)
- Lynch W, Langner J and Schwartz M Reliability experience with Chi/OS Proceedings of the international conference on Reliable software, (252-259)
- Boehm B, McClean R and Urfrig D Some experience with automated aids to the design of large-scale reliable software Proceedings of the international conference on Reliable software, (105-113)
- Goldstein B and Scrutchin T A machine-oriented resource management architecture Proceedings of the 2nd annual symposium on Computer architecture, (214-219)
- Rajlich V A CAD system for unified hardware-software design Proceedings of the 12th Design Automation Conference, (224-230)
- Belpaire G Synchronization Proceedings of the 1975 ACM SIGCOMM/SIGOPS workshop on Interprocess communications, (3-10)
- Yohe J Comments on the topic “programming, and its implication on programming languages” Proceedings of the 1975 annual conference, (219-220)
- Fletcher J No! high level languages should not be used to write systems software Proceedings of the 1975 annual conference, (209-211)
- Goldstein B and Scrutchin T (1974). A machine-oriented resource management architecture, ACM SIGARCH Computer Architecture News, 3:4, (214-219), Online publication date: 1-Dec-1974.
- Ferrari D (1974). Improving locality by critical working sets, Communications of the ACM, 17:11, (614-620), Online publication date: 1-Nov-1974.
- Knott G (1974). A proposal for certain process management and intercommunication primitives, ACM SIGOPS Operating Systems Review, 8:4, (7-44), Online publication date: 1-Oct-1974.
- Hoare C (1974). Monitors, Communications of the ACM, 17:10, (549-557), Online publication date: 1-Oct-1974.
Index Terms
- Operating system principles
Recommendations
The Linux Operating System
The enormous consumer market for IBM PCs and compatibles has made them affordable. Now, with a free operating system called Linux, these inexpensive machines can be converted into powerful workstations for teaching, research, and software development. ...