35
© Andy Wellings, 2004 Concurrent and Real-Time Programming in Java Electronic copies of course foils available via http://www-course.cs.york.ac.uk/crt Course book: “Concurrent and Real-Time Programming in Java” Andy Wellings, Wiley, 2004 (£20.99 from Amazon) Real-Time Specification for Java (RTSJ) Versions 1.0.1 is available from http://www.rtj.org

© Andy Wellings, 2004 Concurrent and Real-Time Programming in Java Electronic copies of course foils available via

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

© Andy Wellings, 2004

Concurrent and Real-Time Programming in

Java

Electronic copies of course foils available via http://www-course.cs.york.ac.uk/crt

Course book: “Concurrent and Real-Time Programming in Java” Andy Wellings, Wiley, 2004 (£20.99 from Amazon)

Real-Time Specification for Java (RTSJ) Versions 1.0.1 is available from http://www.rtj.org

© Andy Wellings, 2004

Books

RTSJ Version 0.9 RTSJ Version 1.0.1

© Andy Wellings, 2004

Other books

RTSJ Version 0.9RTSJ Version 1.0

© Andy Wellings, 2004

Practicals

Start week 3 Demonstrators:

© Andy Wellings, 2004

Thursday 14.15

© Andy Wellings, 2004

Thursday 15.15

© Andy Wellings, 2004

Prerequisites

You should already:

be a competent programmer in an imperative programming language like C, Pascal, Ada, C++, C# etc

be able to program in sequential Java

have a good understanding of Operating System Principles, in particular the mechanisms needed to support concurrency, e.g. processes, semaphores, etc

© Andy Wellings, 2004

Overall Technical Aims of the Course

To understand the basic requirements of concurrent and real-time systems

To understand how these requirements have influenced the design of Java and the Real-Time Specification for Java

To be able to program advanced concurrent real-time Java systems

© Andy Wellings, 2004

Course Contents I

Introduction to Course, Concurrent and Real-Time

Programming

Concurrent Programming in Java

Communication and Synchronization

Motivation for, and an overview of, the RTSJ

Memory Management

Clocks and Time

Scheduling and Schedulable Objects

Asynchronous Events and Handlers

© Andy Wellings, 2004

Course Contents II

Real-Time Threads

Asynchronous Transfer of Control

Resource Control

Schedulability Analysis

Conclusions

© Andy Wellings, 2004

Concurrent Programming

The name given to programming notation and techniques for expressing potential parallelism and solving the resulting synchronization and communication problems

Implementation of parallelism is a topic in computer systems (hardware and software) that is essentially independent of concurrent programming

Concurrent programming is important because it provides an abstract setting in which to study parallelism without getting bogged down in the implementation details

© Andy Wellings, 2004

Why we need it

To fully utilise the processor

10-7

10-6

10-5

10-4

10-3

10-2

10-1

102

101

10-8

10-9

Res

pons

e ti

me

in s

econ

ds

100 human tape

floppy

CD

memory

processor

© Andy Wellings, 2004

Parallelism Between CPU and I/O Devices

CPU I/O Device

Initiate I/OOperation Process I/O

Request

Signal Completion

Interrupt I/ORoutine I/O Finished

Continue withOutstanding Requests

© Andy Wellings, 2004

Why we need it

To allow the expression of potential parallelism so that more than one computer can be used to solve the problem

Consider trying to find the way through a maze

Sequential Maze Search

Concurrent Maze Search

© Andy Wellings, 2004

Why we need it

To model the parallelism in the real world

Virtually all real-time systems are inherently concurrent — devices operate in parallel in the real world

This is, perhaps, the main reason to use concurrency

Air Traffic Control

© Andy Wellings, 2004

Why we need it Alternative: use sequential programming techniques The programmer must construct the system as the

cyclic execution of a program sequence to handle the various concurrent activities

This complicates the programmer's task and involves considerations of structures which are irrelevant to the control of the activities in hand

The resulting programs will be more obscure and inelegant

Decomposition of the problem is more complex Parallel execution of the program on more than one

processor is more difficult to achieve The placement of code to deal with faults is more

problematic

© Andy Wellings, 2004

Terminology

A concurrent program is a collection of autonomous sequential processes, executing (logically) in parallel

Each process has a single thread of control The actual implementation (i.e. execution) of a

collection of processes usually takes one of three forms.

Multiprogramming processes multiplex their executions on a single processor

Multiprocessing processes multiplex their executions on a multiprocessor

system where there is access to shared memory

Distributed Processing processes multiplex their executions on several processors

which do not share memory

© Andy Wellings, 2004

What is a real-time system?

A real-time system is any information processing system which has to respond to externally generated input stimuli within a finite and specified period

the correctness depends not only on the logical result but also the time it was delivered

failure to respond is as bad as the wrong response!

The computer is a component in a larger engineering system => EMBEDDED COMPUTER SYSTEM

99% of all processors are for the embedded systems market

© Andy Wellings, 2004

Terminology Hard real-time — systems where it is absolutely imperative

that responses occur within the required deadline. E.g. Flight control systems.

Soft real-time — systems where deadlines are important but which will still function correctly if deadlines are occasionally missed. E.g. Data acquisition system.

Firm real-time — systems which are soft real-time but in which there is no benefit from late delivery of service.

A system may have all hard, soft and real real-time subsystemsMany systems may have a cost function associated with missing each deadline

© Andy Wellings, 2004

A simple fluid control system

Pipe

Flow meter

Valve

Interface

ComputerTime

Input flowreading

Processing

Output valveangle

© Andy Wellings, 2004

A Grain-Roasting Plant

Fuel Tank

Furnace

Bin

Pipe

fuel

grain

© Andy Wellings, 2004

A Process Control System

ProcessControl

Computer

ChemicalsandMaterials

ValveTemperatureTransducer

StirrerFinishedProducts

PLANT

© Andy Wellings, 2004

A Production Control System

ProductionControlSystem

Parts

Machine Tools Manipulators Conveyor Belt

FinishedProducts

© Andy Wellings, 2004

A Command and Control System

Temperature, Pressure, Power and so on

Terminals

Command and ControlComputer

CommandPost

Sensors/Actuators

© Andy Wellings, 2004

A Typical Embedded System

Algorithms forDigital Control

Data Logging

Data Retrievaland Display

OperatorInterface

InterfaceEngineeringSystem

RemoteMonitoring System

Real-TimeClock

Database

Operator’sConsole

Display Devices

Real-Time Computer

© Andy Wellings, 2004

Characteristics of a RTS

Large and complex — vary from a few hundred lines of assembler or C to 20 million lines of Ada estimated for the Space Station Freedom

Concurrent control of separate system components — devices operate in parallel in the real-world; better to model this parallelism by concurrent entities in the program

Facilities to interact with special purpose hardware — need to be able to program devices in a reliable and abstract way

© Andy Wellings, 2004

Characteristics of a RTS

Extreme reliability and safe — embedded systems typically control the environment in which they operate; failure to control can result in loss of life, damage to environment or economic loss

Guaranteed response times — we need to be able to predict with confidence the worst case response times for systems; efficiency is important but predictability is essential

© Andy Wellings, 2004

Real-time Programming Languages

Assembly languages Sequential systems implementation languages —

e.g. RTL/2, Coral 66, Jovial, C. Both normally require operating system support. High-level concurrent languages. Impetus from the

software crisis. e.g. Ada, Chill, Modula-2, Mesa, Java. No operating system support! We will focus on Java and the Real-Time

Specification for Java See Burns, Wellings, Real-Time Systems and

Programming Languages, 3rd Edition, 2001, Addison Wesley for a general discussion on other languages and operating systems

© Andy Wellings, 2004

Java Architecture

Real-time Operating System

JVM

JBC

Standalone

JVM

JBC

Hardware JVM

JBC

© Andy Wellings, 2004

Summary I

The motivations for concurrent programming have been presented: fully utilize the processor allow parallel execution model real world parallelism

Two main classes of real-time systems have been identified: hard real-time systems soft real-time systems

© Andy Wellings, 2004

Summary II

The basic characteristics of a real-time or embedded computer system are: largeness and complexity, manipulation of real numbers, extreme reliability and safety, concurrent control of separate system components, real-time control, interaction with hardware interfaces, efficient implementation.

© Andy Wellings, 2004

Further Reading

Chapter 1 of Burns and Wellings, “Real-Time Systems and Programming Languages”, 3rd Edition, 2001 (in library)