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

Real-time programming safety in Java and Ada

Singleton pattern i C#

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

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

Modern Concurrency Abstractions for C#

Tree klassen fra sidste forelæsning

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

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

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

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

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

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

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

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Løsning af skyline-problemet

Parallelle algoritmer

Objektorienteret Programmering

.NET 4.0 og C# 4.0. Denne artikel beskriver nogle af de nye features i.net 4.0 og C# 4.0. Den forudsætter et vist kendskab til.net og C#.

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

Common Language Runtime. Multithreading

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Dag 10 Flertrådet programmering

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Løsning af møntproblemet

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

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

Forelæsning Uge 6 Mandag

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

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

Eksempel: Skat i år 2000

SWC eksamens-spørgsmål. Oversigt

Webserverprogrammering

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

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?

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Composable Memory Transactions

Overblik. Class Loader. Java. Class Libraries. Bytecode. Verifier Java. Source (.java) Just in Time Compiler. Java

Hashing og hashtabeller

USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION

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

SigmaT.

Skriftlig eksamen i Datalogi

Dag 10 Flertrådet programmering

Parallelle algoritmer

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

DM507 Algoritmer og datastrukturer

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Introduction til.net remoting i C#

3C03 Concurrency: Model-based Design

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Skriftlig eksamen i Datalogi

Introduktion til ActionScript, fortsat

Linguistic support for unit testing

Programming Language Design and Analysis motivated by Hardware Evolution

Test af It-komponent

DM507 Algoritmer og datastrukturer

Databaseadgang fra Java

Projektledelse i praksis

Basic statistics for experimental medical researchers

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Lektion 6. Grundlæggende programmering i VR

BRP Kursusintroduktion og Java-oversigt

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

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter

DM507 Algoritmer og datastrukturer

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Klasser og objekter. (Afsnit i manualen)

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

Forelæsning Uge 3 Mandag

DM507 Algoritmer og datastrukturer

(INFORMATION TECHNOLOGY)/ (OPTICS AND ELECTRONICS)

3D NASAL VISTA TEMPORAL

Hvilket sprog er hurtigst

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?