Lecture 22 Abstractions for Concurrency When you have a world wide tuple space you ll be able to tune it in from any computer anywhere or from any quasi computer any cell phone any TV any toaster David Gelernter s introduction to JavaSpaces Principles Patterns and Practice CS655 Programming Languages University of Virginia David Evans Computer Science http www cs virginia edu evans Menu Form going around Signup for Project Presentations Vote for Next Lecture no cheating Abstractions for Concurrency Algol 68 Monitors Linda and JavaSpaces 17 April 2001 CS 655 Lecture 21 2 Last Time Concurrent programming is programming with partial ordering on time A concurrent programming language gives programmers mechanisms for expressing that partial order We can express many partial orders using the thread control primitives fork and join and locking primitives protect acquire and release 17 April 2001 CS 655 Lecture 21 3 Abstractions Programming at that low level would be a pain are there better abstractions Hundreds of attempts we ll see a few today Issues fork Thread creation Thread synchronization join protect acquire release Resource contention 17 April 2001 CS 655 Lecture 21 4 Algol 68 Collateral Clauses Collateral Clauses stmt0 stmt1 stmt2 stmt3 Defines a partial order stmt0 stmt1 stmt2 stmt3 17 April 2001 CS 655 Lecture 21 5 Algol 68 Semaphores Dijkstra Cooperating Sequential Processes type sema up increments down decrements must 0 before 17 April 2001 CS 655 Lecture 21 6 Semaphore Example begin sema mutex level 1 proc producer while not finished do down mutex insert item up mutex od 17 April 2001 CS 655 Lecture 21 7 Semaphore Example cont proc consumer while not finished do down mutex remove item up mutex od par producer consumer start them in parallel 17 April 2001 CS 655 Lecture 21 8 What can go wrong Programmer neglects to up semaphore Programmer neglects to down semaphore before accessing shared resource Programmer spends all her time worrying about up and down instead of the algorithm 17 April 2001 CS 655 Lecture 21 9 Monitors Concurrent Pascal Hansen 74 Modula Wirth 77 Mesa Lampson80 Integrated data abstraction and resource synchronization Routines that use a shared resource grouped in a monitor accesses only allowed through exported procedures Conditions can control when threads may execute exported procedures 17 April 2001 CS 655 Lecture 21 10 Monitor Example monitor boundedbuffer buffer array 0 N 1 of int count 0 N nonempty nonfull condition procedure append x int if count N then nonfull wait buffer count x count count 1 nonempty signal end append Example adapted from Hansen93 17 April 2001 CS 655 Lecture 21 11 Monitor Example cont procedure remove returns portion if count 0 then nonempty wait x nonfull signal end remove 17 April 2001 CS 655 Lecture 21 12 Java Synchronization synchronized method qualifier Once a synchronized method begins execution it will complete before any other thread enters a method of the same object Run time must associate a lock with every object Is this enough to implement a semaphore Is this better worse than monitors 17 April 2001 CS 655 Lecture 21 13 Synchronized Example class ProducerConsumer private int x 1 synchronized void produce x x 1 synchronized void consume x x 1 17 April 2001 How could we require x stay positive CS 655 Lecture 21 14 Linda Program Concurrency by using uncoupled processes with shared data space Add concurrency into a sequential language by adding Simple operators Runtime kernel language independent Preprocessor or compiler 17 April 2001 CS 655 Lecture 21 15 Design by Taking Away Backus von Neumann bottleneck results from having a store Remove the store Functional Languages Gelernter distributed programming is hard because of inter process scheduling and communication due to order of mutation We don t have to remove the store just mutation Remove mutation read and remove only store tuple spaces 17 April 2001 CS 655 Lecture 21 16 Basic Idea Have a shared space tuple space Processes can add read and take away values from this space Bag of processes each looks for work it can do by matching values in the tuple space Get load balancing synchronization messaging etc for free 17 April 2001 CS 655 Lecture 21 17 Tuples Conventional Memory Linda JavaSpaces Unit Bit Logical Tuple 23 test false Access Using Address variable Selection of values Operations read write read add remove JavaSpaces read write take immutable 17 April 2001 CS 655 Lecture 21 18 Tuple Space Operations out t add tuple t to tuple space take s t returns and removes tuple t matching template s read s t same as in except doesn t remove t Operations are atomic even if space is distributed 17 April 2001 CS 655 Lecture 21 19 Meaning of take take f int n Tuple Space take f 23 f 23 t 25 take t bool b int n t true t false take string s int n f 17 take cookie 17 April 2001 CS 655 Lecture 21 20 Operational Semantics Extend configurations with a tuple space just a bag of tuples Transition rule for out Just add an entry to the tuple space Transition rule for take If there is a match ignoring binding Remove it from the tuple space Advance the thread Similar to join last time it just waits if there is no match 17 April 2001 CS 655 Lecture 21 21 Shared Assignment Loc Expression take Loc formal loc value out Loc Expression e g x x 1 take x formal x value out x x value 1 17 April 2001 CS 655 Lecture 21 22 Semaphore Create int n String resource for i 0 i n i out resource Down String resource take resource Up String resource out resource 17 April 2001 CS 655 Lecture 21 23 Distributed Ebay Offer Item String item int minbid int time out item minbid owner sleep time take item formal bid formal bidder if bidder owner SOLD Bid String bidder String item int bid take item formal highbid formal highbidder if bid highbid out item bid bidder else out item highbid highbidder How could a bidder cheat 17 April 2001 CS 655 Lecture 21 24 Factorial Setup for int i 1 i n i out i start FactTask replicated n 1 times FactTask take int i take int j out i j What if last two elements are taken concurrently Eventually tuple space contains one entry which is the answer Better way to order Setup 17 April 2001 CS 655 Lecture 21 25 Finishing Factorial Setup for int i 1 i n i out i out workleft n 1 take workleft 0 take result FactTask take workleft formal w if w 0 take int i take int j out i j out workleft w 1 endif Opps we ve sequentialized it 17 April 2001 CS 655 Lecture 21 26 Concurrent Finishing Factorial
View Full Document