Timeline
Chat
Prospettiva
Profilo Ravenscar
sottoinsieme hard real-time del linguaggio Ada Da Wikipedia, l'enciclopedia libera
Remove ads
Il profilo Ravenscar (Ravenscar profile) è un sottoinsieme delle funzionalità 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).[1]
Remove ads
Caratteristiche
Riepilogo
Prospettiva
Un'applicazione conforme al profilo Ravenscar impiega la direttiva
pragma Profile (Ravenscar);
che è equivalente al seguente insieme di direttive:[1]
pragma Task_Dispatching_Policy (FIFO_Within_Priorities); -- Scheduler FIFO con preemption basata su priorità
pragma Locking_Policy (Ceiling_Locking); -- Usa il protocollo priority ceiling, per prevenire l'inversione delle priorità
pragma Detect_Blocking; -- Garantisce che un'operazione potenzialmente bloccante sia rilevata e generi un'eccezione
pragma Restrictions (
No_Abort_Statements, -- Proibisce l'uso del costrutto `abort`
No_Dynamic_Attachment, -- Proibisce l'uso del package Ada.Interrupts
No_Dynamic_Priorities, -- Proibisce lettura e scrittura di priorità a runtime (package Ada.Priorities e attributo Priority)
No_Implicit_Heap_Allocations, -- Proibisce l'uso di costrutti che allocano memoria sullo heap implicitamente
No_Local_Protected_Objects, -- Oggetti protetti possono essere dichiarati solo a livello di libreria
No_Local_Timing_Events, -- Oggetti di tipo Ada.Real_Time.Timing_Events possono essere dichiarati solo a livello di libreria
No_Protected_Type_Allocators, -- Proibisce l'uso di allocatori di oggetti di tipo protetto o contenenti membri di tipo protetto
No_Relative_Delay, -- Proibisce l'uso del costrutto `delay` in forma relativa (e.g. `delay X;`)
No_Requeue_Statements, -- Proibisce l'uso del costrutto `requeue`
No_Select_Statements, -- Proibisce l'uso del costrutto `select`
No_Specific_Termination_Handlers, -- Proibisce l'uso di Task_Termination.Set_Specific_Handler e di Task_Termination.Specific_Handler
No_Task_Allocators, -- Proibisce la generazione di allocatori per oggetti di tipo task o che hanno membri di tipo task
No_Task_Hierarchy, -- Tutti i task discendono direttamente dall'environment task
No_Task_Termination, -- Tutti i task devono continuare la propria esecuzione indefinitamente e non possono terminare
Simple_Barriers, -- La guardia dell'`entry` in un oggetto protetto deve essere un valore statico o un membro dell'oggetto
Max_Entry_Queue_Length => 1, -- Non consente di avere contemporaneamente più di una chiamata nella coda di un `entry`
Max_Protected_Entries => 1, -- Un tipo protetto non può avere più di un `entry`
Max_Task_Entries => 0, -- Un task non può avere alcun `entry`
-- Proibisce l'uso dei seguenti package
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);
Remove ads
Note
Bibliografia
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads