b"\n_START_ARTICLE_\nProfilo Ravenscar\n_START_PARAGRAPH_\nIl profilo Ravenscar (Ravenscar profile) \xc3\xa8 un sottoinsieme delle funzionalit\xc3\xa0 del linguaggio Ada progettato per sistemi critici, che fornisce garanzie hard real-time per i programmi implementati conformemente ad esso. Fu definito in un rapporto tecnico seguente la definizione dello standard Ada 95, e divenne parte dello standard Ada 2012. Prende il nome dal villaggio inglese di Ravenscar, sede dell'ottavo International Real-Time Ada Workshop (IRTAW 8).\n_START_SECTION_\nCaratteristiche\n_START_PARAGRAPH_\nUn'applicazione conforme al profilo Ravenscar impiega la direttiva_NEWLINE_pragma Profile (Ravenscar);_NEWLINE_che \xc3\xa8 equivalente al seguente insieme di direttive:_NEWLINE_pragma Task_Dispatching_Policy (FIFO_Within_Priorities); -- Scheduler FIFO con preemption basata su priorit\xc3\xa0pragma Locking_Policy (Ceiling_Locking);                 -- Usa il protocollo priority ceiling, per prevenire l'inversione delle priorit\xc3\xa0pragma Detect_Blocking;                                  -- Garantisce che un'operazione potenzialmente bloccante sia rilevata e generi un'eccezionepragma Restrictions (_NEWLINE_                 No_Abort_Statements,              -- Proibisce l'uso del costrutto `abort`_NEWLINE_                 No_Dynamic_Attachment,            -- Proibisce l'uso del package Ada.Interrupts_NEWLINE_                 No_Dynamic_Priorities,            -- Proibisce lettura e scrittura di priorit\xc3\xa0 a runtime (package Ada.Priorities e attributo Priority)_NEWLINE_                 No_Implicit_Heap_Allocations,     -- Proibisce l'uso di costrutti che allocano memoria sullo heap implicitamente_NEWLINE_                 No_Local_Protected_Objects,       -- Oggetti protetti possono essere dichiarati solo a livello di libreria_NEWLINE_                 No_Local_Timing_Events,           -- Oggetti di tipo Ada.Real_Time.Timing_Events possono essere dichiarati solo a livello di libreria_NEWLINE_                 No_Protected_Type_Allocators,     -- Proibisce l'uso di allocatori di oggetti di tipo protetto o contenenti membri di tipo protetto_NEWLINE_                 No_Relative_Delay,                -- Proibisce l'uso del costrutto `delay` in forma relativa (e.g. `delay X;`)_NEWLINE_                 No_Requeue_Statements,            -- Proibisce l'uso del costrutto `requeue`_NEWLINE_                 No_Select_Statements,             -- Proibisce l'uso del costrutto `select`_NEWLINE_                 No_Specific_Termination_Handlers, -- Proibisce l'uso di Task_Termination.Set_Specific_Handler e di Task_Termination.Specific_Handler_NEWLINE_                 No_Task_Allocators,               -- Proibisce la generazione di allocatori per oggetti di tipo task o che hanno membri di tipo task_NEWLINE_                 No_Task_Hierarchy,                -- Tutti i task discendono direttamente dall'environment task _NEWLINE_                 No_Task_Termination,              -- Tutti i task devono continuare la propria esecuzione indefinitamente e non possono terminare_NEWLINE_                 Simple_Barriers,                  -- La guardia dell'`entry` in un oggetto protetto deve essere un valore statico o un membro dell'oggetto_NEWLINE_                 Max_Entry_Queue_Length => 1,      -- Non consente di avere contemporaneamente pi\xc3\xb9 di una chiamata nella coda di un `entry`_NEWLINE_                 Max_Protected_Entries  => 1,      -- Un tipo protetto non pu\xc3\xb2 avere pi\xc3\xb9 di un `entry`_NEWLINE_                 Max_Task_Entries       => 0,      -- Un task non pu\xc3\xb2 avere alcun `entry`_NEWLINE_                 -- Proibisce l'uso dei seguenti package_NEWLINE_                 No_Dependence => Ada.Asynchronous_Task_Control,_NEWLINE_                 No_Dependence => Ada.Calendar,_NEWLINE_                 No_Dependence => Ada.Execution_Time.Group_Budget,_NEWLINE_                 No_Dependence => Ada.Execution_Time.Timers,_NEWLINE_                 No_Dependence => Ada.Task_Attributes);"