chapter 3 concurrent execution
play

Chapter 3 Concurrent Execution DM519 Concurrent Programming 1 - PowerPoint PPT Presentation

Chapter 3 Concurrent Execution DM519 Concurrent Programming 1 Repetition (Concepts, Models, and Practice) u Concepts: l We adopt a model-based approach for the design and construction of concurrent programs u Safe model => safe


  1. Chapter 3 Concurrent Execution DM519 Concurrent Programming � 1

  2. Repetition (Concepts, Models, and Practice) u Concepts: l We adopt a model-based approach for the design and construction of concurrent programs u Safe model => safe program u Models: l We use finite state models to represent concurrent behaviour 
 ( Finite State Processes and Labelled Transition Systems ) � u Practice: l We use Java for constructing concurrent programs DM519 Concurrent Programming � 2

  3. 
 Repetition (Models; Lts, Fsp) Model = simplified representation of the real world u Based on Labelled Transition Systems ( LTS ): Focuses on concurrency aspects (of the program) 
 - everything else abstracted away � � � u Described textually as Finite State Processes EngineOff = (engineOn -> EngineOn), ( FSP ): EngineOn = (engineOff -> EngineOff 
 |speed -> EngineOn). DM519 Concurrent Programming � 3

  4. Repetition (Finite State Processes; Fsp) Finite State Processes (FSP): P : STOP // termination : (x -> P) // action prefix : (when (…) x -> P) // guard : P | P’ // choice : P +{ … } // alphabet extension : X // process variable � ♦ action indexing x[i:1..N] -> P or x[i] -> P ♦ process parameters P(N=3) = … ♦ constant definitions const N = 3 ♦ range definitions range R = 0..N Which constructions do not add expressive power? (and are thus only "syntactic sugar"). DM519 Concurrent Programming � 4

  5. Repetition (Java Threads) Subclassing java.lang.Thread: � class MyThread extends Thread { � public void run() { // ... � } � } Thread t = new MyThread(); � t.start(); // ... � Implementing java.lang.Runnable: class MyRun implements Runnable { public void run() { // ... } } Thread t = new Thread(new MyRun()); t.start(); // ... DM519 Concurrent Programming � 5

  6. Chapter 3: Concurrent Execution Concepts : processes - concurrent execution and interleaving process interaction � Models : parallel composition of asynchronous processes interleaving interaction - shared actions process labelling, and action relabelling and hiding structure diagrams � Practice : Multithreaded Java programs DM519 Concurrent Programming � 6

  7. Definition: Parallelism u Parallelism (aka. Real/True Concurrent Execution) � l Physically simultaneous processing u Involves multiple processing elements (PEs) 
 and/or independent device operations A B C Time DM519 Concurrent Programming � 7

  8. Definition: Concurrency u Concurrency (aka. Pseudo-Concurrent Execution) � l Logically simultaneous processing u Does not imply multiple processing elements (PEs) u Requires interleaved execution on a single PE A B C Time DM519 Concurrent Programming � 8

  9. Parallelism vs Concurrency u Parallelism u Concurrency A A B B C C Time Time Both concurrency and parallelism require controlled access to shared resources. � We use the terms parallel and concurrent interchangeably (and generally do not distinguish between real and pseudo-concurrent execution). � Also, creating software independent of the physical setup, makes us capable of deploying it on any platform. DM519 Concurrent Programming � 9

  10. 3.1 Modelling Concurrency u How do we model concurrency? � x y � � � Possible execution sequences? � • x ; y � � • y ; x Asynchronous � • x || y � model of execution � l Arbitrary relative order of actions from different processes ( interleaving but preservation of each process order) DM519 Concurrent Programming � 10

  11. 3.1 Modelling Concurrency u How should we model process execution speed? � a x � � b y � l We choose to abstract away time: u Arbitrary speed! -: we can say nothing of real-time properties +: independent of architecture, processor speed, 
 scheduling policies, … DM519 Concurrent Programming � 11

  12. Parallel Composition - Action Interleaving If P and Q are processes then (P||Q) represents the concurrent execution of P and Q. The operator ‘ || ’ is the parallel composition operator. ITCH = (scratch->STOP). CONVERSE = (think->talk->STOP). � ||CONVERSE_ITCH = (ITCH || CONVERSE). • scratch à think à talk Possible traces as • think à scratch à talk a result of action • think à talk à scratch interleaving? DM519 Concurrent Programming � 12

  13. Parallel Composition - Action Interleaving 2 states 3 states Cartesian product? (1,1) (1,0) (0,0) (0,1) (0,2) (1,2) from ITCH from CONVERSE 2 x 3 states DM519 Concurrent Programming � 13

  14. Parallel Composition - Algebraic Laws Commutative: (P||Q) = (Q||P) Associative: (P||(Q||R)) = ((P||Q)||R) = (P||Q||R). Small example: MALTHE = (climbTree->fall->MALTHE). OSKAR = (run->jump->OSKAR). � ||MALTHE_OSKAR = (MALTHE || OSKAR). LTS? Traces? Number of states? DM519 Concurrent Programming � 14

  15. Modelling Interaction - Shared Actions MAKE1 = (make->ready->STOP). MAKE1 USE1 = (ready->use->STOP). synchronises � with USE1 when ||MAKE1_USE1 = (MAKE1 || USE1). ready . LTS? Traces? Number of states? u Shared Actions: If processes in a composition have actions in common, these actions are said to be shared. 
 Shared actions are the way that process interaction is modelled. While unshared actions may be arbitrarily interleaved, a shared action must be executed at the same time by all processes that participate in the shared action. DM519 Concurrent Programming � 15

  16. Modelling Interaction - Example MAKE1 = (make-> ready ->STOP). 3 states USE1 = ( ready ->use->STOP). 3 states � ||MAKE1_USE1 = (MAKE1 || USE1). make ready ready ready ready ready make 3 x 3 states? use use use No…! make ready DM519 Concurrent Programming � 16

  17. Modelling Interaction - Example MAKE1 = (make-> ready ->STOP). 3 states USE1 = ( ready ->use->STOP). 3 states � ||MAKE1_USE1 = (MAKE1 || USE1). make ready ready ready ready ready 4 states! ready make Interaction may constrain use use use the overall behaviour ! make ready DM519 Concurrent Programming � 17

  18. 
 Example 2 states P = (x -> y -> P). Q = (y -> x -> Q). 2 states � ||R = (P || Q). LTS? Traces? Number of states? P = (a -> P | b -> P). 
 Q = (c -> Q) + {a}. 
 ||PQ = (P || Q). LTS? Traces? DM519 Concurrent Programming � 18

  19. Modelling Interaction - Example MAKER = (make->ready->MAKER). USER = (ready->use->USER). � ||MAKER_USER = (MAKER || USER). LTS? Traces? Can we make sure the MAKER does not “get ahead of” the USER 
 ( i.e. never make before use); and if so, how? DM519 Concurrent Programming � 19

  20. Modelling Interaction - Handshake A handshake is an action acknowledged by another process: MAKERv2 = (make->ready->used->MAKERv2). USERv2 = (ready->use->used->USERv2). � ||MAKER_USERv2 = (MAKERv2 || USERv2). DM519 Concurrent Programming � 20

  21. Modelling Interaction - Multiple Processes Multi-party synchronisation: MAKE_A = (makeA->ready->used->MAKE_A). MAKE_B = (makeB->ready->used->MAKE_B). ASSEMBLE = (ready->assemble->used->ASSEMBLE). � ||FACTORY = (MAKE_A || MAKE_B || ASSEMBLE). DM519 Concurrent Programming � 21

  22. Composite Processes A composite process is a parallel composition of primitive processes. These composite processes can be used in the definition of further compositions. ||MAKERS = (MAKE_A || MAKE_B). ||FACTORY = (MAKERS || ASSEMBLE). substitution of def’n of MAKERS ||FACTORY = ((MAKE_A || MAKE_B)|| ASSEMBLE). associativity! Further simplification? ||FACTORY = (MAKE_A || MAKE_B || ASSEMBLE). DM519 Concurrent Programming � 22

  23. Process Labelling a:P prefixes each action label in the alphabet of P with a. Two instances of a switch process: LTS? (a:SWITCH) SWITCH = (on->off->SWITCH). ||TWO_SWITCH = (a:SWITCH || b:SWITCH). DM519 Concurrent Programming � 23

  24. Process Labelling a:P prefixes each action label in the alphabet of P with a. Two instances of a switch process: SWITCH = (on->off->SWITCH). ||TWO_SWITCH = (a:SWITCH || b:SWITCH). Create an array of instances of the switch process: ||SWITCHES(N=3) = (forall[i:1..N] s[i]:SWITCH). 
 ||SWITCHES(N=3) = (s[i:1..N]:SWITCH). DM519 Concurrent Programming � 24

  25. Process Labelling By A Set Of Prefix Labels {a 1 ,..,a n }::P replaces every action label x in the alphabet of P with the labels a 1 .x,…,a n .x. 
 Further, every transition (x -> X) in the definition of P is replaced with the transitions ({a 1 .x,…,a n .x} -> X). Process prefixing is useful for modelling shared resources: USER = (acquire->use->release->USER). RESOURCE = (acquire->release->RESOURCE). ||RESOURCE_SHARE = (a:USER || b:USER || {a,b}::RESOURCE). DM519 Concurrent Programming � 25

  26. Process Prefix Labels For Shared Resources RESOURCE = (acquire->release->RESOURCE). USER = (acquire->use->release->USER). ||RESOURCE_SHARE = (a:USER || b:USER || {a,b}::RESOURCE). How does the model ensure that the user that acquires the resource is the one to release it? DM519 Concurrent Programming � 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend