
The JR Programming Language: Concurrent Programming in an Extended Java
by Ronald A. Olsson, Aaron W. KeenISBN-10: 1475788827
ISBN-13: 9781475788822
Pub. Date: 12/31/2013
Publisher: Springer US
JR is a language for concurrent programming. It is an imperative language that provides explicit mechanisms for concurrency, communication, and s- chronization. JR is an extension of the Java programming language with - ditional concurrency mechanisms based on those in the SR (Synchronizing Resources) programming language. It is suitable for writing programs for
Overview
JR is a language for concurrent programming. It is an imperative language that provides explicit mechanisms for concurrency, communication, and s- chronization. JR is an extension of the Java programming language with - ditional concurrency mechanisms based on those in the SR (Synchronizing Resources) programming language. It is suitable for writing programs for both shared- and distributed-memory applications and machines; it is, of course, also suitable for writing sequential programs. JR can be used in applications such as parallel computation, distributed systems, simulation, and many others. JR supports many “features” useful for concurrent programming. However, our goals have always been keeping the language simple and easy to learn and use. We have achieved these goals by integrating common notions, both sequ- tial and concurrent, into a few powerful mechanisms. We have implemented these mechanisms as part of a complete language to determine their feasibility and cost, to gain hands-on experience, and to provide a tool that can be used for research and teaching. The introduction to Chapter 1 expands on how JR has realized our design goals.
Product Details
- ISBN-13:
- 9781475788822
- Publisher:
- Springer US
- Publication date:
- 12/31/2013
- Series:
- The Springer International Series in Engineering and Computer Science , #774
- Edition description:
- Softcover reprint of the original 1st ed. 2004
- Pages:
- 365
- Product dimensions:
- 6.14(w) x 9.21(h) x 0.81(d)
Table of Contents
DedicationList of Figures
List of Tables
Preface
Acknowledgments
1: Introduction
1.1 Key JR Components
1.2 Two Simple Examples
1.3 Matrix Multiplication
1.4 Concurrent File Search
1.5 Critical Section Simulation
1.6 Translating and Executing JR Programs
1.7 Vocabulary and Notation
Exercises
Part I. Extensions for Concurrency
2: Overview Of Extensions
2.1 Process Interactions via Operations
2.2 Distributing JR Programs
3: Op-methods, Operations, And Capabilities
3.1 Op-methods
3.2 Operation and Method Declarations
3.3 Operation Capabilities
Exercises
4: Concurrent Execution
4.1 Process Declarations
4.2 The Unabbreviated Form of Processes
4.3 Static and Non-static Processes
4.4 Process Scheduling and Priorities
4.5 Automatic Termination Detection
Exercises
5: Synchronization Using Shared Variables
5.1 The Critical Section Problem
5.2 An Incorrect Solution
5.3 An Alternating Solution
5.4 The Bakery Algorithm for Two Processes
5.5 The Bakery Algorithm for N Processes
Exercises
6: Semaphores
6.1 Semaphore Declarations and Operations
6.2 The Dining Philosophers Problem
6.3 Barrier Synchronization
Exercises
7: Asynchronous Message Passing
7.1 Operations as Message Queues
7.2 Invoking and Servicing via Capabilities
7.3 Simple Client-Server Models
7.4 Resource Allocation
7.5 Semaphores Revisited
7.6 Data-Containing Semaphores
7.7 Shared Operations
7.8 Parameter Passing Details
Exercises
8: Remote Procedure Call
8.1 Mechanisms for Remote Procedure Call
8.2 Equivalence to Send/Receive Pairs
8.3 Return, Reply, and Forward Statements
Exercises
9: Rendezvous
9.1 The Input Statement
9.2 Receive Statement Revisited
9.3 Synchronization Expressions
9.4 Scheduling Expressions
9.5 More Precise Semantics
9.6 Break And Continue Statements
9.7 Conditional Input
9.8 Arrays of Operations
9.9 Dynamic Operations
9.10 Return, Reply, and Forward Statements
Exercises
10: Virtual Machines
10.1 Program Start-Up and Execution Overview
10.2 Creating Virtual Machines
10.3 Creating Remote Objects
10.4 Examples of Multiple Machine Programs
10.5 Predefined Fields
10.6 Parameterized Virtual Machines
10.7 Parameter Passing Details
10.8 Other Aspects of Virtual Machines
Exercises
11: The Dining Philosophers
11.1 Centralized Solution
11.2 Distributed Solution
11.3 Decentralized Solution
Exercises
12: Exceptions
12.1 Operations and Capabilities
12.2 Input Statements
12.3 Asynchronous Invocation
12.4 Additional Sources of Asynchrony
12.5 Exceptions and Operations
Exercises
13: Inheritance Of Operations
13.1 Operation Inheritance
13.2 Example: Distributing Operation Servicing
13.3 Example: Filtering Operation Servicing
13.4 Redefinition Considerations
Exercises
14: Inter-Operation Invocation Selection Mechanism
14.1 Selection Method Expression
14.2 View Statement
14.3 Selection Method Support Classes
14.4 Examples
Exercises
Part II: Applications
15: Parallel Matrix Multiplication
15.1 Prescheduled Strips
15.2 Dynamic Scheduling: A Bag of Tasks
15.3 A Distributed Broadcast Algorithm
15.4 A Distributed Heartbeat Algorithm
Exercises
16: Solving PDEs: Grid Computations
16.1 A Data Parallel Algorithm
16.2 Prescheduled Strips
16.3 A Distributed Heartbeat Algorithm
16.4 Using Multiple Virtual Machines
Exercises
17: The Traveling Salesman Problem
17.1 Sequential Solution
17.2 Replicated Workers and a Bag of Tasks
17.3 Manager and Workers
Exercises
18: A Distributed File System
18.1 System Structure
18.2 Directory and File Servers
18.3 User Interface
Exercises
19: Discrete Event Simulation
19.1 A Simulation Problem
19.2 A Solution
19.
Customer Reviews
Average Review: