Signalest un langage pour la programmation d’applicationsTmespReel, suivant une approchesynchrone.
1.1LaProgrammationTempsReel
Les applicationsempsTlReeeugnitsituasedtnlippsaresponticasencearlapresed d’interactionsentreleprogrammeetsonenvironnement,quiimposesapropreechellede temps.UnsystemeTempsReelrecoitsesinformationsacertainsinstants,etagitlui-mˆemesurcetenvironnementadesinstantsprecis.L’ordred’apparitiondesdonnees,leur entrelacement,comptentautantquelesvaleursdecesdonnees. N’importe quelle machine avec plusieurs capteurs ou boutons de commande est un systemeTempsReel.Ellesecomportecommeunautomate,quireagit,ouchanged’etat, augredesdiversesactionsqu’ellerecoit. Certainesautresapplications,ditesegalementTeelepmRs, prennent en compte le tempsd’executiondetˆaches,enimposantparexempledescontraintestemporellessur leurterminaison.C’estpourquoilessystemesconsideresicisontaussiappelessystemes reactifs, ouenfouis, ouabqruseem... Ces applications se trouvent dans des contextes de plus en plus critiques (avions, cen-tralesnucleaires,armes,...),necessitantundegredeabilitemaximum.Or,letestdepro-grammesTempsReelestparticulierementdicile,ainsiqueleurdebogage(reconstitution delasequenced’evenementsayantconduitauncrash). LessystemesTempsReelontlongtempseteprogrammeesoitaumoyendeprimitives debasniveau,soitavecdeslangagesdeprogrammationduparallelisme:CSP,Ada,... Cette approche, diteasynchroneemtnpoepveledaualemetrˆeptse,etsinimreted-,estnon depreuvesdeproprietes. L’approchesynchrone-orpccieSpetnsioatdseetmrnisiet.sriredesprogrammevesicea grammesdevrontfaciliterlavericationautomatiquedecertainesproprietesdusysteme, telle que l’absence de blocage.SIGNAL([1],[2],[3])est un des langages synchrones dispo-nibles, en meme temps que LUSTRE[4] et ESTEREL[5]. ˆ
6 INTRODUCTIONCHAPITRE 1. 1.2 Traitement complet d’un exemple : le VEILLEUR Andedonneruneideeintuitivedecequ’estlaprogrammationdanscelangage SIGNAL, nous proposons de traiter et de commenter une application simple, mais assez complete:leprogrammeVEILLEUR.
1.2.1 Le probleme Un processus DEMANDEUR envoie des commandes a un EXECUTANT. Une com-mandedoiteˆtreexecuteedansuncertainDELAI,sinonilyaanomalie.Onappelle VEILLEUR laboitepoeiedhcqaeuocmmandevedeirecreedei.laleElcretcoiegrahc emise,ainsiqu’unsignaldel’executantlorsquelacommandeprecedenteestterminee.Elle declencheunealarmesiundelaitroplong(xeenparametre)s’ecouleentrecesdeux signaux. Siunenouvellecommandearrivealorsquelaprecedenten’estpasachevee,lecomptage dutempsrecommenceazero.Unsignaldeterminaisonarrivantapresledelai,oune correspondantaaucunecommande,estanegliger.
1.2.2Lessignauxd’entreeetdesortie. LeprocessusVEILLEURrecoitauninstantquelconquel’avisdulancementd’une commande. On supposera que cette commande est codee par un entier. Au cours de sa vie, le VEILLEUR recevra donc sur uneentreeappeleeCOMMANDEunesuite d’entiers, chacunauninstantprecis. Ilrecoitegalementsuruneautreentreedesavisdeterminaison.Ils’agitd’unesimple information elementaire, appelee en SIGNALtnevemene, et codee par un ”booleen” toujours vrai (typeevent). Pour mesurer le temps a partir du lancement d’une commande, VEILLEUR utilise unonhreometrc)ntmenead,teTnPOveepyeeimpieunon(uulsiueiruq,riuliovneeext chaqueunitedetemps,parexemplechaqueseconde.Remarquerquel’onn’utilisepasle mothorlogemorbeennirmeapxopsedetSnesnesertuanuaierIsLADELeL.NAIG,qu decechronometre,cequievited’avoirasepreoccuperdel’unitedetempsutilisee. Ensortie,VEILLEURproduituneALARMEchaquefoisqueleDELAIestdepasse apreslancementd’uneCOMMANDE.L’alarmepeuteˆtreunevent, ou mieux, l’HEURE alaquelleseproduitl’alarme,heurecompteeparnumerotationdestopsd’entree. Enresume,lesobjetsutilisessontdoncdessuites de valeursde divers types, chaque valeurdelasuiteetantpresenteauninstantdonne. Un tel objet est appelesignal. La suitedesinstantsouunsignalprendunevaleurestappeleel’horlogedu signal. Ceprocessusconsomme3signauxd’entree:COMMANDE,TERMINEE,etleTOP duchronometreexterne.Ilproduitunsignaldesortie:ALARME.