YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: The Mana Project

The Mana Project

Lars AsplundKristina Lundqvist

Uppsala University, Information Technology, Dept of Computer Systems

Page 2: The Mana Project

The Mana Project

Lars AsplundKristina Lundqvist

Uppsala University, Information Technology, Dept of Computer Systems

Page 3: The Mana Project

Background

• Formal methods have been used in a number of safety critical systems– TGV – train signalling system in Paris

• Today's safety critical systems use cyclic executives.• Research take for granted that a system consists of

processes (scheduling, priorities), and that there is communications between these.

• Process based safety critical systems - formal methods (Raven, Enea …)

Page 4: The Mana Project

Ada-83

•Tasking•Rendez-vous•Dynamic•Hierarchy•Termination•...

Ada83

•For High Integrity Systems•Subsets:

•SPARK (No tasking)•Boeing•...

•Complex Run-Time•No Formal Proofs

Page 5: The Mana Project

Ada-95

•Tasking•Rendez-vous•Dynamic•Hierarchy•Termination•...

•Protected Objects•ATC•requeue•delay until•new interrupts•task attributes•...

Ada95 Subsets:

GNORT (Gnat NO Run-Time)SPARK-95

Ravenscar•Tasking•Protected Objects•delay until•new interrupts•task attribute

Page 6: The Mana Project

Ada 95 and Ravenscar

• The Ravenscar profile has been proposed as a possible standard runtime support system suitable for safety critical real-time Ada 95 applications.

• The subset provides enough functionality for targeted systems .

Page 7: The Mana Project

Ravenscar - tasking

• Library level• No dynamic creation• No unchecked deallocation• Non-terminating• No entries• No user defined attributes• Keep task discriminants• No ATC

Page 8: The Mana Project

Ravenscar - Protected Objects

• Single Entry• Barrier a single Boolean• Only one task in the entry queue

Page 9: The Mana Project

Ravenscar - Communication

• No Rendez vous• No requeue• No select statement• Interrupts are mapped only to PO

procedures

Page 10: The Mana Project

Ravenscar - Real Time

• delay until for delays• No Calendar• Clock from Real-Time package• No dynamic priorities• Immediate Ceiling Priority

Page 11: The Mana Project

The Mana Project

• Project Aim: Develop and model a run-time system using formal development methodologies. Implement for the gnu Ada-95 compiler.

• Target: Safety critical systems at the highest degree of safety, e.g. Nuclear power plants, ATC, aircraft, ...

Page 12: The Mana Project

The Mana Project

• Chosen language:– Subset of Ada 95: Ravenscar

• Representation model: Timed Automata– FSAs extended with clocks and constraints

• Verification scheme: A Real-Time Model Checker– UPPAAL: Modelling, simulation, and verification

tool

Page 13: The Mana Project

A System Model

SchedulerPO

T1 T2 T3

Delay Queue

ClockT0

Application

Run-Time KernelP EF

Delay untilTask dispatch

Ready Queue

Page 14: The Mana Project

A Verification Session

• Design.Timed Automata Model of1. An application (user code)2. Run-time kernel (Mana)

• Simulation of design• Verification by checking reachability

properties

Page 15: The Mana Project

A System Model

SchedulerPO

T1 T2 T3

Delay Queue

ClockT0

Application

Run-Time KernelP EF

Delay untilTask dispatch

Ready Queue

Page 16: The Mana Project

Simple application (T1)

task body T1 is -- at priority 1 NextTime : Time := Clock + 30.0;begin loop Work (5); delay until NextTime; PO.P; -- releases the PO entry NextTime := NextTime + 30.0; end loop;end T1;

Delay seq

Prot Proc

Page 17: The Mana Project

Protected Procedure

Calling Task

Procedure StartProcedure beginPreemptionRelease of Entry

Page 18: The Mana Project

Task T2

task body T2 is -- at priority 2 Cond : Boolean := false;begin loop Work (10); if Cond then PO.E; else Cond := not Cond; Work (5); end if; Work (4); end loop;end T2;

Prot Entry

Page 19: The Mana Project

Protected Entry

Calling Task

Entry Start

Lock Free and no Barrier

Barrier trueReleased by Procedure

Page 20: The Mana Project

Protected Entry

Calling Task

ExecutingPreemption

ExceptionPreemption in exceptionNormal end

Page 21: The Mana Project

Task T3task body T3 is -- at priority 3 NextTime : Time := Clock + 18.0;begin loop case Cmd is when Ack => for I in 1..4 loop Work (5); PO.P; end loop; when Connect => Work (15); when Disconnect => Work (20); when Send => Work (10); end case; delay until NextTime; NextTime := NextTime + 18.0; end loop;end T3;

Prot Proc

Delay

Page 22: The Mana Project

A view of the System

F

PE

Prot Obj

Scheduler

T1 T2 T3

Delay Queue

Clock

T0

Delay untilTask dispatch

Ready Queue

Page 23: The Mana Project

Miscellaneous

Protected Function

Delay Queue

System Clock

Page 24: The Mana Project

The Run-Time System

F

PE

Prot Obj

Page 25: The Mana Project

Task T1

task body T1 is -- at priority 1 NextTime : Time := Clock + 30.0;begin loop work (5); delay until NextTime; PO.P; -- releases the PO entry NextTime := NextTime + 30.0; end loop;end T1;

Delay seq

Prot Proc

Page 26: The Mana Project

Building the System

F

PE

Prot Obj

T1

Page 27: The Mana Project

Task T2

task body T2 is -- at priority 2 Cond : Boolean := false;begin loop work (10); if Cond then PO.E; else Cond := not Cond; work (5); end if; work (4); end loop;end T2;

Prot Entry

Page 28: The Mana Project

A more Complete System

F

PE

Prot Obj

T1

T2

Page 29: The Mana Project

Task T3task body T3 is -- at priority 3 NextTime : Time := Clock + 18.0;begin loop case Cmd is when Ack => for I in 1..4 loop work (5); PO.P; end loop; when Connect => work (15); when Disconnect => work (20); when Send => work (10); end case; delay until NextTime; NextTime := NextTime + 18.0; end loop;end T3;

Prot Proc

Delay

Page 30: The Mana Project

A Complete System

F

PE

Prot Obj

T1

T2

T3

Page 31: The Mana Project

Scheduler and Idle process

Resume!

Suspend!

Resume!

Preempt!

Resume? Pcpu:= PLow

Preempt?

StartIdle Process is running

Resume? Pcpu:= PMed

Resume? Pcpu:= PHighMedium Process availableMedium Process runningIdle Process PreemptedHigh Process availableHigh Process running

Medium Process PreemptedIdle Process

Scheduler

Page 32: The Mana Project

Verifying Reachability Properties

• Statements format:Invariant()Possible()Where (atomic-formula) | | ’

• Examples:– Possible(CPU’Count > 1)

• At any point in time, there must be only one task executing– Invariant(P.Completed and E.Queue’Count > 0 and

E.Barrier imply Exec(E.Code, P.Context))

Page 33: The Mana Project

Conclusions and future work

• Have today modelled a full Ravenscar compliant RTK– PO: priorities, preemption

• Procedure, Function and Entry• Release on behalf

– delay until– exception handling in PO– interrupt

Page 34: The Mana Project

Conclusions and future work

• Verified the Mana-RTK together with a small application

• Next step is to implement the Mana-RTK – Automatic translation from Ada into TA

• http://www.docs.uu.se/mana


Related Documents