Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Programming R-T Abstractions TSW November 2009 Anders P. Ravn Aalborg University."— 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 HighResolutionTime implements java.lang.Comparable {... public boolean equals(HighResolutionTime time); public final long getMilliseconds(); public final int getNanoseconds(); public void set(HighResolutionTime time); public void set(long millis); public void set(long millis, int nanos); }

5 Time HighResolutionTime AbsoluteTime RelativeTime

6 public class AbsoluteTime extends HighResolutionTime { // various constructor methods including public AbsoluteTime(AbsoluteTime T); public AbsoluteTime(long millis, int nanos);... public final AbsoluteTime add(RelativeTime time); public final RelativeTime subtract(AbsoluteTime time); public final AbsoluteTime subtract(RelativeTime time); } RTSJ Absolute and Relative Time public class RelativeTime extends HighResolutionTime { // various constructor methods including public RelativeTime(long millis, int nanos); 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, AsyncEventHandler overrunHandler, AsyncEventHandler missHandler);... }

10 public class PeriodicParameters extends ReleaseParameters { public PeriodicParameters( HighResolutionTime start, RelativeTime period, RelativeTime cost, RelativeTime deadline, AsyncEventHandler overrunHandler, AsyncEventHandler missHandler); public RelativeTime getPeriod(); public HighResolutionTime getStart(); } RTSJ Periodic Parameters

11 RTSJ Aperiodic- and SporadicParameters public class AperiodicParameters extends ReleaseParameters { public AperiodicParameters(RelativeTime cost, RelativeTime deadline, AsyncEventHandler overrunHandler, AsyncEventHandler missHandler); } public class SporadicParameters extends AperiodicParameters { public SporadicParameters(RelativeTime minInterarrival, RelativeTime cost, RelativeTime deadline, AsyncEventHandler overrunHandler, AsyncEventHandler missHandler); public RelativeTime getMinimumInterarrival(); 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 RelativeTime getEpochOffset(); public AbsoluteTime getTime(); public abstract void getTime(AbsoluteTime time); public abstract RelativeTime getResolution(); 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 AsyncEventHandler BoundAsyncEventHandler RealTimeThread NoHeapRealTimeThread

16 RTSJ AsyncEventHandler public class AsyncEventHandler extends 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 RealtimeThread extends java.lang.Thread implements Schedulable { public RealtimeThread(SchedulingParameters s, ReleaseParameters r);... public static RealtimeThread currentRealtimeThread(); 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 boolean waitForNextPeriod() 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 20

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 } 21

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 } 22

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)); } 23

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 24

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); } 25

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(); } 26

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 ImmortalPhysicalMemory VTMemory

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)


Download ppt "Programming R-T Abstractions TSW November 2009 Anders P. Ravn Aalborg University."

Similar presentations


Ads by Google