|
![]() |
|||
|
||||
OverviewJR 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. Full Product DetailsAuthor: Ronald A. Olsson , Aaron W. KeenPublisher: Springer-Verlag New York Inc. Imprint: Springer-Verlag New York Inc. Edition: Softcover reprint of the original 1st ed. 2004 Volume: 774 Dimensions: Width: 15.50cm , Height: 2.10cm , Length: 23.50cm Weight: 0.605kg ISBN: 9781475788822ISBN 10: 1475788827 Pages: 365 Publication Date: 24 March 2013 Audience: Professional and scholarly , Professional & Vocational Format: Paperback Publisher's Status: Active Availability: Manufactured on demand ![]() We will order this item for you from a manufactured on demand supplier. Table of ContentsDedication List 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.ReviewsAuthor InformationTab Content 6Author Website:Countries AvailableAll regions |