| Contents | 7 |
|---|
| List of Figures | 15 |
|---|
| List of Tables | 17 |
|---|
| Preface | 19 |
|---|
| Acknowledgments | 25 |
|---|
| PART I EXTENSIONS FOR CONCURRENCY | 42 |
|---|
| Chapter 1 INTRODUCTION | 27 |
| 1.1 Key JR Components | 29 |
| 1.2 Two Simple Examples | 30 |
| 1.3 Matrix Multiplication | 32 |
| 1.4 Concurrent File Search | 34 |
| 1.5 Critical Section Simulation | 36 |
| 1.6 Translating and Executing JR Programs | 38 |
| 1.7 Vocabulary and Notation | 39 |
| Exercises | 39 |
| Chapter 2 OVERVIEW OF EXTENSIONS | 43 |
| 2.1 Process Interactions via Operations | 43 |
| 2.2 Distributing JR Programs | 45 |
| Chapter 3 OP-METHODS, OPERATIONS,AND CAPABILITIES | 47 |
| 3.1 Op- methods | 47 |
| 3.2 Operation and Method Declarations | 48 |
| 3.3 Operation Capabilities | 48 |
| Exercises | 51 |
| Chapter 4 CONCURRENT EXECUTION | 53 |
| 4.1 Process Declarations | 53 |
| 4.2 The Unabbreviated Form of Processes | 57 |
| 4.3 Static and Non- static Processes | 60 |
| 4.4 Process Scheduling and Priorities | 61 |
| 4.5 Automatic Termination Detection | 62 |
| Exercises | 64 |
| Chapter 5 SYNCHRONIZATION USINGSHARED VARIABLES | 69 |
| 5.1 The Critical Section Problem | 69 |
| 5.2 An Incorrect Solution | 71 |
| 5.3 An Alternating Solution | 72 |
| 5.4 The Bakery Algorithm for Two Processes | 73 |
| 5.5 The Bakery Algorithm for N Processes | 75 |
| Exercises | 76 |
| Chapter 6 SEMAPHORES | 79 |
| 6.1 Semaphore Declarations and Operations | 79 |
| 6.2 The Dining Philosophers Problem | 82 |
| 6.3 Barrier Synchronization | 84 |
| Exercises | 87 |
| Chapter 7 ASYNCHRONOUS MESSAGE PASSING | 91 |
| 7.1 Operations as Message Queues | 91 |
| 7.2 Invoking and Servicing via Capabilities | 94 |
| 7.3 Simple Client-Server Models | 96 |
| 7.4 Resource Allocation | 100 |
| 7.5 Semaphores Revisited | 103 |
| 7.6 Data- Containing Semaphores | 105 |
| 7.7 Shared Operations | 106 |
| 7.8 Parameter Passing Details | 109 |
| Exercises | 110 |
| Chapter 8 REMOTE PROCEDURE CALL | 117 |
| 8.1 Mechanisms for Remote Procedure Call | 117 |
| 8.2 Equivalence to Send/ Receive Pairs | 119 |
| 8.3 Return, Reply, and Forward Statements | 122 |
| Exercises | 129 |
| Chapter 9 RENDEZVOUS | 133 |
| 9.1 The Input Statement | 134 |
| 9.2 Receive Statement Revisited | 138 |
| 9.3 Synchronization Expressions | 141 |
| 9.4 Scheduling Expressions | 144 |
| 9.5 More Precise Semantics | 145 |
| 9.6 Break And Continue Statements | 146 |
| 9.7 Conditional Input | 147 |
| 9.8 Arrays of Operations | 148 |
| 9.9 Dynamic Operations | 149 |
| 9.10 Return‚ Reply‚ and Forward Statements | 150 |
| Exercises | 154 |
| Chapter 10 VIRTUAL MACHINES | 165 |
| 10.1 Program Start- Up and Execution Overview | 166 |
| 10.2 Creating Virtual Machines | 167 |
| 10.3 Creating Remote Objects | 169 |
| 10.4 Examples of Multiple Machine Programs | 170 |
| 10.5 Predefined Fields | 172 |