EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted...

33
EEL 6897 1 Real-time Java part 2

Transcript of EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted...

Page 1: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 1

Real-time Java part 2

Page 2: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 2

Acknowledgements

• All the lecture slides were adopted from the slides of Andy Wellings

Page 3: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 3

Memory Management ClassesMemoryArea

HeapMemory ImmortalMemoryScopedMemory

LTMemory VTMemory

SizeEstimator

MemoryParametersGarbageCollector

RTSJ class

RTSJ abstract class

Page 4: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 4

Time Values and ClocksHighResolutionTime

RationalTime

AbsoluteTime RelativeTime

Clock

relativeTo

relativeTo

relativeTo

standard Java interface

RTSJ class

RTSJ abstract class

Page 5: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 5

Scheduling in Java

• Java offers no guarantees that the highest priority runnable thread will always be the one executing

• This is because a JVM may be relying on a host operating system to support its threads; some of these systems may not support pre-emptive priority-based scheduling

• Java only defines 10 priority levels and an implementation is free to map these priorities onto a more restricted host operating system’s priority range if necessary

• The weak definition of scheduling and the restricted range of priorities means that Java programs lacks predictability and, hence, Java’s use for real-time systems implementation is severely limited

Page 6: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 6

Schedulable Objects

• RTSJ generalizes the entities that can be scheduled from threads to the notion of schedulable objects

• A schedulable object is one which implements the Schedulable interface

• Each schedulable object must also indicate its specific – release requirement (that is, when it should become runnable), – memory requirements (for example, the rate at which the object will

allocate memory on the heap)

– scheduling requirements (for example, the priority at which it should be scheduled)

Page 7: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 7

Release Parameters• Scheduling theories often identify three types of releases:

– periodic (released on a regular basis),

– aperiodic (released at random) and

– sporadic (released irregularly but with a minimum time between each release)

• All release parameters have a cost and a deadline relative time values

– cost is the amount of cpu time needed every release

– deadline is the time at which the current release must have finished

• PeriodicParameters also include the start time for the first release and the time interval (period) between releases.

• SporadicParameter include the minimum inter-arrival time between releases

• For aperiodic schedulable objects, it is possible to limit the amount of time the schedules gives them in a particular period using ProcessingGroupParameters

Page 8: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 8

Scheduling Parameters

• Scheduling parameters are used by a scheduler to determine which object is currently the most eligible for execution

• The abstract class SchedulingParameters provides the root class from which a range of possible scheduling criteria can be expressed

• The RTSJ defines only one criterion which is based on priority

• High numerical values for priority represent high execution eligibilities.

• ImportanceParameters allow an additional numerical scheduling metric to be assigned; it is a subclass of the PriorityParameters

Page 9: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 9

Schedulers

• The scheduler is responsible for scheduling its associate schedulable objects

• RTSJ explicitly supports priority-based scheduling via the PriorityScheduler(a fixed pre-emptive priority-based scheduling with 28 unique priority levels)

• Scheduler is an abstract class with PriorityScheduler a defined subclass

• This allows an implementation to provide, say, an Earliest-Deadline-First scheduler

• Any attempt by the application to set the scheduler for its threads has to be checked to ensure that it has the appropriate security permissions

Page 10: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 10

Scheduling-related Classes

ReleaseParameters

PeriodicParameters AperiodicParameters

SporadicParameters

SchedulingParameters

ProcessingGroupParameters MemoryParameters

ImportanceParameters

Scheduler

PriorityParameters

PriorityScheduler

uses

usesuses

usesRealtimeSecurity

checks

Page 11: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 11

Meeting Deadlines

• A real-time system needs to– predict whether a set of application objects will meet their deadlines, and

– report a missed its deadline, a cost overrun, or minimum inter-arrival time violation

• For some systems it is possible to predict offline whether the application will meet its deadline

• For other systems, some form of on-line analysis is required

• The RTSJ provide the hooks for on-line analysis

• Irrespective of whether or how prediction has been formed, it is necessary to report overruns etc

• The RTSJ provides an asynchronous event handling mechanism for this purpose

Page 12: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 12

Real-Time Threads

• A schedulable object

• More than an extension of java.lang.thread

• No heap version ensure no access to the heap and therefore independence from garbage collection

Page 13: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 13

Real-time Threads

T hre adRunn a b le

S che du la b le

R ea lt im eT h re ad

Sc hedu l ing Pa ram ete rs

R elea se Pa ra me te rs

Sc hedu ler

Proc ess ing G ro up

M e mor yA re a

Me m ory Pa ram e te rs

Pa ram e te rs

i m p le m en t s

e x te n d s

h a s

e n te rs

h a s

h as

h ash a s

im p lem e n ts

N o H e apR ea lt im eT h re ad

standard Java interface

RTSJ class RTSJ abstract class or interface

sta nd ar d Jav a c la ss

Page 14: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 14

Asynchronous Event Handling

• Threads and real-time threads are the appropriate abstractions to use to represent concurrent activities that have a significant life history

• It is also necessary to respond to events that happen asynchronously to a thread’s activity

• These events may be happenings in the environment of an embedded system or notifications received from internal activities within the program

• It always possible to have extra threads which wait for these events but this is inefficient

• From a real-time perspective, events may require their handlers to respond within a deadline; hence, more control is needed over the order in which events are handled

• The RTSJ generalizes Java event handlers to be schedulable entities

Page 15: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 15

Async Events and their Handlers

Schedulable

AsyncEventHandler SchedulingParameters

ReleaseParameters

ProcessingGroup

MemoryParameters

Parameters

has

has

has

has

implements

AsyncEvent

hand les

*

*

Scheduler

has

Page 16: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 16

Handlers and Real-Time Threads

• In practice, the real-time JVM will usually dynamically associate an event handler with a real-time thread when the handler is released for execution

• To avoid this overhead, it is possible to specify that the handler must be permanently bound to a real-time thread

• Each AsyncEvent can have one or more handlers and the same handler can be associated with more than one event

• When the event occurs, all the handlers associated with the event are released for execution according to their SchedulingParameters

Page 17: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 17

More on Async Events

• Asynchronous events can be associated with interrupts or POSIX signals (if supported by the underlying operating system) or they can be linked to a timer

• The timer will cause the event to fire when a specified time (relative to a particular clock) expires

• This can be a one shot firing or a periodic firing

Page 18: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 18

AsynEvent related Classses

Clock

AsyncEventAsyncEventHandler

Timer

PeriodicTimer OneSh otTimer

BoundAsyncEventHandler

handles

uses

interrupt

fire* *

POSIXSignalHandler

usesassociate with

Page 19: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 19

Asynchronous Transfer of Control

• Asynchronous events allow the program to respond in a timely fashion to a condition that has been detected by the program or the environment

• They do not allow a particular schedulable object to be directly informed

• In many applications, the only form of asynchronous transfer of control that a real-time thread needs is a request for it to terminate itself

• Consequently, languages and operating systems typically provide a kill or abort facility

• For real-time systems, this approach is too heavy handed; instead what is required if for the schedulable object to stop what it is currently doing and to begin executing an alternative algorithm

Page 20: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 20

ATC I

• In standard Java, it is the interrupt mechanism which attempts to provide a form of asynchronous transfer of control

• The mechanism does not support timely response to the “interrupt”

• Instead, a running thread has to poll for notification

• This delay is deemed unacceptable for real-time systems

• For these reasons, the RTSJ provides an alternative approach for interrupting a schedulable object, using asynchronous transfer of control (ATC)

Page 21: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 21

ATC II

The ATC model is based on the following principles

• A schedulable object must explicitly indicate that it is prepared to allow an ATC to be delivered

• By default, schedulable object will have ATCs deferred

• The execution of synchronized methods and statements always defers the delivery of an ATC

• An ATC is a non-returnable transfer of control

Page 22: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 22

ATC III

• The RTSJ ATC model is integrated with the Java exception handling facility

• An AsynchronouslyInterruptedException (AIE) class defines the ATC event

• A method that is prepared to allow an AIE indicate so via a throws AsynchronouslyInterruptedException in its declaration

• The Interruptible interface provides the link between the AIE class and the object executing an interruptible method

Page 23: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 23

The ATC Classes and Interface

In terru ptible

InterruptedE xcep tion

Asynchronously In terruptedExcept ionuses

doInterruptible

fire

RTSJ class

RTSJ interface

Java interface

Timed

Page 24: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 24

Synchronization• Key to predicting the behaviour of multi-threaded programs

is understanding how threads (and other schedulable objects) communicate and synchronize

• Java provides mutually exclusive access to shared data via a monitor-like construct

• All synchronization mechanisms which are based on mutual exclusion suffer from priority inversion

• The problem of priority inversion and its solution priority inheritance is now a well-researched area of real-time systems

• There are a variety of priority inheritance algorithms; the RTSJ explicitly support two: simple priority inheritance and priority ceiling emulation inheritance (sometimes called immediate ceiling priority inheritance or priority protect inheritance protocol)

Page 25: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 25

RTSJ Classes for Priority Inheritance

MonitorControl

PriorityInher itance PriorityCeilingEmulation

Page 26: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 26

Priority Inheritance and Garbage Collection

• If real-time threads want to communicate with non real-time threads then interaction with garbage collection must be considered

• It is necessary to try to avoid the situation where a non real-time thread has entered into a mutual exclusion zone shared with a real-time thread

• The actions of the non real-time thread results in garbage collection being formed

• The real-time thread then pre-empts the garbage collector but is unable to enter the mutual exclusion zone

• It must now wait for the garbage collection to finish and the non real-time thread to leave the zone

Page 27: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 27

Wait Free Communication

• One way of avoiding unpredictable interactions with the garbage collector is to provide a non-blocking communication mechanism for use between non real-time threads and real-time threads

• The RTSJ provides three wait-free non blocking classes to help facilitate this communication:

– WaitFreeWriteQueue: a bounded buffer; the read operation is synchronized; the write operation is not synchronized

– WaitFreeReadQueue: a bounded buffer; the write operation on the buffer is synchronized; the read operation is not; the reader can request to be notified (via an asynchronous event) when data arrives

– WaitFreeDequeue: a bounded buffer which allows both blocking and non-blocking read and write operations

Page 28: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 28

Wait Free Classses

WaitFreeDequeueWaitFreeWriteQueue WaitFreeReadQueueuses uses

AsyncEventHandler

uses

Page 29: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 29

Physical and Raw Memory Classes

• Mechanisms that allow objects to be placed into areas of memory that have particular properties or access requirements; eg DMA memory, shared memory

– the RTSJ provides extensions of the MemoryArea to provide the physical memory counterparts to the linear-time, variable-time and immortal memory classes

• Mechanisms that allow the programmer to access raw memory locations that are being used to interface to the outside world; for example memory-mapped input output device registers

– the RTSJ provides classes which can access raw memory in terms of reading and writing Java variables or arrays of primitive data types (int, long, float etc.)

• The implementation of both these physical and raw memory classes can assume the existence of a PhysicalMemory-Manager class and the PhysicalMemoryTypeFilter interface

Page 30: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 30

Physical and Raw Memory Classes II

PhysicalMemoryManager

ImmortalPhysicalMemory

ScopedMemory

PhysicalMemoryTypeFilter

LTPhysicalMemory VTPhysicalMemory

RawMemoryFloatAccessRawMemoryAccess

uses usesuses

AsyncEventHandleruses

registers uses uses

RealtimeSecurityuses

Implementation-defined

implements

uses

MemoryArea

Page 31: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 31

NIST Requirements Review I

• Fixed priority and round robin scheduling — RTSJ supports fixed priority scheduler and allows implementations to provide other schedulers

• Mutual exclusion locking (avoiding priority inversion) — the RTSJ supports priority inheritance algorithms of synchronized objects and requires all RTSJ implementations to avoid priority inversion

• Inter-thread communication (e.g. semaphores) — schedulable objects can communicate using the standard Java mechanisms

• User-defined interrupt handlers and device drivers (including the ability to manage interrupts; e.g., enabling and disabling) — the RTSJ allows interrupts to be associated with asynchronous events

• Timeouts and aborts on running threads — the RTSJ allows asynchronous transfer of controls via asynchronous exceptions; they can be event triggered or time triggered

Page 32: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 32

NIST Requirements Review II

• A framework for finding available profiles — the RTSJ does not explicitly address the issues of profiles

• Distributed real-time systems are not addressed

• Bounded pre-emption latency on any garbage collection — supported by the GarbageCollector class

• A well-defined model for real-time Java threads — supported by the RealtimeThread and NoHeapRealtime-Thread classes

• Communication and synchronization between real-time and non real-time threads — supported by the wait free communication classes

• Mechanisms for handling internal and external asynchronous events — supported by the AsyncEvent, AsyncEventHandler and POSIXSignalhandler classes

Page 33: EEL 6897 1 Real-time Java part 2. EEL 6897 2 Acknowledgements All the lecture slides were adopted from the slides of Andy Wellings.

EEL 6897 33

NIST Requirements Review III

• Asynchronous thread termination — supported by the AsynchronouslyInterruptedException class and the Interruptible interface

• Mutual exclusion without blocking — supported by the wait free communication classes

• The ability to determine whether the running thread is real-time or non real-time — supported by the RealtimeThread class

• A well-define relationship between real-time and non real-time threads — supported by the real-time thread, the scheduling and memory management modelsOverall then, it can be seen that the RTSJ addresses all the NIST top level requirements in some form or other. It is, however, a little weak in its support for profiles.