generation of concurrency control code using discrete
play

Generation of Concurrency Control Code using Discrete-Event Systems - PowerPoint PPT Presentation

Generation of Concurrency Control Code using Discrete-Event Systems Theory Christopher Dragert, Juergen Dingel, Karen Rudie Presented by David Gerhard Motivation Optimal usage of today's Multi-core systems requires parallel executable


  1. Generation of Concurrency Control Code using Discrete-Event Systems Theory Christopher Dragert, Juergen Dingel, Karen Rudie Presented by David Gerhard

  2. Motivation ● Optimal usage of today's Multi-core systems requires parallel executable Software ● Efficient and correct concurrent source code is hard to write and debug → facilitate development of concurrent source code

  3. Introduction ● Automatic generation of concurrency control code ● Input – Source code without concurrency control – Informal specification of the desired concurrent behaviour ● Output – Source code with concurrency controls

  4. Introduction ● Aims ● No Deadlocks ● No Starvation ● Minimally restrictive → using control theory (Discrete-event System)

  5. DES - Supervisor-Plant ● System(Plant) modelled as a finite-state automaton (FSA) ● Transitions in FSA are called events – Events can be controllable or uncontrollable ● Supervisor modelled as a FSA ● Enables or disables controllable events Supervisor Control Action Event Plant

  6. Process Overview Uncontrolled Source Code Controlled Source Code Informal Specification

  7. Process Overview Uncontrolled Source Code Event-Marked Source Code DES Plant Controlled Source Code Informal Formal DES Supervisor Specification Specification

  8. Relevant Events ● Find relevant events for concurrency control ● Example – Enter/Exit Critical Section → relevant – Accessing shared variable → non-relevant ● Mark events in the source code ● Differentiate controllable and uncontrollable events

  9. Example ● 5 Threads with Code example for Thread 3: dependencies public void run() { ● 1 → 2,3,4 // relevant event: T3-start System.out.println(id); ● 5 → 4 doWork(); } 1 5 2 3 4

  10. DES Plant ● Build a Finite-state automaton (FSA) representing all possible event sequences for each Thread ● Build control-flow graph(CFG) from source code ● Reduce CFG – All relevant events remain – All non-relevant events important for CFG structure remain

  11. Example Code example for Thread 3: T3-start run() { Sys... public void run() { // relevant event: T3-start System.out.println(id); doWork 2 } doWork(); } T3-start 1 2 2

  12. Process Overview Uncontrolled Source Code Event-Marked Source Code DES Plant Controlled Source Code Informal Formal DES Supervisor Specification Specification

  13. Formal Specification ● Specifies the allowed subset of event sequences ● FSA for each restriction ● Only restrictive

  14. Example T1-finish 1 2 2 T5-finish T1-finish, T2-start, T3-start, T4-start, T5-finish T5-finish 1 2 2 T1-finish, T2-start, T3-start T1-finish, T2-start, T3-start, T4-start, T5-finish

  15. DES Supervisor ● Only one supervisor (simplification) ● Different FSA's need to be combined into a monolithic specification ● Scalability issue

  16. Process Overview Uncontrolled Source Code Event-Marked Source Code DES Plant Controlled Source Code Informal Formal DES Supervisor Specification Specification

  17. Code Generation ● Supervisor needs to block non allowed controllable events ● Generates a Semaphore for each controllable event set to the initial state ● Supervisor state changing function enables/disables controllable events

  18. Example – Thread 3 //relevant event: T3start while (true) { if(Synchronizer.stateChangeTest("T3start", Synchronizer.T3start)) break; Synchronizer.T3start.acquireUninterruptibly(); Synchronizer.T3start.release(); }

  19. Example – Supervisor I public static synchronized Boolean stateChangeTest(String event, Semaphore eventBlocker) { if (!(eventBlocker == null)) { if (!eventBlocker.tryAcquire()) { return false; } eventBlocker.release(); } changeSupervisorState(event); return true; }

  20. Example – Supervisor II private static void changeSupervisorState(String event) { if (event.equals("T1finish")) { switch(Synchronizer.stateTracker) { case(0): Synchronizer.T3start.release(); Synchronizer.T2start.release(); Synchronizer.stateTracker = 1; break; case(1): ...

  21. Verification ● Discrete-event theory is proven correct and non blocking ● Formal proof for algorithm is still needed ● Modelchecker (Java Pathfinder) ● Input not reliable!

  22. Limitations ● No dynamic threads generation allowed ● Monolithic supervisor not very efficient ● Starvation not properly addressed

  23. Conclusion ● DES theory can be applied to concurrency ● Chosen FSA-based version of DES not expressive enough ● Further work needed

  24. Questions ?

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