rt java tutorial - gcar - grupo de controle automação e …cpereira/real_time_java1.ppt · ppt...
TRANSCRIPT
![Page 1: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/1.jpg)
Real-Time Java
Ron K. Cytron and Christopher D. GillWashington University in Saint Louis
Department of Computer Science
June 2001
Center for Distributed Object ComputingDepartment of Computer Science
Washington University
Funded by The National Science Foundation under grant 0081214
DARPA under contract F33615-00-C-1697
Thanks toAngelo Corsaro, Morgan Deters, Nicholas Leidenfrost Washington University
David Sharp and Jim Urnes The Boeing Company
![Page 2: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/2.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Tutorial Objectives
• Real-time programming issues• Context for RT Java
– Why is plain Java not good enough?– Why should real-time programmers use Java?
• RT Java– Specification– Use– Examples
• State of RT Java implementations• Research issues for RT Java
![Page 3: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/3.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Tutorial Outline
• Real-time applications– Cuckoo Clock
• Real-Time Specification for Java (RTSJ)– Guiding principles– Specification
• Threads• Memory Model• Asynchronous Events• ATC
![Page 4: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/4.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Example: Cuckoo Clock
• Synchronous events– Time annunciation (periodic)– Wake-up alarm (aperiodic)
• Asynchronous events– Reset to 12 noon– What time is it?– Pendulum adjustment
![Page 5: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/5.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Sweep-second hand ticks every second
Digital Cuckoo Clock
![Page 6: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/6.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 7: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/7.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 8: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/8.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 9: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/9.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
ChirpChirpChirpChirp
Quail chirps 4 times at the hour
Digital Cuckoo Clock
![Page 10: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/10.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Cuckoo
Cuckoo
Cuckoo
Quail chirps 4 times at the hour
Then cuckoo sounds the hour
Digital Cuckoo Clock
![Page 11: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/11.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 12: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/12.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Chirp
At quarter-past, quail chirps once
Digital Cuckoo Clock
![Page 13: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/13.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 14: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/14.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
ChirpChirp
At half-past, quail chirps twice
Digital Cuckoo Clock
![Page 15: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/15.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Cuckoo
At half-past, quail chirps twice
Then cuckoo sounds once
Digital Cuckoo Clock
![Page 16: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/16.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 17: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/17.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
ChirpChirpChirp
At quarter-till, quail chirps thrice
Digital Cuckoo Clock
![Page 18: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/18.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 19: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/19.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 20: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/20.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
ChirpChirpChirpChirp
Digital Cuckoo Clock
![Page 21: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/21.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Cuckoo
Cuckoo
Cuckoo
Cuckoo
Digital Cuckoo Clock
![Page 22: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/22.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Digital Cuckoo Clock
![Page 23: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/23.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Push the red button to get most recent sequence
Digital Cuckoo Clock
What time is it?
![Page 24: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/24.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
ChirpChirpChirpChirp
Digital Cuckoo Clock
What time is it?
![Page 25: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/25.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Cuckoo
Cuckoo
Cuckoo
Cuckoo
Cuckoo
Digital Cuckoo Clock
What time is it?
![Page 26: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/26.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
6
39
12
Push the green button to reset to noon
Digital Cuckoo Clock
What time is it?
Reset to 12 PM
![Page 27: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/27.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Digital Cuckoo Clock
What time is it?
Reset to 12 PM6
39
12
![Page 28: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/28.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Java for Real Time
• Threads with priorities—for activities with– Different time scales– Different importance
• Synchronization– Safety– Sequencing
• Efficient exception mechanism
![Page 29: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/29.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Threads and Real-Time
• Multi-threading is useful to decouple different activities– Active objects, request
queues, synch/asynch
• Must ensure resource usage by non-critical activities does not interfere with needs of critical activities
• However, work in different threads competes for CPU time and memory resources
![Page 30: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/30.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Thread seconds = new Thread() {public void run() {
while (true) {waitOneSec();advanceSecondHand();
}}
};
Thread alarm = new Thread() {public void run() {
waitUntilAlarmtime();soundAlarm();
}};
seconds.start(); alarm.start();
Java Threads• Subclass Thread to
create a Runnable object
• Invoke start() run() executes asynchronously
![Page 31: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/31.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
public void SecondHand(){speaker.utter(“tick”);
}
public void soundAlarm() {speaker.utter(“Wach’ auf!!”);
}
public synchronized void utter(String s) {/* says s on the speaker */
}
Java Synchronization• What about safety?
• Only one thread can be active in an object’s synchronized methods
![Page 32: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/32.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
synchronized (obj) {/* code block */
}
synchronized (obj) {/* code block */
}
Java Synchronization• Alternatively, code
outside an object can synchronize by obtaining a lock on that object
• The two blocks now have mutual exclusion
![Page 33: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/33.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Synchronization and Real-Time• Risk of unbounded
priority inversions– Canonical high, low, middle
scenario• Priorities can uncover or
exacerbate “bad” executions of existing race conditions– Horstmann & Cornell,
Core Java 2• Define lock priority
semantics using– setMonitorControl
sync
hron
ized
blo
ck
blocked at guard
running outside block
waiting (blocked) ona condition variable
running inside block
priority key: high lowmiddle
![Page 34: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/34.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design of the Cuckoo Clock
• Design perspectives– From the outside, we see three independent activities– Looking inside, we see one mechanism driving the
whole system• Design strategies
– Bottom-up, liveness-based using thread adapters– Top-down, safety-based using synchronization
Lea, Concurrent Programming in Java
![Page 35: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/35.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Cuckoo Clock Design from the “Outside”
• Independently acting entities– Sweep second-hand– Quail– Cuckoo
• Leads to three recurring tasks– Every second
• Generate second-hand advance– Every 15 minutes
• Generate quail action– Every 30 minutes
• Generate cuckoo action
![Page 36: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/36.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
In Java, Each Task is a Thread
SecondHand Quail Cuckoo
• Each thread executes independently
![Page 37: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/37.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Second Handpublic SecondHand extends Thread {
public void run() {
while (true) {
/* tick—advance the second hand */
try {Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}}
![Page 38: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/38.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
public SecondHand extends Thread {
public void run() {
while (true) {
/* tick */
try {Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}}
Problems?
•Accuracy•Drift from missed deadline
![Page 39: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/39.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Context for RTSJ
• Big investment already in Java– Application developers– Java implementers
• Needs of the RT community– Predictable execution– Time to market
![Page 40: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/40.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility Pros
• If you know Java you know RT Java
• Wider acceptance
Cons• RT features introduced
by new classes, methods, instead of clear syntax
• Can write programs that require runtime tests
![Page 41: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/41.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility• Appropriate for any Java
environment
Pros• J2ME for small platforms• Enterprise edition for
servers
Cons• Can a large range of
platforms be addressed by one standard?
![Page 42: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/42.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility• Appropriate for any Java
edition• Support current practice
and leading edge
Pros• Nice idea
Cons• Do they really do this?
![Page 43: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/43.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility• Appropriate for any Java
edition• Support current practice
and leading edge• Predictable execution
Pros• RTSJ’s “prime directive”• Necessary for real-time
applications
Cons• Baby thrown out with
bath water (no gc)• Not the same as write-
once run-anywhere
![Page 44: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/44.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility• Appropriate for any Java
edition• Support current practice
and leading edge• Predictable execution• Implementation details
left vague
Pros• Allows for invention
Cons• Surprisingly
underspecified for Java• Write once carefully, run
anywhere conditionally (Dave Hardin)
![Page 45: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/45.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Guiding Principles• Backward compatibility• Appropriate for any Java edition• Support current practice and leading edge• Predictable execution• Implementation details left vague
I expect the RTSJ to become the first real-time programming language to be commercially and
technologically successful.Doug Jensen, 2000
![Page 46: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/46.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RTSJ Areas
StorageManagement Threads Time
Interruptible I/O Scheduler Timers
AsynchronousTransfer
of Control
Synchronizationand Sharing
AsynchronousEvent Handler
![Page 47: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/47.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Threading Issues• Threads compete for CPU• Some activities are more
important than others• Java thread priorities are a
good start, but– Relationship to the garbage
collector is uncertain– Priority inversion allowed by
the specification• Priority may be the wrong
abstraction– Concept of time is
fundamental
![Page 48: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/48.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Threading IssuesThread
SecondHand
Quail Cuckoo
SecondHand seconds = new SecondHand();
Quail quail = new Quail();
Cuckoo
cuckoo = new Cuckoo();
seconds.start ();quail.start ();cuckoo.start ();
• Threads compete for CPU• Some activities are more
important than others• Java thread priorities are a
good start, but– Relationship to the garbage
collector is uncertain– Priority inversion allowed by
the specification• Priority may be the wrong
abstraction– Concept of time is
fundamental
![Page 49: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/49.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Scheduling Issues• Priorities
– Need sufficient unique priority levels
• Preemptive scheduling– Need well defined and
appropriate semantics• Fairness among threads
is not usually a Real-Time concern (FIFO vs. RR)– But may be useful
• Feasibility– Admission control,
certification/testing
sche
dule
r
blocked
runnable
executing
![Page 50: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/50.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Cuckoo Clock Design from the “Outside”
• Independently acting entities– Sweep second-hand– Quail– Cuckoo
• Leads to three recurring tasks– Every second
• Generate second-hand advance– Every 15 minutes
• Generate quail action– Every 30 minutes
• Generate cuckoo action
![Page 51: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/51.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
In RTSJ, Each Task is a RealtimeThread
SecondHand Quail Cuckoo
• Like a Thread, RealtimeThread executes independently
• Can associate real-time parameters– SchedulingParameters (for priority)– ReleaseParameters (for periodic execution)
![Page 52: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/52.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Independent RealtimeThreads
SecondHand Quail Cuckoo
• How do we coordinate these threads?• Quail should sound before Cuckoo• Second Hand should advance before Quail
![Page 53: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/53.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Independent RealtimeThreads
SecondHand Quail Cuckoo
• How do we coordinate these threads?• Quail should sound before Cuckoo• Second Hand should advance before Quail
• Use priorities to order the three threads’ events?
HighPriority
MediumPriority
LowPriority
![Page 54: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/54.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Independent RealtimeThreads
SecondHand Quail Cuckoo
• Won’t work!• Multiple processors would schedule threads
concurrently• Preemption may take time
• Solution?
HighPriority
MediumPriority
LowPriority
![Page 55: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/55.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Independent RealtimeThreads
SecondHand Quail Cuckoo
Use PeriodicParameters• SecondHand—release on the second• Quail—release 10 ms after SecondHand• Cuckoo—release 20 ms after SecondHand
![Page 56: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/56.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Class PeriodicParameters• Specify time properties
– Start (relative or absolute)
![Page 57: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/57.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Class PeriodicParameters• Specify time properties
– Start– Period (relative)
![Page 58: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/58.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Class PeriodicParameters• Specify time properties
– Start– Period– Cost (relative)
![Page 59: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/59.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Class PeriodicParameters• Specify time properties
– Start – Period – Cost – Deadline (relative)
![Page 60: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/60.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Using PeriodicParameters
SecondHand Quail Cuckoo
3:00:00
3:00:01
![Page 61: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/61.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Specifying PeriodicParameterspublic SecondHand extends RealtimeThread {
public SecondHand() {super();setReleaseParameters(new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */));}
}
![Page 62: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/62.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
• Release parameters advertise how threads are projected to behave
• However, differences between projected and actual behavior can lead to unexpected failures
• Need to be able to detect (and if possible handle) release failures– Cost overruns– Deadline misses
Time
actual execution cost
deadline
execution finished (late)
projected execution cost
Release Failures
![Page 63: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/63.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Class PeriodicParameters• Specify time properties
– Start – Period– Cost– Deadline
• Specify “oops” handlers– OverrunHandler– MissHandler
![Page 64: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/64.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Specifying PeriodicParameterspublic SecondHand extends RealtimeThread {
public SecondHand( AsyncEventHandler overrun,AsyncEventHandler miss) {super();setReleaseParameters(new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */overrun, miss /* handlers */));}
}
![Page 65: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/65.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Can Success Be Guaranteed?
Use PeriodicParameters and PriorityScheduler• Each RealTimeThread is submitted to a Scheduler• Feasible system scheduling deadlines guaranteed
Scheduler
SecondHand Quail Cuckoo
Yes or No
![Page 66: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/66.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Feasibility in RTSJ
SecondHand seconds = new SecondHand();Quail quail = new Quail();Cuckoo cuckoo = new Cuckoo();
Scheduler boss = Scheduler.getDefaultScheduler();
boss.addToFeasibility(seconds);boss.addToFeasibility(quail);boss.addToFeasibility(cuckoo);
if (!boss.isFeasibile())throw new Error(“Cannot accommodate threads”);
![Page 67: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/67.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Feasibility Testing
• Success is a function of– Tasks’ computational requirements– Scheduler policy– Platform speed
• Cannot get the same result everywhere• What if the system is infeasible?
– Give up– If running locally, apply more resources– Adapt
• Lower the cost or frequency• Increase flexibility (RationalTime vs. RelativeTime)
![Page 68: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/68.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Implementing Second Handpublic SecondHand extends RealtimeThread {
public SecondHand() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
}
![Page 69: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/69.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Implementing Second Handpublic SecondHand extends RealtimeThread {
public SecondHand() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
public void run() {while (true) {
/* tick */waitForNextPeriod();
}}
}
![Page 70: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/70.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Synchronization
• How do we coordinate the output of the three threads?– Ordering is dictated by release times– What if clock is “quailing” when cuckoo wants to
speak?• RT Java provides a wait-free queue• We adapt WaitFreeDequeue to make an EventSequencer
![Page 71: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/71.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• EventSequencer
– Runs in its own thread– Thread-safe, built upon
WaitFreeDequeue– Blocks until an event
arrives• Half-Sync / Half-Async patttern
[Schmidt and Cranor, 1996]
EventSequencer
Events
Sequence
appendEvent
![Page 72: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/72.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventSequencerpublic class EventSequencer extends RealtimeThread {
private WaitFreeDequeue queue;
public EventSequencer() {queue = new WaitFreeDequeue();start();
}
private Event dequeue() { return (Event) queue.blockingRead ();
}
public void enqueue(Event e) {queue.nonBlockingWrite (e);}
public void run() {while (true) {
dequeue().doEvent();}
}}
![Page 73: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/73.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Cuckoo Clock Design from the “Inside”
• One independently acting activity (pendulum)• One component drives another
– Pendulum drives second hand– Second hand drives quail (period=900)– Quail drives cuckoo (period=2)
• Leads to one recurring task– 10 ms pendulum
![Page 74: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/74.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
![Page 75: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/75.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
![Page 76: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/76.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
![Page 77: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/77.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
![Page 78: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/78.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
bing!
![Page 79: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/79.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
click
![Page 80: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/80.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• Cog
– Connects to another Cog– Turns period times then
turns the connected cog once
click
![Page 81: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/81.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Design• ClockAction—abstract
– Represents something connected to a Cog.
– Can perform an action when the cog moves
– Uses the EventSequencer to sequence output
ClockAction
appendEvent(…)
Quail
SecondHand Cuckoo
![Page 82: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/82.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Second Handpublic class SecondHand extends ClockAction {
public SecondHand (EventSequencer seq) {super (seq);
}
public void perform () {appendEvent (new Event (this) {
public void doEvent () {System.out.println(“Tick");
}});
}
}
![Page 83: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/83.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Quailpublic class Quail extends ClockAction {
int quarterHours = 0;public Quail (EventSequencer seq) {super (seq);}
public void perform () {appendEvent (new Event (this) {
public void doEvent () {for (int i=0; i<quarterHours+1; ++i)
System.out.print ("Chirp! ");System.out.print('\n');quarterHours = (quarterHours + 1) % 4;
}});
}}
![Page 84: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/84.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RTSJ Areas
StorageManagement Threads Time
Interruptible I/O Scheduler Timers
AsynchronousTransfer
of Control
Synchronizationand Sharing
AsynchronousEvent Handler
![Page 85: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/85.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Time, Timers, and Handlers• Precision issue• Kinds of time
– Absolute– Relative– Rational
• Can associate timers with handlers– AsyncEventHandler (AEH) invocation– Another way to engineer periodicity
• Handlers can also be used other ways– Cost overrun and deadline miss handlers– One-shot “what time is it” button– One-shot “reset to noon” button
![Page 86: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/86.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Threads vs. Handlers in Design
• Threads can be made periodic, but then…– More like co-routines– One-shot buttons: how?
• Can unify temporally coupled actions in one thread (e.g., pendulum model)– Can handle one-shot buttons– But, no automatic feasibility test
(must provide separately)• Async Event Handlers
– Intermediate design alternative– Offers looser coupling of objects– Supports RTSJ bells & whistles
(e.g., scheduler feasibility test)
programstart
buttonpush
![Page 87: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/87.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Now Each Object Extends AsyncEventHandler (which also implements
Schedulable)
SecondHand Quail Cuckoo
• Async Event Handlers (AEHs) are also dispatched independently
• AEHs can associate real-time parameters, too– SchedulingParameters (for priority)– ReleaseParameters (for periodic execution)
eventstimers
handlers
![Page 88: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/88.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Second Hand (Using Threads)public SecondHand extends RealtimeThread {
public SecondHand() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
public void run() {while (true) {
/* tick */waitForNextPeriod();
}}
}
![Page 89: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/89.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Second Hand (Using Handlers)public SecondHand extends AsyncEventHandler {
public SecondHand() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start */new RelativeTime(1000,0), /* period */ new RelativeTime(5,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
public void handleAsyncEvent () {// while (true) {
/* tick */// waitForNextPeriod();// }
}}
(aspect?)
![Page 90: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/90.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Quail (Using Handlers)public Quail extends AsyncEventHandler {
public Quail() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(10,0), /* start */new RelativeTime(900000,0), /* period */ new RelativeTime(50,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
public void handleAsyncEvent() {
/* Chirp */
}}
![Page 91: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/91.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Cuckoo (Using Handlers)public Cuckoo extends AsyncEventHandler {
public Cuckoo() {super();setReleaseParameters(
new PeriodicParameters(new RelativeTime(20,0), /* start */new RelativeTime(1800000,0), /* period */ new RelativeTime(100,0), /* cost */new RelativeTime(500,0), /* deadline */null, null /* handlers */
));
}
public void handleAsyncEvent() {
/* Cuckoo */
}}
![Page 92: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/92.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Associating Handlers with Timerspublic class CuckooClock {
private PeriodicTimer littleTimer;private PeriodicTimer bigTimer;private Quail littleBird;private Cuckoo bigBird;
public void init (HighResolutionTime startTime) {// . . . Start second hand
PeriodicParameters birdParams =(PeriodicParameters)
littleBird.getReleaseParameters ();
littleTimer =new PeriodicTimer (
startTime.add(new RelativeTime(10,0)),birdParams.getPeriod (),littleBird);
// ...}
}
![Page 93: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/93.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Handling External Events
• Want to add two more capabilities to our clock– “what time is it now?”– “reset to noon”
• We’ll re-use AEH approach– Associate AEHs with events– Bind events to button pushes
• Differences between buttons– Query simply reads current time– However, reset changes state
asynchronously– We’ll extend our solution using
ATC to address the latter issue
programstart
buttonpush
![Page 94: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/94.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Registering External Events
AsyncEvent
addHandler(…)
bindTo(String)
![Page 95: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/95.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Responding to External Events
AsyncEventfire()
schedule()
![Page 96: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/96.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Registering External Events
public class CuckooClock {// ...private AsyncEvent currentTimeRequest;private AsyncEvent resetRequest;private CurrentTime currentTimeHandler;private ResetTime resetHandler;
public void init (HighResolutionTime startTime) {// ... SecondHand, Quail, Cuckoo setup
currentTimeRequest.addHandler (currentTimeHandler);currentTimeRequest.bindTo (“currentTimeButtonPush”);
resetRequest.addHandler (resetHandler);resetRequest.bindTo (“resetButtonPush”);
// ...}
}
![Page 97: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/97.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Issues: Asynch Transfer of Control (ATC)• Asynchronous
– Quail chirps, advances– Reset quail’s counter
• Ensure quail is reset in a controlled way– Mid-chirp is rude– Mid-advance is wrong
• ATC refines stop and suspend semantics– Quail throws AIE when
it can be interrupted– ResetHandler calls
ResetHandler
Quail
timer
button push
reset
![Page 98: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/98.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
ATC: Inter-Thread Exceptions(AsynchronouslyInterruptedException)
safe scope (throws AIE)
unsafe scope(synchronized, no “throws”)
“tunnels”
propagates
caught
(re)thrown
raised
• Special ATC semantics– When safe to throw
must be declared (default: unsafe)
– Deferred throw and propagation behavior (“exception tunneling’)
– Nesting and replacement of exceptions governed by scope
![Page 99: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/99.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Java Storage Management• Automatic storage
allocation• Pointer references are
type-checked (safe)– Mostly at compile-time– Run-time for narrowing
casts• Garbage collection
– Automatic– Conceptually precise– Guaranteed correct
ClockAction
SecondHand
Quail Cuckoo
ClockAction part = new Quail();
( (Quail) part).chirp();
part = new SecondHand();
![Page 100: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/100.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Real-Time Storage Management Issues• Predictable execution
required• Allocation time for Java
• Average case• Worst case
• What happens if there is insufficient free storage to satisfy the request?
nuclearReactor.on();
new A();
nuclearReactor.off();
![Page 101: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/101.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Java Storage Management• Automatic storage
allocation• Pointer references are
type-checked (safe)• Garbage collection
• We’ll examine each topic in turn
• RTSJ tries to balance the ideals of Java with the needs of RT applications
![Page 102: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/102.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Java Storage Management• Automatic storage
allocation• Pointer references are
type-checked (safe)• Garbage collection
![Page 103: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/103.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Storage Allocation—Free List• Linked list of free blocks
• Search for desired fit
• Worst case O(n) for n blocks in the list
![Page 104: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/104.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Solution: Bounded Allocators• RT Java introduces the
notion of a MemoryArea MemoryArea
![Page 105: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/105.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Solution: Bounded Allocators• RT Java introduces the
notion of a MemoryArea• The traditional allocator
is represented by the HeapMemory class
HeapMemory
MemoryArea
![Page 106: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/106.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Solution: Bounded Allocators• RT Java introduces the
notion of a MemoryArea• The traditional allocator
is represented by the HeapMemory class
• Other allocators are now possible, including– VTMemory—variable time
taken for allocation; this is what Java already gives us—no gurantees
HeapMemory
MemoryArea
VTMemory
![Page 107: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/107.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Solution: Bounded Allocators• RT Java introduces the
notion of a MemoryArea• The traditional allocator
is represented by the HeapMemory class
• Other allocators are now possible, including– VTMemory—variable time
taken for allocation; this is what Java already gives us—no gurantees
– LTMemory—linear in the size of the allocated object (used to be CTMemory)
HeapMemory
MemoryArea
VTMemory LTMemory
![Page 108: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/108.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
LTMemory• Linear in the size of the
request– Free list sorted by size
![Page 109: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/109.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
LTMemory• Linear in the size of the
request– Free list sorted by size– Sorted inversely by size
![Page 110: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/110.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
LTMemory• Linear in the size of the
request– Free list sorted by size– Sorted inversely by size
• Cost of maintaining structure must be included
![Page 111: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/111.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
LTMemory• Linear in the size of the
request– Free list sorted by size– Sorted inversely by size
• Cost of maintaining structure must be included
• Random doesn’t work• Knuth’s Buddy System
does
![Page 112: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/112.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
• Free-list segregated by size (radix sort)
• All requests rounded up to a power of 2
256
128
64
32
16
8
4
2
1
Knuth’s Buddy System
![Page 113: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/113.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Knuth’s Buddy System (1)
256
128
64
32
16
8
4
2
1
• Begin with one large block
• Suppose we want a block of size 16
![Page 114: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/114.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
• Begin with one large block
• Recursively subdivide
256
128
64
32
16
8
4
2
1
Knuth’s Buddy System (2)
![Page 115: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/115.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
256
128
64
32
16
8
4
2
1
• Begin with one large block
• Recursively subdivide
Knuth’s Buddy System (3)
![Page 116: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/116.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
256
128
64
32
16
8
4
2
1
• Begin with one large block
• Recursively subdivide
Knuth’s Buddy System (4)
![Page 117: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/117.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
256
128
64
32
16
8
4
2
1
• Begin with one large block
• Yield 2 blocks size 16
Knuth’s Buddy System (5)
![Page 118: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/118.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
• One of those blocks can be given to the program
256
128
64
32
16
8
4
2
1
• Begin with one large block
• Yield: 2 blocks size 16
Knuth’s Buddy System (6)
![Page 119: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/119.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Worst-case free-list behavior• The longer the free-list,
the more pronounced the effect
• No a priori bound on how much worse the list-based scheme could get
• Average performance similar
Speedup of Buddy over List
3.15
72.84
0.89 0.910
1020304050607080
180 3000
Number of objects allocated
WorstAvg
![Page 120: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/120.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Spec Benchmark Results
Speedup of Buddy over List
0
0.2
0.4
0.6
0.8
1
1.2
![Page 121: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/121.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Java Storage Management• Automatic storage
allocation• Pointer references are
type-checked (safe)• Garbage collection
• Java enables good garbage collection
• Unfortunately, current implementations do not embrace best practices
• As a result, RTSJ is skeptical of real-time garbage collection• Mandate to allow for
cutting-edge research• No hooks currently for
RT garbage collection
![Page 122: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/122.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Storage Management Linked to Threads
Thread
RT SpecificationsNo Yes
Guarantees
No
Yes
![Page 123: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/123.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Storage Management Linked to Threads
Thread RealtimeThread
RT SpecificationsNo Yes
Guarantees
No
Yes
![Page 124: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/124.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Storage Management Linked to Threads
Thread RealtimeThread
NoHeapRealtimeThread
RT SpecificationsNo Yes
Guarantees
No
Yes
![Page 125: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/125.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RealtimeThread offers no guarantees• Realtime threads get
higher priority than the garbage collector
• RealtimeThreads can instantiate and reference the heap.
![Page 126: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/126.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RealtimeThread offers no guarantees• Realtime threads get
higher priority than the garbage collector
• RealtimeThreads can instantiate and reference the heap.– Suppose a gc cycle is
necessary to satisfy an allocation request
– How much time will that take?
allocgc
![Page 127: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/127.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RealtimeThread offers no guarantees• Realtime threads get
higher priority than the garbage collector
• RealtimeThreads can instantiate and reference the heap.– Suppose a gc cycle is
necessary to satisfy an allocation request
– How much time will that take?
• NoHeapRealtimeThread avoids this
allocgc
![Page 128: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/128.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
HeapMemory
ScopedMemory
NoHeapRealtimeThread Avoids the Heap• NHRT threads
– Cannot allocate in heap– Cannot hold references to
the heap– Cannot even manipulate
references to the heap• Non-collected memory
• ImmortalMemory• ScopedMemory
• VTMemory• LTMemory
MemoryArea
ImmortalMemory
VTMemory LTMemory
![Page 129: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/129.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Using ImmortalMemory temporarily/* Suppose thread currently uses the heap */
MemoryArea undead = ImmortalMemory.instance();
SecondHand s = (SecondHand)
undead.newInstance(Class.forName(“SecondHand”)
); /* immortal */
SecondHand t = new SecondHand(); /* heap */
![Page 130: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/130.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Using ImmortalMemory by Defaultpublic SecondHand extends NoHeapRealtimeThread {
public SecondHand() {super(null, ImmortalMemory.instance());setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start
*/new RelativeTime(1000,0), /* period
*/ new RelativeTime(5,0), /* cost
*/new RelativeTime(500,0), /* deadline
*/null, null /* handlers
*/)
);}
}
![Page 131: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/131.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Using ScopedMemorypublic SecondHand extends NoHeapRealtimeThread {
public SecondHand() {super(null, new ScopedMemory(4096)); /* 4K
*/setReleaseParameters(
new PeriodicParameters(new RelativeTime(0,0), /* start
*/new RelativeTime(1000,0), /* period
*/ new RelativeTime(5,0), /* cost
*/new RelativeTime(500,0), /* deadline
*/null, null /* handlers
*/)
);}
}
![Page 132: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/132.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
public void enter(Runnable logic) throws RuntimeException {synchronized (referenceCountLock) {
referenceCount++;}super.enter(logic);synchronized(referenceCountLock) {
referenceCount--;resetIfRequired();
}}
The Scope of ScopedMemory
• Any RealtimeThread can call enter() on a ScopedMemory
![Page 133: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/133.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
public void enter(Runnable logic) throws RuntimeException {synchronized (referenceCountLock) {
referenceCount++;}super.enter(logic);synchronized(referenceCountLock) {
referenceCount--;resetIfRequired();
}}
oldMemoryArea =
currentThread.getMemoryArea();
this.activate();
try {
logic.run();
} finally {
oldMemoryArea.activate()
}
The Scope of ScopedMemory
• Any RealtimeThread can call enter() on a ScopedMemory• The enter() method will call the thread back via its run()
method.
![Page 134: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/134.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
public void enter(Runnable logic) throws RuntimeException {synchronized (referenceCountLock) {
referenceCount++;}super.enter(logic);synchronized(referenceCountLock) {
referenceCount--;resetIfRequired();
}}
The Scope of ScopedMemory
• Any RealtimeThread can call enter() on a ScopedMemory• The enter() method will call the thread back via its run()
method.• The scope is reference counted• When the reference count reaches 0, the scope can be deleted
![Page 135: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/135.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Entering a Scope
thread area
area.enter() thread.run()
run() {
}
![Page 136: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/136.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate
Scope A Scope B
![Page 137: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/137.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate• A RealtimeThread can
enter any scope Scope A Scope B
![Page 138: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/138.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate• A RealtimeThread can
enter any scope• The reference count of
each entered scope is bumped
Scope A 1 Scope B 0
![Page 139: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/139.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate• A RealtimeThread can
enter any scope• The reference count of
each entered scope is bumped
Scope A 1 Scope B 1
![Page 140: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/140.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate• A RealtimeThread can
enter any scope• Scope B cannot be
deallocated until the thread exits its run() method
• This occurs when the scope’s reference count becomes 0
Scope A 1 Scope B 0
![Page 141: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/141.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How Scoped Memories Nest• Each ScopedMemory is
logically separate• A RealtimeThread can
enter any scope• Scope B cannot be
deallocated until the thread exits its run() method
• The thread must exit its run() method again for Scope A to be freed
• In a sense, Scope B was nested inside Scope A
Scope A 0 Scope B 0
![Page 142: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/142.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 3
Scope A 4
How Scoped Memories Nest• One ScopedMemory can
be viewed as contained in another if its set of active threads is a proper subset of the other’s
![Page 143: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/143.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
However….
Used by permission of Walt Disney Corporation
![Page 144: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/144.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
RT Java Storage Management• Automatic storage
allocation• Pointer references are
type-checked (safe)• Garbage collection
![Page 145: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/145.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Rules for scope references
![Page 146: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/146.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Rules for scope references
Thou shalt not reference any object whose lifetime could be shorter than thine
own.
![Page 147: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/147.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 3
Scope A 3
Why this rule?• The thread could enter
Scope B
![Page 148: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/148.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 4
Scope A 3
Why this rule?• The purple thread can
enter Scope B• The other threads may
have deposited references in Scope B to objects in Scope A
![Page 149: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/149.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 4
Scope A 0
Why this rule?• The purple thread can
enter Scope B• The other threads may
have deposited references in Scope B to objects in Scope A
• If those threads exit, then Scope A can go away
• References in the purple thread to Scope A are invalid and will throw an exception
![Page 150: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/150.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 3
Scope A 3
Ensuring Safe Scope Accesses• When a thread is about to
enter a scope, the programmer can
![Page 151: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/151.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 3
Scope A 4
Ensuring Safe Scope Accesses• When a thread is about to
enter a scope, the programmer can cause the thread first to enter the ancestors’ scopes
![Page 152: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/152.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 4
Scope A 4
Ensuring Safe Scope Accesses• When a thread is about to
enter a scope, the programmer can cause the thread first to enter the ancestors’ scopes
• This guarantees safe access in the thread
![Page 153: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/153.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Scope B 4
Scope A 4
Ensuring Safe Scope Accesses• When a thread is about to
enter a scope, the programmer can cause the thread first to enter the ancestors’ scopes
• This guarantees safe access in the thread
• Notion of• Kami• Baptism-by-Proxy
![Page 154: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/154.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Status of an Implementation
• J9 implementation from IBM– Mostly there, but some pieces are missing– Newer and more complete systems on the way
• Can develop using any JDE– Uses javax.realtime.* package
• Must run on an RTSJ-aware JVM– Native calls to accomplish scheduling, storage, etc.– Mostly there, but some pieces are missing– New and better systems on the way– Requires OS support for RT features
![Page 155: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/155.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Speed of the JVM on Spec
0 20 40 60 80 100 120
_227_mtrt
_202_jess
_201_compress
_209_db
_222_mpegaudio
_228_jack
_213_javac
Appl
icat
ion
Grade
JViewIBM-J9Sun-JKD1.3
![Page 156: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/156.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
How well does the JVM do RT?
• Real-time determinism test cases– RealtimeThread preemption handling– Priority inversion avoidance– Dispatching of AsyncEvents – Jitter in periodic event handling – Timing of periodic event handling
![Page 157: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/157.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PreemptTest Scenario
• Purpose:– Measure whether priority preemption occurs correctly for
multiple RealtimeThreads of different priorities• Method:
– Stagger the start of fixed-duration, processor-holding RealtimeThreads of increasing or decreasing priority. Using timestamp logging, see when threads enter and exit in relation to each other
![Page 158: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/158.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PreemptTest Results
Result: Priority 7 rightfully kept the processor until done. Priorities 6—4 then ran concurrently until completion, and then threads 3—1
did the same. Priorities were not respected.
Starting at priority 7, start the threads every 2 seconds in decreasing priority order. Threads try to keep the
processor for 7 seconds.
This works!
Problem!Enter and leavein blocks of 3
![Page 159: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/159.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PreemptTest Analysis
• Problem– The J9 implementation maps multiple Java
priority levels to the same underlying RTOS thread level
– RTSJ Requires at least 28 unique priority levels
Java Thread Priority QNX Neutrino Thread Priority28, 29, 30 15r25, 26, 27 14r22, 23, 24 13r19, 20, 21 12r16, 17, 18 11r13, 14, 15 10r10, 11, 12 9r
7, 8, 9 8r4, 5, 6 7r1, 2, 3 6r
![Page 160: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/160.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PriInvertTest Scenario
• Purpose:– Measure whether priority inversion is properly
avoided.• Method:
1. A low-priority thread obtains a lock2. A medium-priority thread consumes CPU time3. A high-priority thread needs the lock
![Page 161: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/161.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PriInvertTest Results
Result: The low-priority thread did NOT get elevated to high priority. Therefore, the medium-priority thread finished before
the high-priority thread. Priority inversion occurred.
![Page 162: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/162.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
PriInvertTest Analysis
• Problem– Priority Inheritance does not currently work– RTSJ specifies Priority Inheritance as the default
priority inversion avoidance method for synchronized blocks
![Page 163: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/163.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventDispatchTest Scenario
• Purpose:– Measure the execution order for multiple
AsyncEventHandlers of different priorities, when an AsyncEvent fires for which they are all registered.
• Method:
AsyncEvent
addHandler(…)
bindTo(String)AsyncEvent
schedule()
fire()
![Page 164: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/164.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventDispatchTest Results
Result: This is correct. The highest priority handler runs first, then middle one, and then lowest.
The Java priorities are such that the resulting QNX priorities are different
![Page 165: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/165.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventJitterTest Scenario
• Purpose:– Measure the variation between runs of a
PeriodicTimer-driven AsyncEventHandler• Method:
– A PeriodicTimer fires an AsyncEventHandler at a fixed rate while lower-priority threads consume CPU time
![Page 166: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/166.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventJitterTest ResultsIn this 1 second test, our AsyncEventHandler runs at priority 30. Another RealtimeThread runs at priority 6. PeriodicTimer event fires every 50 msecs (20 Hz.).
Result: Quite good - jitter within RTOS timer resolution.
![Page 167: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/167.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventJitterTest Results (cont)Same as before, but with 200 background threads at priority 6
Result: Not bad - some jitter (+/- 1.1 msec) between runs, but lower-priority threads do
seem to affect jitter.
![Page 168: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/168.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventJitterTest Results (cont)One background thread at priority 10; AsyncEventHandler
threads still at priority 30
Result: Bad - the periodic events never get to execute, even though the handler has
higher priority than the background thread
![Page 169: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/169.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
EventJitterTest Analysis
Handlerthread
Java pri=30QNX pri=15r
“Spawner”thread
QNX pri=8r
Handlerthread
Java pri=30QNX pri=15r
Handlerthread
Java pri=30QNX pri=15r
PeriodicTimer’s fire() method called
Handlerthread
Java pri=30QNX pri=15r
handler thread of desired priority spawned for each firing
Another threadJava pri = 10QNX pri = 9r
Problem!If this thread is using the processor,the “Spawner” thread will not get the opportunity to spawn the handlerthread. Priority inversion occurs.
![Page 170: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/170.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Summary Of Experimental Results
• Java thread priority preemption must be maintained for each of the 28 required thread levels.
• AsyncEventHandler threads driven by PeriodicTimers must not be prevented from running by lower priority threads.
• Priority inheritance should work by default. • Programmer needs better control of Java
thread to underlying RTOS mapping.
![Page 171: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/171.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Review: Java, RTSJ, Real-Time Issues
• Threads (Java, revisited in RTSJ)• Release characteristics & failures• Scheduling• Synchronization (Java, revisited in RTSJ)• Time and timers• Asynchronous event handling• Memory management• Asynchronous transfer of control
![Page 172: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/172.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Concluding Remarks
• The RTSJ extends Java to address real-time– Scheduling, Storage Management, Asynchrony
• The RTSJ largely stays within the existing programming model– Some new idioms to master, but much is preserved– ATC in particular illustrates the trade-offs
• Stay tuned, more evolution is on the horizon– Reference implementations and benchmarking– New specification efforts, e.g., the DRTSJ (JSR 50)
• We wish we had– Hooks for user-defined gc and scheduling
![Page 173: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/173.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
Effectiveness of Real-Time GC on Spec(white portion is uncollected)
size 10 Absolute
0
100000
200000
300000
400000
500000
600000
700000
800000
900000
compress jess raytrace db javac mpegaudio mtrt jack checkit
None
RefCount
Both
CGC
![Page 174: RT Java Tutorial - GCAR - Grupo de Controle Automação e …cpereira/real_time_java1.ppt · PPT file · Web view2003-01-16 · Tutorial Objectives Real-time programming issues](https://reader034.vdocuments.site/reader034/viewer/2022051803/5bfff97209d3f28a0c8b6e0c/html5/thumbnails/174.jpg)
Real-Time Java Tutorial 2000 Ron Cytron and Chris Gill
You’ve seen the movie, now read the book