1 / 32

Programming R-T Abstractions

Programming R-T Abstractions. TSW November 2009 Anders P. Ravn Aalborg University. Characteristics of a RTS. Timing Constraints Concurrent control of separate components Dependability Requirements Facilities to interact with special purpose hardware.

chars
Download Presentation

Programming R-T Abstractions

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming R-T Abstractions TSW November 2009 Anders P. Ravn Aalborg University

  2. Characteristics of a RTS • Timing Constraints • Concurrent control of separate components • Dependability Requirements • Facilities to interact with special purpose hardware

  3. Timing Constraints • Notion of time • Specifying timing constraints: Temporal scopes • Notion of Event • Clocks, delays and timeouts

  4. RT Java Time Types public abstract class HighResolutionTimeimplements java.lang.Comparable { ... public booleanequals(HighResolutionTime time); public final long getMilliseconds(); public final intgetNanoseconds(); public void set(HighResolutionTime time); public void set(long millis); public void set(long millis, intnanos); }

  5. Time HighResolutionTime AbsoluteTime RelativeTime

  6. RTSJ Absolute and Relative Time public class AbsoluteTimeextends HighResolutionTime { // various constructor methods including public AbsoluteTime(AbsoluteTime T); public AbsoluteTime(long millis, intnanos); ... public final AbsoluteTime add(RelativeTime time); public final RelativeTime subtract(AbsoluteTime time); public final AbsoluteTime subtract(RelativeTime time); } public class RelativeTimeextends HighResolutionTime { // various constructor methods including public RelativeTime(long millis, intnanos); public RelativeTime(RelativeTime time); ... public final RelativeTime add(RelativeTime time); public final RelativeTime subtract(RelativeTime time); }

  7. Temporal scope • C: maximum execution time • D: deadline for completion of execution • T: minimum time between releases (period) • S: minimum delay before start of execution

  8. RTSJ ReleaseParameters ReleaseParameters PeriodicParameters AperiodicParameters SporadicParameters

  9. RTSJ ReleaseParameters public abstract class ReleaseParameters { protected ReleaseParameters( RelativeTime cost, RelativeTime deadline, AsyncEventHandleroverrunHandler, AsyncEventHandlermissHandler); ... }

  10. RTSJ Periodic Parameters public class PeriodicParametersextends ReleaseParameters { public PeriodicParameters( HighResolutionTime start, RelativeTime period, RelativeTime cost, RelativeTime deadline, AsyncEventHandleroverrunHandler, AsyncEventHandlermissHandler); public RelativeTimegetPeriod(); public HighResolutionTimegetStart(); }

  11. RTSJ Aperiodic- and SporadicParameters public class AperiodicParametersextends ReleaseParameters { public AperiodicParameters(RelativeTime cost, RelativeTime deadline, AsyncEventHandleroverrunHandler, AsyncEventHandlermissHandler); } public class SporadicParametersextends AperiodicParameters { public SporadicParameters(RelativeTimeminInterarrival, RelativeTime cost, RelativeTime deadline, AsyncEventHandleroverrunHandler, AsyncEventHandlermissHandler); public RelativeTimegetMinimumInterarrival(); public void setMinimumInterarrival(RelativeTime minimum); }

  12. RTSJ AsyncEvent public class AsyncEvent { public AsyncEvent(); ... public void addHandler(AsyncEventHandler handler); public void fire(); ... } An asynchronous event can have a set of handlers associated with it, and when the event occurs, the fireCount of each handler is incremented, and the handlers are released.

  13. RTSJ Clock public abstract class Clock { public Clock(); public static Clock getRealtimeClock(); public abstract RelativeTimegetEpochOffset(); public AbsoluteTimegetTime(); public abstract void getTime(AbsoluteTime time); public abstract RelativeTimegetResolution(); public abstract void setResolution(RelativeTime resolution); }

  14. Characteristics of a RTS • Timing Constraints • Concurrent control of separate components • Dependability Requirements • Facilities to interact with special purpose hardware

  15. RTSJ Schedulable «interface» Schedulable RealTimeThread AsyncEventHandler BoundAsyncEventHandler NoHeapRealTimeThread

  16. RTSJ AsyncEventHandler public class AsyncEventHandlerextends java.lang.Object implements Schedulable { public AsyncEventHandler( SchedulingParameters scheduling, ReleaseParameters release, MemoryArea area); ... public void handleAsyncEvent(); // the program to be executed ... }

  17. RTSJ RealTimeThread public class RealtimeThreadextends java.lang.Thread implements Schedulable { public RealtimeThread(SchedulingParameters s, ReleaseParameters r); . . . . . . public static RealtimeThreadcurrentRealtimeThread(); public synchronized void schedulePeriodic(); // add the thread to the list of schedulable objects public synchronized void deschedulePeriodic(); // remove the thread from the list of schedulable object // when it next issues a waitForNextPeriod public booleanwaitForNextPeriod() throws ...; public synchronized void interrupt(); // overrides java.lang.Thread.interrupt() public static void sleep(Clock c, HighResolutionTime time) throws ...; }

  18. Ravenscar Periodic Thread

  19. Asynchronous Event and Handler

  20. A Real-Time Application • Periodic Event Handlers • Aperiodic Event Handlers collected in a mission • Mission Handler Each handler • has a Memory • is Scheduled

  21. Periodic handler class Periodic extends PeriodicEventHandler { protected Periodic(.., PeriodicParameters pp, Scheduler scheduler, MemoryArea memory); public void handleEvent() { // the logic to be executed every period } }

  22. Aperiodic handler class Aperiodic extends AperiodicEventHandler { protected Aperiodic(.., AperiodicParameters ap, Scheduler scheduler, MemoryArea memory); public void handleEvent() { // the logic to be executed when an event occurs } }

  23. A simple mission public class Basic extends Mission { protected Basic(.., AperiodicParameters ap, Scheduler scheduler, MemoryArea memoryArea) { ... // initialization } public static void main (String[] args) { new Basic( null, null, new CyclicScheduler(), new LTMemory(10*1024)); } }

  24. …The mission addToMission( new Periodic( null, pp, getScheduler(), new LTMemory(1024))); addToMission( new Periodic( null, pp, getScheduler(), new LTMemory(1024))); ... add(); // mission to its scheduler

  25. Complex mission private Mission[] mission; private int active = 0; static AperiodicEvent event; public ThreeSequentialMissions(...) { mission = new Mission[3]; // set up the three missions mission[0] = new Mission(...); // add handlers for mission 0 // including the mission termination ... mission[1] = new Mission(); ... // start the first mission mission[active].add(); event = new AperiodicEvent(this); }

  26. Changing mission private Mission[] mission; private int active = 0; static AperiodicEvent event; public ThreeSequentialMissions(...) { ... } public void handleEvent() { mission[active].remove(); active = (active + 1) % mission.length; mission[active].add(); }

  27. RTSJ Scheduler Scheduler PriorityScheduler Class which represents the required (by the RTSJ) priority-based scheduler. The default instance is the base scheduler which does fixed priority, preemptive scheduling.

  28. RTSJ SchedulingParameters public class PriorityParameters { public PriorityParameters(int priority); ... } public class ImportanceParameters { public PriorityParameters(int priority, int importance); ... } Importance is an additional scheduling metric that may be used by some priority-based scheduling algorithms during overload conditions to differentiate execution order among threads of the same priority.

  29. RTSJ PriorityScheduler public class PriorityScheduler extends Scheduler { public static PriorityScheduler instance(); ... protected boolean addToFeasibility(Schedulable schedulable); public boolean isFeasible(); public boolean SetIfFeasible( Schedulable schedulable, ReleaseParameters release, MemoryParameters memory); }

  30. RTSJ Memory Management MemoryArea «singleton» HeapMemory ScopedMemory ImmortalMemory LTMemory VTMemory ImmortalPhysicalMemory

  31. RTSJ MemoryArea public abstract class MemoryArea { protected MemoryArea(long sizeInBytes); public void enter(java.lang.Runnable logic); // associate this memory area to the current thread // for the duration of the logic.run method public static MemoryArea getMemoryArea(java.lang.Object object); // get the memory area associated with the object public long memoryConsumed(); // number of bytes consumed in this memory area public long memoryRemaining(); // number of bytes remaining . . . public synchronized java.lang.Object newInstance( java.lang.Class type)throws IllegalAccessException, InstantiationException, OutOfMemoryError; // allocate an object public long size(); // the size of the memory area }

  32. Simplicity – Static Schedules • Cyclic Executive • Time Triggered Architecture (Kopetz) • Synchronous Languages (Esterel) • Giotto (Henzinger)

More Related