comp30112 concurrency
play

COMP30112: Concurrency Topics 2.2: Concurrency in FSP & 3.1: - PowerPoint PPT Presentation

Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision COMP30112: Concurrency Topics 2.2: Concurrency in FSP & 3.1: Java Threads Howard Barringer Room KB2.20: email: Howard.Barringer@manchester.ac.uk February 2009


  1. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision COMP30112: Concurrency Topics 2.2: Concurrency in FSP & 3.1: Java Threads Howard Barringer Room KB2.20: email: Howard.Barringer@manchester.ac.uk February 2009

  2. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Outline Topic 2.2: Modelling Processes with FSP - II Composing Processes in Parallel Interaction Labelling Processes Relabelling & Hiding Summary Topic 3.1: Java Threads: Revision Threads Example Synchronisation Example Thread Lifecycle

  3. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Parallel Composition ⋆ Consider ‘ DAY ’ processes? ⋆ ( P || Q ) represents the concurrent execution of P and Q . The operator || is the parallel composition operator. LAUGH = ( laugh -> STOP ) . = ( think -> talk -> STOP ) . CONVERSE || CONVERSE LAUGH = ( LAUGH || CONVERSE ) . ⋆ Possible Traces? ⋆

  4. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Interleaving Actions laugh think talk ✓✏ ✓✏ ✓✏ ✓✏ ✓✏ ◮ ◮ ◮ LAUGH CONVERSE 0 1 0 1 2 ✒✑ ✒✑ ✒✑ ✒✑ ✒✑ 2 states 3 states ⋆ Composite LTS? ⋆

  5. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Example: Clock Radio = ( tick -> CLOCK ) . CLOCK RADIO = ( on -> off -> RADIO ) . || CLOCK RADIO = ( CLOCK || RADIO ) . ⋆ LTS? ⋆ ⋆ Traces? ⋆ ⋆ Number of states? ⋆

  6. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Shared Actions • processes in a composition may have common actions: shared actions (i.e. process alphabets intersect) • shared actions model process interaction • unshared actions: arbitrary interleaving • shared actions: must be executed at the same time by all processes = ( make -> ready -> MAKER ) . MAKER USER = ( ready -> use -> USER ) . || MAKER USER = ( MAKER || USER ) . ⋆ LTS? ⋆ ⋆ Traces? ⋆ ⋆ Number of states? ⋆

  7. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Handshake Handshake is an action acknowledged by another: MAKERv2 = ( make -> ready -> used -> MAKERv2 ) . = ( ready -> use -> used -> USERv2 ) . USERv2 || MAKER USERv2 = ( MAKERv2 || USERv2 ) . ⋆ LTS? ⋆

  8. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Multiple Processes Multi-party synchronisation: MAKE A = ( makeA -> ready -> used -> MAKE A ) . MAKE B = ( makeB -> ready -> used -> MAKE B ) . = ( ready -> assemble -> used -> ASSEMBLE ) . ASSEMBLE || FACTORY = ( MAKE A || MAKE B || ASSEMBLE ) . ⋆ LTS? ⋆

  9. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Process Labelling - I 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 ) . 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 ) . ⋆ Write SWITCHES(3) in basic FSP? ⋆

  10. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Process Labelling - II { a1 , . . . , ax } :: P replaces every action label n in the alphabet of P with the labels a1 . n , . . . , ax . n . Further, every transition n -> X in the definition of P is replaced with the transitions { a1 . n , . . . , ax . n } -> X . Process prefixing is useful for modeling shared resources: RESOURCE = ( acquire -> release -> RESOURCE ) . = ( acquire -> use -> release -> USER ) . USER || RESOURCE SHARE = ( a : USER || b : USER || { a , b } :: RESOURCE ) . ⋆ Write RESOURCE SHARE in basic FSP? ⋆

  11. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Process Prefix Labels For Shared Resources ⋆ LTS for RESOURCE SHARE? ⋆

  12. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Action Relabelling - I Relabelling functions are applied to processes to change the names of action labels. The general form of the relabelling function is: / { newlabel 1 / oldlabel 1 , . . . , newlabel n / oldlabel n } . Relabelling to ensure that composed processes synchronize on particular actions: = ( call -> wait -> continue -> CLIENT ) . CLIENT SERVER = ( request -> service -> reply -> SERVER ) . || CLIENT SERVER = ( CLIENT || SERVER ) / { call / request , reply / wait } .

  13. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Client Server LTSs

  14. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Action Relabelling - II Alternative formulation of the client server system is described below using qualified or prefixed labels: SERVERv2 = ( accept . request -> service -> accept . reply -> SERVERv2 ) . CLIENTv2 = ( call . request -> call . reply -> continue -> CLIENTv2 ) . || CLIENT SERVERv2 = ( CLIENTv2 || SERVERv2 ) / { call / accept } .

  15. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Action Hiding When applied to a process P , the hiding operator \{ a1 .. ax } removes the action names a1 .. ax from the alphabet of P and makes these concealed actions “silent”. These silent actions are labelled tau . Silent actions in different processes are not shared. Sometimes it is more convenient to specify the set of labels to be exposed... When applied to a process P , the interface operator @ { a1 .. ax } hides all the actions in the alphabet of P not labelled in the set a1 .. ax .

  16. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision The following definitions are equivalent: USER = ( acquire -> use -> release -> USER ) \{ use } . USER = ( acquire -> use -> release -> USER ) @ { acquire , release } .

  17. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Summary • process composition e.g. ( P || Q || R ) • shared actions synchronised • unshared actions interleaved • process labeling e.g. a : P and { a , b } :: P • action relabelling e.g. P / { a / b , c / d } • action hiding e.g. P \{ a , b } and P @ { c , d }

  18. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision The Thread Class class MyThread extends Thread { int i; public void run() { i = 0; while (i <= 5) { System.out.println("" + i); i++; }}} ... MyThread mt = new MyThread(); mt.start(); ...

  19. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision The Runnable Interface public interface Runnable{ public abstract void run(); } class MyRun implements Runnable { int i; public void run() { i = 0; while (i <= 5) { System.out.println("" + i); i++; }}} ... MyRun mr = new MyRun(); Thread mt = new Thread(mr); mt.start(); ...

  20. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Terminal Counter class Counter implements Runnable { Thread counter; int i; final static int N = 3; Counter () { counter = new Thread(this); i = N; counter.start(); }

  21. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Terminal Counter - cont. public void run () { while (true) { if (counter == null) return; if (i>0) { System.out.println("Count is " + i); try { Thread.sleep(500); } catch (InterruptedException e) {} i--; } if (i==0) { System.out.println("Count is done"); return; } }//while }//run }//class

  22. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision class CounterText { public static void main (String [] args) { System.out.println("Main starting counter..."); Counter count = new Counter(); System.out.println("Main Done"); }//main }//class CounterText

  23. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Thread Synchronisation synchronized (obj) statements synchronized typename methodname () statement This provides mutually exclusive access to methods/objects.

  24. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision • each object has a single lock associated with it • any synchronized code applied to an object must first obtain the lock for the object • if the lock is already taken, then thread will block until lock is available • exception releases lock • scheduling policy for waiting threads

  25. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision wait() and notify() • wait() : suspend and block thread; release lock • notify() : unblock a suspended thread • notifyAll() : unblock all suspended threads • wait sets

  26. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Condition Synchronization synchronized type1 Method1 (...) throws InterruptedException { while (!firstCondition){ wait(); } ... } synchronized type2 Method2 (...) { ... firstCondition = true; notify(); // or notifyAll() ... } Note: signal-and-continue semantics for notify()

  27. Topic 2.2: Modelling Processes with FSP - II Topic 3.1: Java Threads: Revision Car Park

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