A Profile for Safety Critical Java

Relaterede dokumenter
Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Singleton pattern i Java

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Tree klassen fra sidste forelæsning

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Abstrakte datatyper C#-version

Ugeseddel 4 1. marts - 8. marts

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Løsning af skyline-problemet

Objektorienteret Programmering

Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)

Dag 10 Flertrådet programmering

Løsning af møntproblemet

DANMARKS TEKNISKE UNIVERSITET

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

DM507 Algoritmer og datastrukturer

Det er muligt at chekce følgende opg. i CodeJudge: og

DM502. Peter Schneider-Kamp

Objektorienterede metoder

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

SWC eksamens-spørgsmål. Oversigt

Webserverprogrammering

Rekursion og dynamisk programmering

Anvendelse af metoder - Programmering

DSB s egen rejse med ny DSB App. Rubathas Thirumathyam Principal Architect Mobile

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Skriftlig eksamen i Datalogi

DM507 Algoritmer og datastrukturer

Kursus navn: Indledende programmering Kursus nr

Klasser og nedarvning

DM507 Algoritmer og datastrukturer

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

Fra idé til virkelig med Azure Mobile Services

Hvordan vælger jeg dokumentprofilen?

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

SigmaT.

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Skriftlig eksamen i Datalogi

Introduktion til ActionScript, fortsat

Test af It-komponent

DM507 Algoritmer og datastrukturer

Databaseadgang fra Java

Projektledelse i praksis

Basic statistics for experimental medical researchers

BRP Kursusintroduktion og Java-oversigt

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

DM507 Algoritmer og datastrukturer

Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben

02101 Indledende Programmering Introduktion til Eclipse

Videregående programmering i Java

DM507 Algoritmer og datastrukturer

(INFORMATION TECHNOLOGY)/ (OPTICS AND ELECTRONICS)

Virkefeltsregler i Java

Udvikling af DOTNET applikationer til MicroStation i C#

Videregående programmering i Java

Transkript:

A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007

Forfatterne Martin Schoeberl Udvikler af JOP processoren Hans Søndergaard Lektor ved Vitus Bering Denmark Bent Thomsen Lektor ved Aalborg Universitet Database og programmerings teknologier Lokale: 3.2.38 Anders P. Ravn Professor ved Aalborg Universitet 2/20

Artiklen Udgivet ved Bidrag Proceedings of the 10th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing Profil til Hard Real-Time systems Er ikke et RTSJ subset Profil til ajile og JOP 3/20

Hvorfor en ny profil? RTSJ Er for generel Mange dynamiske features Ravenscar-Java Subset af RTSJ Fjerner usikre features Stadig for kompleks 4/20

Safety Critical Java Baseret på: JSR-302 specification request DO-178B standard Design mål Nemt framework Simpel program analyse Nemt at implementere på indlejrede systemer Minimal implementations detaljer Skal kunne læres på under en dag 5/20

Oversigt 1 Valg af features/begrænsninger 2 Safety Critical Java 3 Implementation 4 Eksempel 5 Konklusion 6/20

Thread ændringer i forhold til RTSJ Parametre i constructoren til RealtimeThread Scheduling Processing group Hukommelse parametre og områder Initializer thread Skal laves eksplicit i RTSJ Laves i stedet i main metoden i SCJ waitfornextperiod Er fjernet Håndteres af scheduleren 7/20

Release parametre Prioritet ikke nødvendigt Bruger release og deadline tid Bliver prioriteret af scheduleren Schedulability kan verificeres Cost Ikke en del af profilen Skal checkes af et tool offline. 8/20

Et overblik over SC Java profilen Indeholder følgende Periodic threads (PeriodicThread) Sporadic threads (SporadicThread) Runtime systemet (RealtimeSystem) Tidsbegreb (RelativeTime) Hukommelses tilgang 9/20

Klasse struktur af threads RealtimeThread <<abstract>> #run() : boolean #cleanup() : boolean packag public pr PeriodicThread <<abstract>> SporadicThread <<abstract>> +fire() pr MyPeriodicThread MySporadicThread ab pr 10/20 Figure 1. Class structure of the profile with

4 t n o ( Sammenlignet med RJ 11/20 Figure 7. Thread and Handler classes: (left), our SCJ proposal (right) RJ W t b

RealtimeThread public abstract class RealtimeThread { protected RealtimeThread(RelativeTime period, RelativeTime deadline, RelativeTime offset, int memsize) protected RealtimeThread(String event, RelativeTime mininterval, RelativeTime deadline, int memsize) abstract protected boolean run(); protected boolean cleanup() { return true; 12/20

p Eksekveringsforløb i SCJ 13/20 Tilstande Initialized Figure 5. Application states Alle objekter oprettes ThoseLaves three i main states metoden are inspired by the states in a MIDlet, but they Mission are also based on industrial experiences from realtime systems Alle tråde which startes need to shut down in a controlled way. Stop Run returnerer boolean Cleaup kaldt i stedet for run 3.3.1 Shutdown

Implementation af SCJ Implementeret til JOP og ajile Simpel implementation Bruger eksisterende thread implementation API Et nyt API i stedet for subset af RTSJ Bruger object composition Små rene klasser 14/20

Standard libraries Problemer med eksisterende libraries Dynamisk hukommelse allokering Dårlig WCET, fokusere på average Javolution Genbruger hukommelse Fokuserer på WCET, men garanterer ingen WCET Fokuserer på predictability frem for plads forbrug 15/20

Standard libraries Problemer med eksisterende libraries Dynamisk hukommelse allokering Dårlig WCET, fokusere på average Javolution Genbruger hukommelse Fokuserer på WCET, men garanterer ingen WCET Fokuserer på predictability frem for plads forbrug 15/20

Standard libraries Canteen Tilbyder List, Set og Map Tilbyder statisk analyse af WCET Kaster ikke exceptions i mission phase Ingen hukommelses allokering i mission phase Understøtter generics Kompatibel med standard Java interface 16/20

17/20 public class PeriodicSporadic { public static void main(string[] args) { final SporadicThread rte = new SporadicThread("SWEVENT", new RelativeTime(2000, 0)) { protected boolean run() { return true; ; new PeriodicThread(new RelativeTime(1000, 0)) { int counter = 0; protected boolean run() { ++counter; if (counter%2==1) rte.fire(); if (counter==10) RealtimeSystem.stop(); return true; protected boolean cleanup() { return true; ; RealtimeSystem.start();

17/20 public class PeriodicSporadic { public static void main(string[] args) { final SporadicThread rte = new SporadicThread("SWEVENT", new RelativeTime(2000, 0)) { protected boolean run() { return true; ; new PeriodicThread(new RelativeTime(1000, 0)) { int counter = 0; protected boolean run() { ++counter; if (counter%2==1) rte.fire(); if (counter==10) RealtimeSystem.stop(); return true; protected boolean cleanup() { return true; ; RealtimeSystem.start();

17/20 public class PeriodicSporadic { public static void main(string[] args) { final SporadicThread rte = new SporadicThread("SWEVENT", new RelativeTime(2000, 0)) { protected boolean run() { return true; ; new PeriodicThread(new RelativeTime(1000, 0)) { int counter = 0; protected boolean run() { ++counter; if (counter%2==1) rte.fire(); if (counter==10) RealtimeSystem.stop(); return true; protected boolean cleanup() { return true; ; RealtimeSystem.start();

17/20 public class PeriodicSporadic { public static void main(string[] args) { final SporadicThread rte = new SporadicThread("SWEVENT", new RelativeTime(2000, 0)) { protected boolean run() { return true; ; new PeriodicThread(new RelativeTime(1000, 0)) { int counter = 0; protected boolean run() { ++counter; if (counter%2==1) rte.fire(); if (counter==10) RealtimeSystem.stop(); return true; protected boolean cleanup() { return true; ; RealtimeSystem.start();

Hvorfor bruge profilen? Fordele Simpel profil Henvendt til sikkerheds kritiske systemer Object composition pattern Kun applikations specifikke krav Kræver tools til analyse af WCET Scheduling Worst-case memory consumption 18/20

Min mening om artiklen Fordele Nem at læse Ulemper God struktur Simpel og elegant løsning Mangler lidt detaljer om tools JOP og ajile implementation er ikke ens 19/20

Spørgsmål?