Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 10: atomaire acties, gelijktijdige processen en betrouwbaarheid.

Slides:



Advertisements
Verwante presentaties
Les 13 De herbieding van de bijbieder (1)
Advertisements

De zin en onzin van escrow
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Doublet deel 1 – de basis.
CIMSOLUTIONS B.V. CIMSOLUTIONS Automation for Industry & Business SIG Embedded “Proces Ellende” André Vink CDP real-time embedded 28 september 2005.
28 juni 2009 Paëllanamiddag 1 Paëllanamiddag 28 juni 2009 Voorbereiding vrijdagavond (Loopt automatisch - 7 seconden)
Leer de namen van de noten 1
Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.
Programmeren met Alice
ICT Infrastructuren 26 november 2007 David N. Jansen.
Ronde (Sport & Spel) Quiz Night !
BESTURINGS SYSTEMEN Vincent Naessens.
prNBN D addendum 1 Deel 2: PLT
Basisgeheugenschakelingen
Klassieke AO Leseenheid1
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Start.
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
Leer de namen van de noten 2
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Assenstelsels en het plotten van Functies in LOGO
Interaction diagrams: Sequence Diagram
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
Frank Stalpers en Ad Baars
Hoofdstuk 18 Veranderingen in organisaties tot stand brengen
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur laag-niveau programmeren uit hoofdstuk 15 van Alan Burns, Andy Wellings,
1 19 dec Rijnsburg 19 dec Rijnsburg. 2 Hebreeën 8 1 De hoofdzaak VAN ONS ONDERWERP is, dat wij zulk een hogepriester hebben, die gezeten is.
Visual Basic.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
DEEL 2 LES 16 De verdieping Les 16 Slembiedingen versie
Event Handling in Embedded Systems.  Wat is een event?  Welke events zijn het meest “time-critical”?  Welke toestand wordt door de CPU opgeslagen?
Object georiënteerd programmeren in Alice
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Hoofdstuk 5 Vijfkaart hoog, eerste verkenning 1e9 NdF-h1 NdF-h5 1 1.
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
tafel van 1 tafel van 1 x 1 = 1 x 1 = 1 2 x 1 = 2 3 x 1 = 3 4 x 1 = 4
13 juni 2013 Bodegraven vanaf hoofdstuk 7:1 1. 1Korinthe 7 1 Wat nu de punten betreft, waarover gij mij geschreven hebt, het is goed voor een mens niet.
Middeleeuwen De antwoorden in deze powerpoint komen van (naam en klas invullen a.u.b.)
Even voorstellen : Groep 3b
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 6: uitzonderingen en de behandeling van uitzonderingen.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 11: controle van de hulpmiddelen.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
Floodcom lesworkshop Hoofdpresentatie les
April Slide 2"Insert" Date via Date & Time Sales product training Amsterdam, the Netherlands Lennart van Houwelingen Fallbrook Technologies.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 12: mogelijkheden om met tijd om te gaan.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
RTP slide 1Programmatuur voor real-time controleYolande Berbers oefenzittingen n enkel voor de studenten die dit vak als keuzevak kiezen n nu donderdag,
CONTROLESTRUCTUREN (DEEL 1)
Hoofdstuk 3 - Conditionele logica
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
1 XSLT processing & control Datamodellering 2006.
Cegeka & TenForce Ronde tafel 17/06/2014 Doelstellingenmanagement VO.
Slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 8: synchronisatie en communicatie met gedeelde variabelen.
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Transcript van de presentatie:

slide 1Programmatuur voor real-time controleYolande Berbers RTPReal-Time Programmatuur hoofdstuk 10: atomaire acties, gelijktijdige processen en betrouwbaarheid

RTP slide 2Programmatuur voor real-time controleYolande Berbers overzicht n atomaire acties u definitie en eigenschappen u ondersteuning voor atomaire acties in programmeertalen u atomaire acties en achterwaarts herstel (voorlopig niet) u atomaire acties en voorwaarts herstel (voorlopig niet) n asynchrone events, signalen en asynchrone transfer van controle u signalen in POSIX u asynchrone transfer van controle in Ada (voorlopig niet)

RTP slide 3Programmatuur voor real-time controleYolande Berbers 3 soorten relaties tussen processen n onafhankelijke processen (geen comm. of synchronisatie) u als een proces faalt heeft dit geen invloed op andere processen u betrouwbaarheid door gebruik van herstelblokken en het behandelen van uitzonderingen n samenwerkende processen (wel comm. of synchronisatie) u als een fout in 1 proces optreedt kan dit invloed hebben op andere processen u dit behandelen we in dit hoofdstuk n processen in competitie voor hulpmiddelen u synchronisatie voor de hulpmiddelen u fout in 1 proces mag geen invloed hebben op andere processen u zie hoofdstuk 11

RTP slide 4Programmatuur voor real-time controleYolande Berbers atomaire acties n voor één actie moet er soms meer dan eens gecommuniceerd en gesynchroniseerd worden n vb: overschrijven van geld van rekening A naar rek. B u authenticatie van degene die het geld overschrijft u nakijken of er genoeg geld op rekening A staat u werkelijk afhalen van het geld u geld op rekening B plaatsen n van belang: alle processen zien consistente toestand n zo een aantal gezamenlijke handelingen moeten ‘ondeelbaar’ uitgevoerd worden: buitenwereld ziet geen tussentoestanden (bv buitenwereld ziet nooit een moment dat geld afgehaald is op rekening A maar nog niet gestort is op rekening B) n dit heet atomaire actie

RTP slide 5Programmatuur voor real-time controleYolande Berbers atomaire acties n wanneer hulpmiddelen nodig zijn (bv bestanden) dan gebeurt dat in twee fasen u groeiende fase l de hulpmiddelen worden aangevraagd u krimpende fase l de hulpmiddelen worden weer vrijgegeven u deze fazen zijn strikt gescheiden l bv niet eerst geld afhalen van rekening A en die al vrijgeven voordat rekening B aangevraagd is l in dat geval zou een buitenstaander kunnen zien dat er geld afgehaald is op rekening A maar nog niet gestort is op rekening B

RTP slide 6Programmatuur voor real-time controleYolande Berbers atomaire acties n atomaire transacties u eigenschap: alles of niets (als een fout optreedt wordt de begintoestand automatisch hersteld) u dit wordt door het systeem ondersteund (zie hoofdstuk 14) l programmeur heeft dan ook geen vat op deze ondersteuning (bv herstel procedures kunnen niet opgegeven worden) u is een vorm van achterwaarts herstel, laat geen voorwaarts herstel toe u veel gebruikte term bij besturingsystemen en gegevensbanken u worden soms ook wel herstelbare acties of atomaire acties genoemd

RTP slide 7Programmatuur voor real-time controleYolande Berbers atomaire acties n vereisten voor atomaire acties u welbepaalde grenzen l start s beginplaats in elk proces dat deel uitmaakt van atomaire actie l einde s eindplaats in elk proces dat deel uitmaakt van atomaire actie l zij-grenzen s dit scheidt de processen die deel uitmaken van atomaire actie van andere processen u atomaire acties kunnen genest zijn l alleen strikte nesting (processen die betrokken zijn bij de geneste actie moeten een subset zijn van degene uit actie)

RTP slide 8Programmatuur voor real-time controleYolande Berbers atomaire acties n vereisten voor atomaire acties u ondeelbaarheid l geen communicatie tussen de processen die deel uitmaken van de atomaire actie en andere processen in het systeem (behalve beheerders van hulpmiddelen) l vb: gedeelde variabele tussen 2 atomaire acties: deze kunnen alleen strikt na elkaar uitvoeren l geen synchronisatie bij begin nodig, wel bij het einde s een proces kan atomaire actie pas verlaten als alle processen die deel uitmaken van atomaire actie gedaan hebben en ook bereid zijn de atomaire actie te verlaten u totaal verschillende atomaire acties kunnen gelijktijdig uitvoeren l effect zal zelfde zijn dan wanneer strikt na elkaar uitvoeren

RTP slide 9Programmatuur voor real-time controleYolande Berbers atomaire acties tijdsas P1P2P3P4P5P6 geneste actie B actie A

RTP slide 10Programmatuur voor real-time controleYolande Berbers atomaire acties in programmeertalen n geen enkele huidige programmeertaal biedt taalondersteuning voor atomaire acties n de semantiek van een atomaire actie kan gerealiseerd worden met behulp van u semaforen (zie boek, goed extra voorbeeld van semaforen) u monitors (zie boek, goed extra voorbeeld van monitors) u protected objects (zie volgende slides) (voorlopig niet)

RTP slide 11Programmatuur voor real-time controleYolande Berbers atomaire acties in Ada n wanneer er maar twee processen betrokken zijn is het rendez-vous mechanisme voldoende n meer dan twee processen: geen taal-ondersteuning voor atomaire acties n alternatief: creëer een ‘actie-controller’ (een protected object) die het geheel synchroniseert (zie de drie volgende slides) u elk proces dat deel uitmaakt van de atomaire actie zal zijn begin melden door een entry op te roepen u wanneer proces zijn deel van atomaire actie gedaan heeft, zal proberen de actie te verlaten door ‘finished’ entry op te roepen l deze heeft een wachter, die pas de entry opent wanneer alle processen die deel uitmaken van de actie aan de entry wachten

atomaire acties in Ada package Action_X is procedure Code_For_First_Task (--params); procedure Code_For_Second_Task (--params); procedure Code_For_Third_Task (--params); end Action_X; package body Action_X is protected Action_Controller is entry First; entry Second; entry Third; entry Finished; private First_Here : Boolean := False; Second_Here : Boolean := False; Third_Here : Boolean := False; Release : Boolean := False; end Action_Controller ;

atomaire acties in Ada protected body Action_Controller is entry First when not First_Here is begin First_Here := True; end First; -- analoog voor Second en voor Third entry Finished when Released or Finished’Count = 3 is begin if Finished’Count = 0 then Release := False; First_Here := False; Second_Here := False; Third_Here := False; else Release := True; end if ; end Finished; end Action_Controller ;

RTP slide 14Programmatuur voor real-time controleYolande Berbers atomaire acties in Ada procedure Code_For_First_Task (-- params) is begin Action_Controller.First; -- eerst worden de nodige hulpmiddelen aangevraagd -- en daarna wordt de actie zelf uitgevoerd Action_Controller.Finished; -- nu kunnen de hulpmiddelen vrij gegeven worden end Code_For_First_Task; -- analoog voor tweede en voor derde taak begin -- initalisaties die nodig zijn end Action_X ;

RTP slide 15Programmatuur voor real-time controleYolande Berbers atomaire acties en achterwaarts herstel n herstel van verschillende gelijktijdig uitvoerende processen kan moeilijk zijn u achterwaarts herstel kan leiden tot het domino effect (zie hoofdstuk 5, herhaling op volgende slide) u probleem omdat er geen consistente herstellijn is bij alle processen (een herstellijn bevat herstelpunten in alle processen) u bij atomaire actie is deze consistente herstellijn er wel: de verzameling van de beginpunten in alle processen van atomaire actie u momenteel biedt geen enkele taal hiervoor echte ondersteuning u systemen die hiervoor ondersteuning geven bieden atomaire transacties aan u in het boek worden een aantal voorstellen besproken: conversaties, dialogen en colloquia (hoef je niet te kennen)

RTP slide 16Programmatuur voor real-time controleYolande Berbers domino-effect (herhaling uit H. 5) R 11 R 12 R 13 R 21 R 22 P1P1 P2P2 interactie herstelpunt tijdsas detectie

RTP slide 17Programmatuur voor real-time controleYolande Berbers atomaire acties en voorwaarts herstel n wanneer een fout optreedt moet dit doorgegeven worden aan alle deelnemende processen u een fout die op die manier doorgegeven wordt aan een proces is asynchroon, omdat de fout niets te maken heeft met wat het ontvangende proces op dat moment aan het uitvoeren is u (dit is ook waar voor achterwaarts herstel) u bij ontvangst van een asynchrone uitzondering l zowel beëindigingsmodel als voortzettingsmodel mogelijk

RTP slide 18Programmatuur voor real-time controleYolande Berbers atomaire acties en voorwaarts herstel n mogelijke problemen bij het optreden van uitzonderingen u verschillende uitzonderingen kunnen in verschillende processen gelijktijdig optreden l bv in proces A treedt uitzondering X op, in proces B uitzondering Y l welke uitzondering moet een proces C nu behandelen ? l mogelijke oplossing: uitzonderingsboom (details: zie boek) u een uitzondering treedt op terwijl gelijktijdig een geneste atomaire actie bezig is (die ondeelbaar is en niet zomaar gestopt kan worden) l voor mogelijke oplossingen: zie boek

RTP slide 19Programmatuur voor real-time controleYolande Berbers asynchrone events n ondersteuning voor asynchrone uitzonderingen: onbestaand in huidige programmeertalen en besturingssystemen n ondersteuning voor asynchrone events: bestaat wel u mechanisme waarbij een proces A de aandacht van proces B kan vragen, zonder dat B expliciet hierop moet wachten u mechanisme kan gebruikt worden voor foutherstel in systemen met gelijktijdige uitvoerende processen u proces B definieert per soort event een behandelingsroutine (handler) die opgeroepen moet worden wanneer het overeenkomstige event toekomt u twee modellen mogelijk (zie volgende slide): het voortzettingsmodel en het beëindigingsmodel

RTP slide 20Programmatuur voor real-time controleYolande Berbers asynchrone events n ondersteuning voor asynchrone events u twee modellen mogelijk l het voortzettingsmodel s komt overeen met een software-interrupt s voorbeeld: POSIX (zie verder) l het beëindigingsmodel s ontvangend proces definieert een domein waarbinnen het bereid is asynchrone events te ontvangen s na de behandeling van het event zal de controle terugkeren naar een andere plaats s Ada supporteert dit s het maakt het run-time systeem een stuk ingewikkelder door deze transfer van controle

RTP slide 21Programmatuur voor real-time controleYolande Berbers asynchrone events n nood aan asynchrone events u in bepaalde omstandigheden moet een proces snel reageren op bepaalde gebeurtenissen l pollen of wachten is vaak niet aangewezen u herstel van fouten l voor het ondersteunen van atomaire acties u verandering van uitvoeringsmodus l sommige toepassing werken in verschillende fazen; in elke faze spreekt men van een andere uitvoeringsmodus (bv bij een vliegtuig: opstijgen, normaal vliegen, landen, noodtoestand) l veranderen van modus kan verwacht zijn of heel plots gebeuren u berekeningen die steeds verfijnd kunnen worden (zie volgende slide) u gebruikersinterrupts (zie volgende slide)

RTP slide 22Programmatuur voor real-time controleYolande Berbers asynchrone events n nood aan asynchrone events u berekeningen die steeds verfijnd kunnen worden l veel algoritmen bereiken een juister resultaat als langer kan gerekend worden l voorbeelden: numerieke berekeningen (PDE), heuristisch zoeken (beste zet in schaak) l scheduling bepaalt wanneer antwoord nodig is; er wordt verder gerekend totdat asynchroon event komt u gebruikersinterrupts l in een interactieve omgeving kan de gebruiker plots willen ingrijpen (del-toets indrukken, of klikken op een knop die de modus verandert)

RTP slide 23Programmatuur voor real-time controleYolande Berbers signalen bij POSIX n POSIX-signalen worden gebruikt u om fouten door de omgeving gedetecteerd door te geven l bv onbekende instructie (SIGILL), wijzer buiten de grenzen (SIGSEGV) u om vooraf gedefinieerde events door te geven: l bv timer loopt af (SIGALARM), gebruiker geeft ‘kill’-signaal door (SIGKILL) u om toepassingsgedefinieerde events door te geven: SIGRTMIN.. SIGRTMAX n behandeling van signalen u elk signaal heeft een default-handler u voor elk signaal kan de gebruiker een andere handler definiëren u per signaal kan de gebruiker specifiëren: tegenhouden, negeren of behandelen

RTP slide 24Programmatuur voor real-time controleYolande Berbers signalen bij POSIX n behandeling van signalen u tegengehouden signalen l kunnen gemanipuleerd worden op verschillende manieren, o.a. later doorgelaten worden u signalen die genegeerd worden hebben geen effect u er zijn zeer vele routines (met telkens de nodige parameters) om met signalen om te gaan (klassiek voor POSIX !) n signalen en threads u signalen werden ingevoerd vóór het concept ‘threads’, dus in de veronderstelling dat een proces slechts 1 controledraad heeft u sommige signalen hebben semantisch meer betekenis voor een thread, andere voor het hele proces u dit maakt het geheel niet doorzichtiger

RTP slide 25Programmatuur voor real-time controleYolande Berbers POSIX signals u handling a signal: define handler with sigaction struct sigaction { void (*sa_handler) (int signum); /* non real-time handler */ void (*sa_sigaction) (int signum, signinfo_t *data, void *extra); /* real-time handler */ sigset_t sa_mask; /* signals to mask during handler */ int sa_flags; /* indicates if signal is to be queued */ } int sigaction (int sig, const struct sigaction *reaction, struct sigaction *old_reaction); /* sets up a signal handler, reaction, for sig */

RTP slide 26Programmatuur voor real-time controleYolande Berbers POSIX signals u blocking a signal l function sigprocmask to manipulate mask l functions to manipulate set int sigprocmask (int how, const sigset_t *set, sigset_t *oset); /* manipulates a signal mask according ot the value of how: how = SIG_BLOCK: set is added to current set how = SIG_UNBLOCK: set is subtracted how = SIG_SETMASK: given set becomes mask */ int sigemtpyset (sigset_t *s); /* initialize a set to empty */ int sigaddset (sigset_t *s, int signum); /* add a signal to a set */ int sigdelset (sigset_t *s, int signum); /* remove a signal from set */

RTP slide 27Programmatuur voor real-time controleYolande Berbers POSIX signals u example: computation depends on system-wide mode; mode change propagated through signal # include # define MODE_A 1 # define MODE_B 2 # define MODE_CHANGE SIGRTMIN + 1 int mode = MODE_A void change_mode (int signum, siginfo_t *data, void *extra) { /* signal handler */ mode = data -> si_value.sival_int; }

POSIX signals int main () { sigset_t mask, omask; struct sigaction s, os; int local_mode; SIGEMPTYSET (&mask); SIGADDSET (&mask, MODE_CHANGE); s.sa_flags = SA_SIGINFO; s.sa_mask = mask; s.sa_sigaction = &change_mode; s.sa_handler = &change_mode; SIGACTION (MODE_CHANGE, &s, &os); /* assign handler */ while (1) { SIGPROCMASK (SIG_BLOCK, & mask, &omask); local_mode = mode; SIGPROCMASK (SIG_UNBLOCK, &mask, &omask); switch (local_mode) { case MODE_A: …… break; case MODE_B: …… break; default: …… }

RTP slide 29Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada n asynchrone controletransfer in Ada maakt gebruik van het communicatiemechanisme tussen taken select -- wachten op mogelijk event (niet oproepen !) -- zolang geen rendez-vous optreedt wordt normale actie uitgevoerd Trigger.Event; -- optioneel kunnen hier bevelen staan die uitgevoerd worden -- nadat het event ontvangen werd then abort -- normale actie (code die onderbroken kan worden) end select;

RTP slide 30Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada n ipv triggering event kan er ook een delay staan (zie hoofdstuk 12) n het kan gebeuren dat de rendez-vous plaatsvindt voordat de normale actie begonnen is

RTP slide 31Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada task Server is entry ATC_Event; end Server; task To_be_Interrupted; task body Server is begin... accept ATC_Event do Seq2; end ATC_Event;... end Server;

RTP slide 32Programmatuur voor real-time controleYolande Berbers task body To_be_Interrupted is begin... select Server.ATC_Event; Seq3; then abort Seq1; end select; Seq4;... end To_be_Interrupted; asynchrone controletransfer in Ada

RTP slide 33Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada n beschrijving van semantiek door alle mogelijke volgordes van uitvoering: u indien het rendez-vous klaar is bij binnenkomen van select l Server.ATC_Event wordt uitgevoerd l Seq2 wordt uitgevoerd l Seq3 wordt uitgevoerd l Seq4 wordt uitgevoerd l (Seq1 werd nooit begonnen) u indien geen rendez-vous start voordat Seq1 eindigt l Server.ATC_Event wordt uitgevoerd l Seq1 wordt uitgevoerd l Server.ATC_Event wordt geannuleerd l Seq4 wordt uitgevoerd

RTP slide 34Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada u indien het rendez-vous eindigt voordat Seq1 eindigt l Server.ATC_Event wordt uitgevoerd l gedeeltelijke uitvoering van Seq1 gelijktijdig met Seq2 l Seq1 wordt gestopt l Seq3 wordt uitgevoerd l Seq4 wordt uitgevoerd u indien het rendez-vous eindigt nadat Seq1 eindigt l Server.ATC_Event wordt uitgevoerd l uitvoering van Seq1 gelijktijdig met Seq2 l Server.ATC_Event wordt geannuleerd maar dit lukt niet l uitvoering van Seq2 gaat door tot einde l Seq3 wordt uitgevoerd l Seq4 wordt uitgevoerd

RTP slide 35Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada n ATC kan gebruikt worden om zowel achterwaarts herstel als voorwaarts herstel bij atomaire acties te programmeren u achterwaarts herstel l maakt gebruik van een controler protected object l elk proces kan deze controler verwittigen als er iets misloopt l in dat geval zal de controler gebruik maken van ATC om de andere processen van de atomaire actie te stoppen l de controller synchroniseert ook het einde van atomaire actie u volgende slides: enkel meest belangrijke stukken code, zie boek voor volledige code

asynchrone controletransfer in Ada protected Controller is entry Wait_Abort_Action; entry Done; procedure Signal_Abort; -- variabelen end Controller; protected body Controller is entry Wait_Abort_Action when Killed is rendez-vous wordt aangegaan om normale acties te stoppen end Wait_Abort_Action; procedure Signal_Abort is begin Killed := True; end Signal_Abort; entry Done when Done’Count = 3 or Releasing is... end Done; end Controller;

asynchrone controletransfer in Ada procedure T1_Deel_van_Atomaire_Actie_Primary is begin select Controller.Wait_Abort_Action; Controller.Done; raise Primary_Failure; then abort begin -- normale code van dit deel van de atomaire actie Controller.Done; exception when other => Controller.Signal_Abort; end ; end select; end T1_Deel_van_Atomaire_Actie_Primary ;

RTP slide 38Programmatuur voor real-time controleYolande Berbers asynchrone controletransfer in Ada u voorwaarts herstel l maakt gebruik van een controler protected object l elk proces kan deze controler verwittigen als er iets misloopt l in dat geval zal de controler gebruik maken van ATC om de andere processen van de atomaire actie te stoppen l exception wordt veroorzaakt in elk proces door expliciete raise na het rendez-vous dat de normale actie stopt l in exception gedeelte wordt aan voorwaarts herstel gedaan l als dit bij alle processen van de atomaire actie lukt, dan is de atomaire actie succesvol l dit wordt door het controller object gesynchroniseerd: elk proces geeft door of het gelukt is (Commit of Aborted) en wacht op de globale beslissing (Decision)

asynchrone controletransfer in Ada procedure T1_Deel_van_Atomaire_Actie is begin select Controller.Wait_Abort_Action (X); raise X; then abort begin -- normale code van dit deel van de atomaire actie Controller.Done (Commit); Controller.Wait (Decision); exception when E: others => Controller.Signal_Abort (E); end ; end select; exception... (zie volgende slide) end T1_Deel_van_Atomaire_Actie;

asynchrone controletransfer in Ada... exception when E: others => -- behandel de uitzondering en zet Handle_Ok op True of False if Handle_Ok then Controller.Done (Commit); Controller.Wait (Decision); else Controller.Done (Aborted); Controller.Wait (Decision); end if; if Decision = Aborted then raise Atomic_Action_Failure; end T1_Deel_van_Atomaire_Actie;

asynchrone controletransfer in Ada protected body Controller is entry Wait_Abort_Action (E: out Exception_Id) when Killed is.... end; -- rendez-vous wordt aangegaan om normale acties te stoppen procedure Signal_Abort (E: Exception_Id) is begin Killed := True; Reason := E; end Signal_Abort; procedure Done (Vote: Vote_T) is begin if Vote = Aborted then Final_Result := Aborted; end if; end Done: entry Wait (Result : out Vote_T) when Wait’Count = 3 or Releasing is begin Result := Final_Result;... end Done; end Controller;