Profilul Ravenscar
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ă
- ^ a b John Barnes , profilul The Ravenscar , la adaic.org .
Bibliografie
- Alan Burns , The Ravenscar Profile ( PDF ), în ACM SIGAda Ada Letters , XIX, n. 4, decembrie 1999, pp. 49–52, DOI : 10.1145 / 340396.340450 . Adus pe 19 septembrie 2019 (depus de „url original 29 februarie 2012).
- Alan Burns, Brian Dobbing și Tullio Vardanega, Ghid pentru utilizarea profilului Ada Ravenscar în sisteme de înaltă integritate ( PDF ), în ACM SIGAda Ada Letters , XXIV, n. 2, iunie 2004, pp. 1–74, DOI : 10.1145 / 997119.997120 .
- Profil Ravenscar pentru sisteme de înaltă integritate , AI95-00249, ISO / WG9 Ada Raportor Group.