Profil Ravenscar

Un article de Wikipédia, l'encyclopédie libre.

Le profil Ravenscar est un sous-ensemble du langage Ada dédié aux systèmes temps réel nécessitant une grande sûreté de fonctionnement. Il ne restreint que les fonctionnalités liées au parallélisme.

L'idée est de permettre de prouver formellement les propriétés temps-réel des programmes écrits selon ce profil. Le profil Ravenscar, en interdisant un certain nombre de caractéristiques du langage Ada, permet de rendre applicables les outils de preuve de programme.

Les restrictions apportées permettent également de réaliser des exécutifs plus simples, et donc eux-mêmes certifiables.

Ce profil a aussi été appliqué à la spécification temps réel RTSJ du langage Java[1].

Restrictions apportées par le profil[modifier | modifier le code]

Le profil Ravenscar est maintenant intégré à la norme Ada (2005). Il suffit d'appliquer la directive de compilation suivante:

pragma Profile (Ravenscar);

Ce profil est équivalent à l'ensemble de pragmas de configuration suivants:

pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Detect_Blocking;
pragma Restrictions (
                 No_Abort_Statements,
                 No_Dynamic_Attachment,
                 No_Dynamic_Priorities,
                 No_Implicit_Heap_Allocations,
                 No_Local_Protected_Objects,
                 No_Local_Timing_Events,
                 No_Protected_Type_Allocators,
                 No_Relative_Delay,
                 No_Requeue_Statements,
                 No_Select_Statements,
                 No_Specific_Termination_Handlers,
                 No_Task_Allocators,
                 No_Task_Hierarchy,
                 No_Task_Termination,
                 Simple_Barriers,
                 Max_Entry_Queue_Length => 1,
                 Max_Protected_Entries  => 1,
                 Max_Task_Entries       => 0,
                 No_Dependence => Ada.Asynchronous_Task_Control,
                 No_Dependence => Ada.Calendar,
                 No_Dependence => Ada.Execution_Time.Group_Budget,
                 No_Dependence => Ada.Execution_Time.Timers,
                 No_Dependence => Ada.Task_Attributes);

Références[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. J. Kwon, A. Wellings, and S. King, « Ravenscar-Java: A High Integrity Profile for Real-Time Java», York Technical Report (YCS 342), Department of Computer Science, University of York, 2002, [lire en ligne]