Sie sind auf Seite 1von 8

THE ORIGIN OF

CONCURRENT PROGRAMMING

From Semaphores to Remote Procedure CaUs


Springer Science+Business Media, LLC
THE ORIGIN OF

CONCURRENT PROGRAMMING

From Semaphores to Remote Procedure Calls

Edited by PER BRINCH HANSEN

Springer
Per Brinch Hansen
Center for Science and Technology
Syracuse University
Syracuse, NY 13244
USA
pbh@top.cis.syr.edu

Library of Congress Cataloging-in-Publication Data


The origin of concurrent programming: from semaphores to remote procedure calls/
editor, Per Brinch Hansen.
p. cm.
Includes bibliographie al references.
1. Parallel programming (Computer science) 1. Brinch Hansen, Per, 1938-
QA 76.642.075 2002
005.2'.75-dc21
2002016002
Printed on acid-free paper

Ada is a trademark of the United States Government. IBM is a trademark of IBM. Java is a
trademark of Sun Microsystems, Inc. occam and Transputer are trademarks of Inmos, Ltd. PDP-
11 is a trademark of Digital Equipment Corporation. Unix is a trademark of X/Open Company,
Ltd.
ISBN 978-1-4419-2986-0 ISBN 978-1-4757-3472-0 (eBook)
DOI 10.1007/978-1-4757-3472-0
2002 Springer Science+Business Media New York
Originally published by Springer-Verlag New York, Inc. in 2002.
Softcover reprint ofthe hardcover 1st edition 2002
All rights reserved. This work may not be translated or copied in whole or in part without the
written permission of the publisher Springer Science+Business Media, LLC,
except for brief excerpts in connection with reviews or scholarly analysis. Use
in connection with any form of information storage and retrieval, electronic adaption, computer
software, or by similar or dissimilar methodology now known or hereafter developed is forbidden.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.

9 8 7 6 543 2 1 SPIN 10860478

www.springer-ny.com
FOR JONATHAN GREENFIELD
PREFACE

If you want to discover new ideas in computing, textbooks won't help you.
You need to find out how the masters of the field did it. You need to read
their original papers!
That's why I put twenty-four papers together in a previous volume called
Classic Operating Systems: Fmm Batch Pmcessing to Distributed Systems
(Springer-Verlag, 2001).
But there is another side to this story. You cannot build (or understand)
a modern operating system unless you know the principles of concurrent
programming. The classic papers in the present book cover the major break-
throughs in concurrent programming fmm the mid 1960s to the la te 1970s.
These pioneering contributions have remained the foundation of concurrent
programming in operating systems and parallel computing.
All the papers were written by the computer scientists who invented these
ideas. Apart from a brief summary, I let the papers speak for themselves.
This book is for programmers, researchers, and students of electrical engi-
neering and computer science. I assume that you are familiar with operating
system principles.
I thank the copyright owners for permission to reprint these papers. A
footnote on the title page of each paper gives fuH credit to the publication in
wh ich the work first appeared, including the name of the copyright holder.

PER BRINCH HANSEN


Syracuse University

vii
CONTENTS

OVERVIEW
The Invention of Concurrent Programming 3
PER BRINCH HANSEN (2001)

PART I CONCEPTUAL INNOVATION


1 Cooperating Sequential Processes 65
EDSCER W. DIJKSTRA (1965)

2 The Structure of the THE Multiprogramming System 139


EDSCER W. DIJKSTRA (1968)

3 RC 4000 Software: Multiprogramming System 153


PER BRINCH HANSEN (1969)

4 Hierarchical Ordering of Sequential Processes 198


EDSCER W. DIJKSTRA (1971)

PART II PROGRAMMING LANGUAGE CONCEPTS


5 Towards a Theory of Parallel Programming 231
C. A. R. HOARE (1971)

6 An Outline of a Course on Operating System Principles 245


PER BRINCH HANSEN (1971)

7 Structured Multiprogramming 255


PER BRINCH HANSEN (1972)

8 Shared Classes 265


PER BRINCH HANSEN (1973)

9 Monitors: An Operating System Structuring Concept 272


C. A. R. HOARE (1974)

PART III CONCURRENT PROGRAMMING LANGUAGES


10 The Programming Language Concurrent Pascal 297
PER BRINCH HANSEN (1975)

IX
x CONTENTS

PART IV MODEL OPERATING SYSTEMS


11 The Solo Operating System: A Concurrent Pascal
Program 321
PER BRINCH HANSEN (1976)

12 The Solo Operating System: Processes, Monitors


and Classes 334
PER BRINCH HANSEN (1976)

13 Design Principles 382


PER BRINCH HANSEN (1977)

PART V DISTRIBUTED COMPUTING


14 A Synthesis Emerging? 397
EDSGER W. DIJKSTRA (1975)

15 Communicating Sequential Processes 413


C. A. R. HOARE (1978)

16 Distributed Processes: A Concurrent Programming


Concept 444
PER BRINCH HANSEN (1978)

17 Joyce-A Programming Language for Distributed


Systems 464
PER BRINCH HANSEN (1987)

PART VI IMPLEMENTATION ISSUES

18 SuperPascal: A Publication Language


for Parallel Scientific Computing 495
PER BRINCH HANSEN (1994)

19 Efficient Parallel Recursion 525


PER BRINCH HANSEN (1995)

Das könnte Ihnen auch gefallen