Fiji VM Safety Critical Java

Similar documents
Schism: Fragmentation-Tolerant Real-Time Garbage Collection. Fil Pizlo *

JamaicaVM Java for Embedded Realtime Systems

Asynchronous Event Handling and Safety Critical Java

Introduction to Java

Real-Time Garbage Collection Panel JTRES 2007

Real-Time and Embedded Systems (M) Lecture 19

What is a VM? Categories of Virtual Machines. Process Virtual Machine 11/17/2010

Hierarchical PLABs, CLABs, TLABs in Hotspot

The benefits and costs of writing a POSIX kernel in a high-level language

The VMKit project: Java (and.net) on top of LLVM

Real-time & Embedded Systems Workshop July 2007 Building Successful Real-time Distributed Systems in Java

Safety Critical Java. Language Standards and Analysis Techniques for Java in Safety Critical applications. aicas GmbH

The Impact of a Real-Time JVM on Middleware Performance: Lessons Learned from Implementing DDS on IBM s J9

Hierarchical Real-time Garbage Collection

Non-Blocking Inter-Partition Communication with Wait-Free Pair Transactions

A program execution is memory safe so long as memory access errors never occur:

Real Time: Understanding the Trade-offs Between Determinism and Throughput

JAVA PERFORMANCE. PR SW2 S18 Dr. Prähofer DI Leopoldseder

Computer Systems A Programmer s Perspective 1 (Beta Draft)

Java Performance Tuning and Optimization Student Guide

Myths and Realities: The Performance Impact of Garbage Collection

6.828: OS/Language Co-design. Adam Belay

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

A JVM Does What? Eva Andreasson Product Manager, Azul Systems

JOP: A Java Optimized Processor for Embedded Real-Time Systems. Martin Schoeberl

Java For Real-Time Enterprise Systems Delivering the Benefits of Java to the world of Real-Time distributed object computing

New Java performance developments: compilation and garbage collection

Java On Steroids: Sun s High-Performance Java Implementation. History

Short-term Memory for Self-collecting Mutators. Martin Aigner, Andreas Haas, Christoph Kirsch, Ana Sokolova Universität Salzburg

CS 261 Fall Mike Lam, Professor. Virtual Memory

Chapter 3: Operating-System Structures

Green Hills Software, Inc.

Chapter 3: Operating-System Structures

Memory Management william stallings, maurizio pizzonia - sistemi operativi

Chapter 3: Operating-System Structures

Chapter 1 INTRODUCTION SYS-ED/ COMPUTER EDUCATION TECHNIQUES, INC.

Buffer overflow background

Operating Systems (2INC0) 2018/19. Introduction (01) Dr. Tanir Ozcelebi. Courtesy of Prof. Dr. Johan Lukkien. System Architecture and Networking Group

Eventrons: A Safe Programming Construct for High-Frequency Hard Real-Time Applications

Last class: OS and Architecture. OS and Computer Architecture

Last class: OS and Architecture. Chapter 3: Operating-System Structures. OS and Computer Architecture. Common System Components

Top Ten Enterprise Java performance problems. Vincent Partington Xebia

OPERATING SYSTEM. Chapter 4: Threads

A High Integrity Distributed Deterministic Java Environment. WORDS 2002 January 7, San Diego CA

The Memory Management Unit. Operating Systems. Autumn CS4023

OS and Computer Architecture. Chapter 3: Operating-System Structures. Common System Components. Process Management

PERFORMANCE ANALYSIS AND OPTIMIZATION OF SKIP LISTS FOR MODERN MULTI-CORE ARCHITECTURES

Multicore ARM Processors for Safety Critical Avionics

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++

Exam Questions. Give an example network topology where GPSR cannot find a way from a source to a sink. Explain your answer.

The Slide does not contain all the information and cannot be treated as a study material for Operating System. Please refer the text book for exams.

Kampala August, Agner Fog

Real-Time Java. Martin Schöberl

Scaling Up Performance Benchmarking

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Managed runtimes & garbage collection. CSE 6341 Some slides by Kathryn McKinley

Chapter 2: Operating-System Structures

Managed runtimes & garbage collection

An Introduction to Software Engineering. David Greenstein Monta Vista High School

Outline. Threads. Single and Multithreaded Processes. Benefits of Threads. Eike Ritter 1. Modified: October 16, 2012

Why Java is practical for modern operating systems. JNode.org

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

Dynamic Fine Grain Scheduling of Pipeline Parallelism. Presented by: Ram Manohar Oruganti and Michael TeWinkle

WIND RIVER DIAB COMPILER

SPIN Operating System

Runtime Application Self-Protection (RASP) Performance Metrics

Chapter 4: Threads. Chapter 4: Threads

REAL TIME OPERATING SYSTEM PROGRAMMING-I: VxWorks

Bootstrap, Memory Management and Troubleshooting. LS 12, TU Dortmund

Abstract Interpretation Continued

CMPSC 311- Introduction to Systems Programming Module: Systems Programming

Virtual Machine Design

Analyzing Real-Time Systems

Chapter 4: Multithreaded Programming

Lecture 1: Overview of Java

Software Speculative Multithreading for Java

September 15th, Finagle + Java. A love story (

Java Without the Jitter

File System Internals. Jo, Heeseung

History Introduction to Java Characteristics of Java Data types

Chapter 4: Multi-Threaded Programming

Ryan Sciampacone Senior Software Developer August 1 st Multitenant JVM. JVM Languages Summit IBM Corporation

SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine p. 1

C++, Java and.net: Lessons learned from the Internet Age, and What it Means for the Cloud and Emerging Languages

Towards Parallel, Scalable VM Services

OS-caused Long JVM Pauses - Deep Dive and Solutions

Verification & Validation of Open Source

The Real-time Specification for Java

Recommendations for a CORBA Language Mapping for RTSJ

Christopher Sean Morrison

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Chapter 2: Operating-System Structures

Simplifying the Development and Debug of 8572-Based SMP Embedded Systems. Wind River Workbench Development Tools

Using Java for Scientific Computing. Mark Bul EPCC, University of Edinburgh

Acknowledgements These slides are based on Kathryn McKinley s slides on garbage collection as well as E Christopher Lewis s slides

Virtual Memory. Daniel Sanchez Computer Science & Artificial Intelligence Lab M.I.T. November 15, MIT Fall 2018 L20-1

CS533 Concepts of Operating Systems. Jonathan Walpole

Dynamic Selection of Application-Specific Garbage Collectors

Java Performance: The Definitive Guide

ECE 598 Advanced Operating Systems Lecture 10

Transcription:

Fiji VM Safety Critical Java Filip Pizlo, President Fiji Systems Inc.

Introduction Java is a modern, portable programming language with wide-spread adoption. Goal: streamlining debugging and certification. Safety Critical Java (SCJ) brings the benefits of Java to the safety-critical space. The Fiji VM is a high-performance, low-footprint Safety Critical Java implementation.

Java and Safety Top defects in existing embedded code: * Buffer overflow and underflow Null object dereference Uninitialized variable Inappropriate cast Division by zero Memory leaks impossible in Java checked in Java impossible in Java checked in Java checked in Java GC Source: Diagnosing Medical Device Software Defects Medical DeviceLink, May 2009

Java s safety also gives you fine-grained space partitioning and isolation for free. Standard language taught in universities around the world. Java is known to scale to 800+ cores; rich library support for parallel/concurrent programming. Concurrency in Java is fast. Java locks are at least 50% faster than POSIX locks on Linux. Rich tool support (IDEs, bug finders, verification tools, modeling tools, etc.) Java supports safe dynamic loading.

Summary of Java s benefits A subset of program errors go away. For the remaining program errors: Java programs are more analyzable, making model-checking easier. Java programs are more testable, thanks to extensive tool support for unit testing. Java programs are more readable, making code audits simpler. Java brings a plethora of modern language features that make software engineering more cost-effective.

Java for Real Time 1998 - NIST prepared a set of requirements for RT Java 1999 - JSR-001, first draft specification 2002 - Real Time Specification for Java (RTSJ) accepted 2005 - SUN and IBM release RTSJ implementations 2006 - JSR-302 Safety Critical Java started 2008 - development of Fiji VM SCJ begins.

Fiji VM High-performance Real Time Java

Fiji VM Compiles Java to fast machine code no interpretation! competitive with C code! Small footprint (~100KB) Strong real-time support Real Time Garbage Collection and scoped memory Can write device drivers in Java Multi-core ready Portable (x86, PPC, SPARC, ARM, others) Runs on RTEMS, Linux, others

Fiji VM is a compiler Java Source Code javac fivmc machine code Fiji VM uses Java byte code as input (versions 1.0 through 7 supported) Fiji VM produces executables. Your code is never interpreted. Result: small footprint, fast and predictable execution.

Fiji VM real-time support Striving for Safety-critical Java (SCJ) compliance, targeting DO-178B and DO-178C level A certification. Every operation has predictable timing. Memory usage is predictable. both garbage collection and SCJ scoped memory

Fiji VM Garbage Collection Garbage collection allows safe, fragmentation-free dynamic memory allocation. Garbage collector runs as a separate thread. The scheduling of this thread can be programmatically controlled. We provide WCET and schedulability formulas that describe how much CPU time this thread should get. Application threads see no interference from the GC.

Concurrency Support Demonstrated scalability to 8 cores. High-performance locking support: Priority Inheritance, Inline Locks, and Biased Locks Support for non-blocking synchronization.

Customizable GC Fragmentation allowed but bounded (like malloc/free) Conventional Java MMTk GenImmix no fragmentation no pauses Fiji CMR Fiji Schism/cmr Predictability/Certifiability Throughput

Customizable footprint More Java features, excellent for mission-critical systems 2 MB Hard Safety Critical profile 500 KB GNU Classpath 100 KB FijiCore SCJ FijiMicro SCJ Standard Java profile More Compact More Features

Execution time vs. Competition 83% faster than leading competitor.

Predictability Standard JVM Fiji VM >100ms pauses! no pauses! completely predictable execution! *CDx benchmark HARD configuration.

Correlation: C vs. Java C Iteration Execution Time Java Iteration Execution Time

Against C code on RTEMS/LEON3 Java s worst-case is 10% worse than C s. GC has zero effect on predictability.

Integration Rapita JML Fiji VM Eclipse IDE

Deeply Embeddable Fiji VM allows unmodified Java programs to boot from bare hardware. Can write kernel drivers in Java. Currently works on POSIX, RTEMS. Ports to Linux kernel, vxworks, and Integrity in progress. vxworks: scheduled for mid-2010 Easy to port to new OS s

Summary Safety Critical Java enables a more cost-effective development process for safety-critical systems. Fiji VM allows Java code to run quickly and predictably. With Fiji VM, Java can be used anywhere that C or C++ are used, saving development costs and time.

Fiji VM Code Statistics Size of runtime: 20,000 lines of C code 10,000 lines of Java code this includes code for all configurations. Size of compiler: 4,000 lines of Ruby code 50,000 lines of Java code