Asynchronous Event and their Handlers
Download
1 / 39

Asynchronous Event and their Handlers - PowerPoint PPT Presentation


  • 136 Views
  • Uploaded on

Asynchronous Event and their Handlers. Prepared By: 1. Mohammed Abu Lamdy . 2. Mohammed Al Ashy. 3. Hashem Humaid . 4. Mohammed Shahwan . 5. Mohamed Kulab . 6. Bader Aldeen Sabaa . 7. Ahmed Bostan . Supervised By:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Asynchronous Event and their Handlers' - shaw


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Asynchronous Event and their Handlers

Prepared By:

1. Mohammed Abu Lamdy. 2. Mohammed Al Ashy.

3. HashemHumaid. 4. Mohammed Shahwan.

5. Mohamed Kulab. 6. Bader AldeenSabaa.

7. Ahmed Bostan.

Supervised By:

Ms.: TasneemDarwish

Explain Date:

18-05-2010


Asynchronous event and their handlers
Asynchronous Event and their Handlers

Lecture aims:

  • To motivate the needs for asynchronous events

  • To introduce the basic RTSJ model

  • To show how to implement Asynchronous events with parameters

  • To consider event handlers and program termination


Time triggered systems
Time Triggered Systems

  • Within embedded system design, the controllers for real world objects such as conveyor belts, engines and robots are usually represented as threads in the program

  • The interaction between the real world objects and their controllers can be either time triggered or event triggered


Time triggered systems cont
Time Triggered Systems (cont…)

  • In a time triggered systems, the controller is activated periodically; it senses the environment in order to determining the status of the real-time objects it is controlling

  • It writes to actuators which are able to affect the behavior of the objects

  • E.g, a robot controller may determine the position of robot via a sensor and decide that it must cut the power to a motor thereby bringing the robot to a halt


Event triggered systems
Event Triggered Systems

  • In an event triggered system, sensors in the environment are activated when the real world object enters into certain states

  • The events are signaled to the controller via interrupts

  • Eg, a robot may trip a switch when it reaches a certain position; this is a signal to the controller that the power to the motor should be turn off, thereby bringing the robot to a halt.

IT Students Group.


Event triggered systems cont
Event Triggered Systems (cont…)

  • Event triggered systems are often more flexible whereas time triggered systems are more predictable

  • In either case, the controller is usually represented as a thread.

IT Students Group.


Threads considered harmful
Threads Considered Harmful

  • There are occasions where threads are not appropriate:

    • the external objects are many and their control algorithms are simple and non-blocking, and

    • the external objects are inter-related and their collective control requires significant communication and synchronization between the controllers

IT Students Group.


Threads considered harmful cont
Threads Considered Harmful (cont…)

  • In the former case, using a thread per controller leads to a proliferation of threads along with the associated per thread overhead

  • In the latter case, complex communication and synchronization protocols are needed which can be difficult to design correctly and may lead to deadlock or unbounded blocking

IT Students Group.


Event based programming
Event-based Programming

  • An alternative to thread-based programming is event-based programming

  • Each event has an associated handler; when events occur, they are queued and one or more server thread takes an event from the queue and executes it associated handler

IT Students Group.


Event based programming cont
Event-based Programming (cont…)

  • When the handler has finished, the server takes another event from the queue, executes the handler and so on

  • There is no need for explicit communication between the handlers as they can simply read and write from shared objects without contention

IT Students Group.


Disadvantages of events
Disadvantages of Events

  • The disadvantage of controlling all external objects by event handlers include:

    • it is difficult to have tight deadlines associated with event handlers as a long-lived and non-blocking handler must terminate before the server can execute any newly arrived high-priority handler, and

IT Students Group.


Disadvantages of Events (cont…)

  • it is difficult to execute the handlers on a multiprocessor system as the handlers assume no contention for shared resources

IT Students Group.


The rtsj approach
The RTSJ Approach

  • Attempt to provide the flexibility of threads and the efficiency of event handling via the notion of real-time asynchronous events (AE) and associated handlers (AEH)

  • AEs are data-less happenings which are either fired by the program or associated with the occurrence of interrupts in the environment

  • One or more AEH can be associated with a single event, and a single AEH can be associated with one or more events

  • The association between AEHs and AEs is dynamic

  • Each AEH has a count of the number of outstanding firings. When an event is fired, the count is atomically incremented

  • The handler is then released

IT Students Group.


The ae class
The AE Class

package javax.realtime;

public class AsyncEvent {

// constructors

public AsyncEvent();

// methods

public void addHandler(AsyncEventHandler handler);

public void removeHandler(AsyncEventHandler handler);

public void setHandler(AsyncEventHandler handler);

public boolean handledBy(AsyncEventHandler target);

public void bindTo(java.lang.String happening)

throws UnknownHappeningException;

public void unBindTo(java.lang.String happening)

throws UnknownHappeningException;

public ReleaseParameters createReleaseParameters();

public void fire();

}

IT Students Group.


The aeh class constructors
The AEH Class: Constructors

package javax.realtime;

public class AsyncEventHandlerimplements Schedulable

{

//constructors

public AsyncEventHandler();

public AsyncEventHandler(java.lang.Runnable logic);

public AsyncEventHandler(boolean nonheap);

public AsyncEventHandler(boolean nonheap,

java.lang.Runnable logic);

public AsyncEventHandler(

SchedulingParameters scheduling,

ReleaseParameters release, MemoryParameters memory,

MemoryArea area, ProcessingGroupParameters group);

... // various other combinations

// methods to follow

}

IT Students Group.


The aeh class methods
The AEH Class: Methods

package javax.realtime;

public class AsyncEventHandler implements Schedulable

{

...

//methods needed to support the Schedulable interface

//methods needed for handling the associated event

protected final int getAndClearPendingFireCount();

protected int getAndDecrementPendingFireCount();

protected int getAndIncrementPendingFireCount();

protected final intgetPendingFireCount();

public void handleAsyncEvent();

public final void run();

}


ASEH

  • A set of protected methods allow the fire count to be manipulated

  • They can only be called by creating a subclass and overriding the handlerAsyncEvent method

  • The default code for handleAsyncEvent is null unless a Runnable object has been supplied with the constructor, in which case, the run method of the Runnable object is called

  • The run method of the AsyncEventHandler class itself is the method that will be called by the underlying system when the object is first released

  • It will call handleAsyncEvent repeatedly whenever the fire count is greater than zero

IT Students Group.


Bound event handlers
Bound Event Handlers

  • Both event handlers and threads are schedulable objects

  • However, in practice threads provide the vehicles for execution of event handlers

  • Therefore, it is necessary to bind an event handler to a server real-time thread

  • For AsyncEventHandler objects this binding is done dynamically

  • There is some overhead with doing this and BoundEvent-Handler objects are supplied to eliminate this overhead

  • Bound event handlers are permanently associated with a dedicated server real-time thread

IT Students Group.


Baseh
BASEH

package javax.realtime;

public class BoundAsyncEventHandler

extends AsyncEventHandler

{

// constructors

public BoundAsyncEventHandler();

public BoundAsyncEventHandler(

SchedulingParameters scheduling,

ReleaseParameters release, MemoryParameters memory,

MemoryArea area, ProcessingGroupParameters group,

boolean nonheap);

}

IT Students Group.


Timers i
Timers I

  • The abstract Timer class defines the base class from which timer events can be generated

  • All timers are based on a clock; a null clock values indicates that the RealtimeClock should be used

  • A timer has a time at which it should fire; that is release its associated handlers

  • This time may be an absolute or relative time value

  • If no handlers have been associated with the timer, nothing will happen when the timer fires

IT Students Group.


Timer ii
Timer II

package javax.realtime;

public abstract class Timerextends AsyncEvent {

// constructors

protected Timer(HighResolutionTime time, Clock clock,

AsyncEventHandler handler);

// methods

public ReleaseParameters createReleaseParameters();

public void destroy();

public void disable();

public void enable();

public Clock getClock();

public AbsoluteTime getFireTime();

public void reschedule(HighResolutionTime time);

public void start();

public booleanstop();

}

IT Students Group.


Timers iii
Timers III

  • Once created a timer can be explicitly destroyed, disabled (which allows the timer to continue counting down but prevents it from firing) and enabled (after it has been disabled)

  • If a timer is enabled after its firing time has passed, the firing is lost

  • The reschedule method allows the firing time to be changed

  • Finally the start method, starts the timer going

  • Any relative time given in the constructor is converted to an absolute time at this point; if an absolute time was given in the constructor, and the time has passed, the timer fires immediately

IT Students Group.


One shot timer
One Shot Timer

package javax.realtime;

public class OneShotTimerextends Timer

{

// constructors

public OneShotTimer(HighResolutionTime fireTime,

AsyncEventHandler handler);

// assumes the default real-time clock

public OneShotTimer(HighResolutionTime fireTime,

Clock clock, AsyncEventHandler handler);

// fireTime is based on the clock parameter

}

IT Students Group.


Periodic timer
Periodic Timer

package javax.realtime;

public class PeriodicTimer extends Timer {

// constructors

public PeriodicTimer(HighResolutionTime start,

RelativeTime interval,

AsyncEventHandler handler);

public PeriodicTimer(HighResolutionTime start,

RelativeTime interval, Clock clock,

AsyncEventHandler handler);

// methods

public ReleaseParameters createReleaseParameters();

public void fire(); // deprecated

public AbsoluteTime getFireTime();

public RelativeTime getInterval();

public void setInterval(RelativeTime interval);

}

IT Students Group.


Example a panic button i
Example: A Panic Button I

  • Consider a computerized hospital intensive care unit

  • A patient’s vital signs are automatically monitored and if there is cause for concern, a duty doctor is paged automatically

  • There is also a bed-side “panic” button which can be pushed by the patient or a visitor should they feel it is necessary

  • The “panic” button is mainly for the patient/visitor’s benefit; if the patient’s life is really in danger, other sensors will have detected the problem

IT Students Group.


Panic button ii
Panic Button II

  • To be on the safe side, the system responds to a press of the panic button in the following way:

    • if there is no paging of the doctor in the last five minutes, test to see if the patient’s vital signs are strong, if they are weak, the duty doctor is paged immediately.

    • if the vital signs are strong and a nurse has been paged in the last ten minutes, the button is ignored.

    • if the vital signs are strong and a nurse has not been paged in the last ten minutes, the duty nurse is paged.

IT Students Group.


Panic button iii
Panic Button III

  • The press of the “panic” button is an external happening to the RTSJ system

  • It is identified by the string “PanicButton”

  • A pager is represented by an asynchronous event; dutyDoctor and dutyNurse are the events for the doctor’s and nurse’s pages respectively

IT Students Group.


Panic button iii cont
Panic Button III (cont…)

  • A firing of the appropriate event results in the associated handler initiating the paging call

  • First the event handler for the “panic button” can be defined

  • The constructor attaches itself to the “panic button” event

  • Note also that the handler clears the fire count as it is possible that the patient/visitor has pressed the “panic button” multiple times

IT Students Group.


Panicbuttonhandler i
PanicButtonHandler I

import javax.realtime.*;

public class PanicButtonHandler extends AsyncEventHandler

{

public PanicButtonHandler(AsyncEvent button,

AsyncEvent nPager, AsyncEvent dPager,

PatientVitalSignsMonitor signs)

{

super();

lastPageTime = new AbsoluteTime(0,0);

myClock = Clock.getRealtimeClock();

nursePager = nPager;

doctorPager = dPager;

patient = signs;

button.addHandler(this);

// add this handler to the panic button

}

...

IT Students Group.


Panicbuttonhandler ii
PanicButtonHandler II

public void handleAsyncEvent()

{

RelativeTime lastCall =

myClock.getTime().subtract(lastPageTime);

if(lastCall.getMilliseconds() > doctorPagesGap){

if(!patient.vitalSignsGood()) {

lastPageTime = myClock.getTime();

doctorPager.fire();

}

else {

if(lastCall.getMilliseconds() > nursePagesGap) {

lastPageTime = myClock.getTime();

nursePager.fire(); }

}

}

}

getAndClearPendingFireCount();

}

IT Students Group.


Panicbuttonhandler iii
PanicButtonHandler III

private AbsoluteTime lastPageTime;

private Clock myClock;

private final long nursePagesGap = 600000; // 10 mins

private final long doctorPagesGap = 300000;// 5 mins

private AsyncEvent nursePager;

private AsyncEvent doctorPager;

private PatientVitalSignsMonitor patient;

}

IT Students Group.


Configuration i
Configuration I

// assume the nursePager and doctorPager have been

// defined and are in scope

AsyncEvent nursePager = new AsynEvent();

AsyncEvent doctorPager = new AsynEvent();

// assume also a class for monitoring the

// patient’s vital signs

PatientVitalSignsMonitor signs = new ... ;

// and appropriate scheduling parameters for the handler

PriorityParameters appropriatePriority = new ...;

...

AsyncEvent panicButton;

IT Students Group.


Configuration ii
Configuration II

ImmortalMemory im = ImmortalMemory.instance();

im.enter( new Runnable(){

public void run()

{

panicButton = new AsyncEvent();

AsyncEventHandler handler = new PanicButtonHandler(

panicButton, nursePager,doctorPager, signs);

handler.setSchedulingParameters(

new PriorityParameters(appropriatePriority));

handler.setReleaseParameters(

panicButton.createReleaseParameters());

if(!handler.addToFeasibility()) {

// output warning

}

panicButton.bindTo("PanicButton");

// start monitoring

}

} );

IT Students Group.


Configuration ii cont
Configuration II (cont…)

  • Note, as the asynchronous event is being bound to an external happening, the object is created in immortal memory

  • The panicButton reference can be in any scope convenient for the program

  • However, as the event will need to reference the handler, the handler too must be in immortal memory

  • Given that the handler is a Schedulable object, its scheduling and release parameters must be defined

  • The release parameters will be aperiodic in this case

IT Students Group.


Event handlers and termination
Event Handlers and Termination

  • Many real-time systems do not terminate

  • However, in general it is necessary to define under what conditions a program terminates

  • In standard Java, threads are classified as being daemon or user threads; the program terminates when all user threads have terminated; the daemon threads are destroyed

IT Students Group.


Event handlers and termination cont
Event Handlers and Termination (cont…)

  • The server threads used to execute asynchronous event handlers can be considered to be daemon threads

  • This means that when all user real-time threads are terminated, the program will still terminate

  • However, where events are bound to happenings in the environment or timers, the program may not execute as the programmer intended

IT Students Group.


Summary
Summary

  • Event-based systems are supported in the RTSJ by the AsyncEvent and AsyncEventHandler class hierarchies

  • Event handlers are schedulable entities and consequently can be given release and scheduling parameters

  • Periodic, one-shot timers along with interrupt handlers are also supported

IT Students Group.


Summary cont
Summary (cont…)

  • The RTSJ allows considerable freedom in the implementation of event handlers

  • Care must be taken with event handlers, as an implementation may use daemon server threads; these may, therefore, be terminated when the programmer does not expect it

IT Students Group.


...THE END...

IT Students Group.


ad