Profilul Ravenscar

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Profilul Ravenscar ( profilul Ravenscar ) este un subset al funcționalității limbajului Ada conceput pentru sistemele critice , care oferă garanții în timp real pentru programele implementate în conformitate cu acesta. Acesta a fost definit într-un raport tehnic în urma definiției standardului Ada 95 și a devenit parte a standardului Ada 2012. Numit după satul englez Ravenscar , care găzduiește al 8-lea Atelier Internațional Ada în timp real (IRTAW 8). [1]

Caracteristici

O aplicație conformă cu profilul Ravenscar folosește directiva

 pragma Profile (Ravenscar);

care este echivalent cu următorul set de directive: [1]

 pragma Task_Dispatching_Policy ( FIFO_Within_Priorities ); - Planificator FIFO cu preempțiune bazată pe prioritate
Locking_Policy (Ceiling_Locking) pragma; - Utilizați protocolul de plafon prioritar, pentru a preveni inversarea priorității
Detect_Blocking pragma ; - Asigură că o operațiune potențial de blocare este capturată și aruncă o excepție
Restricții pragmatice (
                 No_Abort_Statements , - Interzice utilizarea constructului `abort`
                 No_Dynamic_Attachment , - Interzice utilizarea pachetului Ada.Interrupts
                 No_Dynamic_Priorities , - Interzice citirea și scrierea cu prioritate în timpul rulării (pachetul Ada.Priorități și atributul Priority)
                 No_Implicit_Heap_Allocations , - Interzice utilizarea constructelor care alocă implicit memorie pe heap
                 No_Local_Protected_Objects , - Obiectele protejate pot fi declarate numai la nivel de bibliotecă
                 No_Local_Timing_Events , - Obiectele de tip Ada.Real_Time.Timing_Events pot fi declarate doar la nivel de bibliotecă
                 No_Protected_Type_Allocators , - Interzice utilizarea alocatoarelor de obiecte de tip protejat sau care conțin membri de tip protejat
                 No_Relative_Delay , - Interzice utilizarea constructului `delay` în formă relativă (de exemplu,„ delay X; `)
                 No_Requeue_Statements , - Interzice utilizarea construcției `requeue`
                 No_Select_Statements , - Interzice utilizarea constructului `select`
                 No_Specific_Termination_Handlers , - Interzice utilizarea Task_Termination.Set_Specific_Handler și Task_Termination.Specific_Handler
                 No_Task_Allocators , - Interzice generarea de alocatori pentru obiecte de tip task sau care au membri de tip task
                 No_Task_Hierarchy , - Toate sarcinile coboară direct din mediul de activitate
                 No_Task_Termination , - Toate sarcinile trebuie să-și continue execuția la nesfârșit și nu pot fi încheiate
                 Simple_Barriers , - Apărătoarea `entry` într-un obiect protejat trebuie să fie o valoare statică sau un membru al obiectului
                 Max_Entry_Queue_Length => 1 , - Nu permite să aveți mai multe apeluri în coada unei „intrări” în același timp
                 Max_Protected_Entries => 1 , - Un tip protejat nu poate avea mai mult de o „intrare”
                 Max_Task_Entries => 0 , - O sarcină nu poate avea nicio „intrare”
                 - Interzice utilizarea următoarelor pachete
                 No_Dependence => Ada . Asynchronous_Task_Control ,
                 No_Dependence => Ada . Calendar ,
                 No_Dependence => Ada . Execution_Time . Group_Budget ,
                 No_Dependence => Ada . Execution_Time . Cronometre ,
                 No_Dependence => Ada . Activitate _ Atribute );

Notă

  1. ^ a b John Barnes , profilul The Ravenscar , la adaic.org .

Bibliografie

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT