El perfil Ravenscar[1] és un conjunt de restriccions inicialment per al llenguatge de programació Ada per ajustar les capacitats del llenguatge als condicionants dels sistemes de temps real de seguretat crítica. Aquest perfil ha estat darrerament adaptat al llenguatge Java en la plataforma Java de Temps Real[2]

Història modifica

El perfil va ésser definit en el vuitè International Real-Time Applications Workshop,[1] celebrat el 1997 en un poblet del comtat de Yorkshire (Anglaterra) anomenat Ravenscar. Encara que inicialment va prendre la denominació del poble de la trobada, més tard se li va treure punta per associar les lletres del nom als temes involucrats com si fos un acrònim: Reliable Ada Verifiable Executive Needed for Scheduling Critical Applications in Real-Time.

Objectius del perfil modifica

Els objectius són:

  • Aconseguir un model d'execució concurrent determinista.
  • Permetre una implementació que no creï excessiva sobrecàrrega perquè les tasques puguin respondre en terminis molt breus.

Restriccions del perfil modifica

El perfil es concreta en una sèrie de pragmes (instruccions al compilador)

pragma Task_Dispatching_Policy (FIFO_Within_Priorities);
pragma Locking_Policy (Ceiling_Locking);
pragma Detect_Blocking; -- nou a l'Ada2005[3]
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);

en la versió Ada2005 es poden resumir en

pragma Profile (Ravenscar);

Referències modifica

Enllaços externs modifica