60
Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Embed Size (px)

Citation preview

Page 1: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Concurrency Design Patterns

By:

Kalpana Nallavolu

Nestor Rivera

Feras Batarseh

Page 2: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Design Patterns

A design pattern is a formal way of documenting successful solutions to problems.

Reusability, modularity, win time.

Resign Pattern Ex: fatal, misbehavior.

Page 3: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Contributors

Christopher Alexander

GoF

Page 4: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Concurrency Design Patterns Concurrency Pattern Message Queuing Pattern Interrupt Pattern Guarded Call Pattern Rendezvous Pattern Cyclic Executive Pattern Round Robin Pattern Static Priority Pattern Dynamic Priority Pattern

Page 5: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Background

Thread Concurrency Concurrency Architecture Active Object Passive objects

Page 6: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Collaboration Of Objects

Page 7: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The active object accept messages and delegate them to the internally contained application objects for processing.

The issues around the concurrency management are varied depending

1) The threads are completely independent

2) The threads are not really independent.

Collaboration Of Objects 2

Page 8: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Message Queuing Pattern

Page 9: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Message Queuing Pattern

It provides a simples means of communication among threads.

It uses asynchronous communication. Information shared among threads is passed

by value to the separate thread. Advantages and disadvantages

Page 10: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Pattern Structure

Page 11: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Sample Model

Page 12: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Interrupt Pattern

Page 13: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Interrupt Pattern

In many real-time applications, certain events must be responded quickly and efficiently regardless of what system is doing.

This method is rarely used as only concurrency strategy

Advantages and disadvantages.

Page 14: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Pattern Structure

Page 15: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Sample Model

Page 16: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern

Page 17: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Abstract Problem with Message Queuing Pattern…?

Asynchronous & slow What if urgency? Alternative -> synchronously

invoke a method of an object Data integrity is key -> mutual exclusion Need to avoid ->synchronization & deadlock

problems

Page 18: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Collaboration Roles I Server Thread: <<active object>>

Server Object Shared Resource Protection with Mutex

Client Thread: <<active object>> Client object Synchronously invoke method

Page 19: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Collaboration Roles II Boundary Object

Protected interface to server objects with operations Mutex

Mutual exclusion semaphore object Permits only single caller through time Safer if invoked by relevant operations Locks and unlocks shared resource Blocks client threads

Page 20: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Collaboration Roles III Server

Uses the shared resource object Provides the service to client across the thread boundary

Shared Resource Provides data or service Shared by multiple servers Integrity must be protected => serialization of access

Page 21: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern - Consequences

Timely response (unless services are locked) Simplification: no interaction among servers

=> boundary object, contain shared resource & one mutex/server

Page 22: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Related Patterns Message Queuing, Interrupt, Guarded Call &

Rendezvous could be mixed Race conditions may appear If server is stateful, monitor on server may be

needed

Page 23: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern – Class Diagram

Page 24: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern Example - Structure

Page 25: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Guarded Call Pattern Example - Scenario

Page 26: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern

Page 27: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern

Simplified form of Guarded Call Pattern (synchronize threads)

Rendezvous Object => means for synchronization (synchronization point, policy or precondition)

Page 28: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern - Abstract Precondition => specified to be true prior to

an action/activity Behavioral model => each thread registers

with Rendezvous class and blocks until released

Page 29: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern – Collaboration Roles I Callback: holds address of client thread Client Thread

1. At synchronization points, register

2. Pass their callbacks

3. i.e. notify() called once condition met

Page 30: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern – Collaboration Roles II Rendezvous

1. Manages thread synchronization

2. Has register() operation Sync Policy

1. Reifies set of preconditions into single concept i.e. Registration count (Thread Barrier Pattern)

Page 31: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern – Class Diagram

Page 32: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern – Sync Policy State Chart

Page 33: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern Example - Structure

Page 34: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Rendezvous Pattern Example - Scenario

Page 35: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern

Page 36: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern

Very small systems (execution predictability is crucial)

Easy to implement Can run in memory constraint systems (no

RTOS) Executes tasks in turn, from first to last and

starts over again (cycle)

Page 37: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern – Collaboration Roles Abstract Thread

Super class for concrete thread Interface to the scheduler

Concrete Thread <<active object>> Contains passive objects

Scheduler Initializes system (loads tasks) Runs each of them in turn in perpetuity

Page 38: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern – Properties of Applications Constant number of tasks Amount of task time is unimportant or

consistent Tasks are independent Usage of shared resources complete after

each task Sequential ordering of tasks is adequate

Page 39: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern – Pros and Cons Primary advantage => simplicity Primary Disadvantages

Lack of flexibility Non-optimality Instability to violation of its assumptions

Response to incoming event: deadline >= cycle time No criticality or urgency: all threads are equally

important.

Page 40: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern – Class Diagram

Page 41: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern Example - Structure

Page 42: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Cyclic Executive Pattern Example - Scenario

Page 43: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Round Robin Pattern

Page 44: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Introduction

Hardcore real time deadline! A “fairness” scheduling method. All tasks progress than specific deadline to

be met. Entire set movement.

Page 45: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The Model

Abstract thread: super class, associates with scheduler.

Concrete thread: (active thread) real work of the system.

Scheduler: initialize the tasks and run them. Stack: control and data; variables, return variables Task control block Timer: ticks for scheduler, front end to the hardware

timer, switch task();

Page 46: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Pros and Cons

All tasks get the chance to run. Misbehaving task wont ruin the system. Scale up better to big systems. Higher switching time… All tasks take the same time slice!

Priority?

Page 47: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Related Patterns

More complex than cyclic executive Less complex than priority patterns,

discussed next. Special kind that gives each task its time.

Page 48: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Static Priority Pattern

Page 49: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Introduction

Priorities predefined. Common approach, simple, large number of

tasks. Urgency (time) + Criticality (importance)

Page 50: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The Model

Abstract thread Blocked queue: queue for TCB, blocked tasks in,

out to ready queue. Concrete thread Shared resources Mutex: semaphore object that allows one caller

object (thread) to access shared resources.

Mutex ID, entry point.

Page 51: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The Model 2

Ready queue: reference to tasks ready to execute next.

even running tasks could be interrupted by looking at the RQ.

Scheduler: calls start address of higher and ready thread.

Stack: parameters for threads. Task control block: priority and entry address

Page 52: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Pros and Cons

Simplicity Stability Changing conditions, reallocation? (DPP) Low priority tasks?

Page 53: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Dynamic Priority Pattern

Page 54: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Introduction

Automatically update of tasks priorities. Urgency over criticality, thus Earliest deadline

first. Sets priority as time remaining function.

Page 55: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The Model

Abstract thread Blocked queue: queue for TCB, blocked tasks in,

out to ready queue. Concrete thread Ready queue: reference to tasks ready to execute

next, closest to deadline on top.even running tasks could be interrupted by looking at the RQ.

Page 56: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

The Model 2

Scheduler: computes the priority dynamically due to closest deadline.

Stack: return addresses and parameters for threads. Task control block: priority and entry address after

scheduler computations. Shared resources Mutex: semaphore object that allows one caller

object (thread) to access shared resources.

Page 57: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Pros and Cons

Flexible Optimal Scales well to large systems Not stable Complex

Page 58: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Related Patterns

Not as common as SPP More complex than other patterns

Page 59: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

References

[book] Real time design patterns: Patterns: robust scalable architecture for real-time systems

[book] Design patterns: Elements of reusable object-oriented software

Gomma, Hassan Software Design Methods for concurrent and real timeSystems, Reading , Addison-Wesley 1993

IEEE Papers Database wikipedia.com...and a couple of other websites

Page 60: Concurrency Design Patterns By: Kalpana Nallavolu Nestor Rivera Feras Batarseh

Thank you for your attention.

Questions?