- Reaalajas süsteem peab andma õigeid tulemusi rangete tähtaegade piires, kooskõlas füüsiliste protsesside ja deterministliku käitumisega.
- STR-i arhitektuur ühendab spetsiifilise riistvara, RTOS-i, ajastamisalgoritme (näiteks EDF) ja turvalisi samaaegsusmehhanisme.
- Tööstus, ohutus, rikketaluvus ja ajatõhusus on võtmenõuded sellistes sektorites nagu tööstus, transport, kaitsetööstus, telekommunikatsioon ja meditsiin.
- Reaalajas operatsioonisüsteemid (RTOS) ja reaalajas programmeerimiskeeled võimaldavad kujundada manustatud rakendusi, mis on võimelised reageerima välistele sündmustele piiratud ja prognoositava latentsusega.
Reaalajas elektroonilised süsteemid on meie igapäevaellu sügavalt juurdunud, kuigi sageli jäävad need märkamatuks. Alates auto turvapatjadest kuni lennujuhtimise ja isegi lihtsa mikrolaineahjuni sõltub kõik arvutisüsteemist mitte ainult asjade õigesti tegemisest, vaid ka nende tegemisest täpsel hetkel . Kui see ületab ajalimiiti, isegi kui see on täpne, loetakse see ebaõnnestumiseks, isegi kui arvutus on täiuslik.
Nende süsteemide ilu (ja väljakutse) seisneb vajaduses suhelda füüsilise maailmaga väga kindlatel ajatelgedel . Ainult "kiirusest" ei piisa: need peavad olema prognoositavad, stabiilsed ja sünkroniseeritud arvutivälise keskkonnaga. Seetõttu on reaalajas süsteemi disain, analüüs ja testimine oluliselt keerukam kui tavapärasel üldotstarbelisel süsteemil.
Mis on reaalajas süsteem ja kuidas see erineb kiirsüsteemist?
Reaalajasüsteem (RTS) on sisuliselt digitaalne süsteem, mis juhib või jälgib füüsilist protsessi selgete ajapiirangutega. See peab mitte ainult andma loogiliselt õigeid tulemusi, vaid ka tagama vastuse saabumise kindlaksmääratud aja jooksul; selle tähtaja mittetäitmine kujutab endast süsteemi riket.
Selle käitumise selgeteks näideteks on auto turvapadja või ABS-i aktiveerumine , roboti katse õhus palli püüda või tänapäevase sõiduki mootori juhtimissüsteemi töö. Kõigil neil juhtudel võib isegi mõne millisekundi võrra hilinenud reaktsioon olla kasutu või isegi ohtlik.
Sõna „aeg” tähendab selles kontekstis, et korrektne toimimine sõltub reaktsiooni toimumise ajast , mitte ainult sellest, milline see on. Ja „reaalne” viitab sellele, et süsteem peab reageerima välistele sündmustele nende tegeliku evolutsiooni ajal, kasutades ajaskaalat, mis on kooskõlas selle kontrollitava füüsilise keskkonna omaga.
See on vastupidine lihtsalt „kiire“ süsteemile, kus oluline on ainult see, et väljund ilmuks võimalikult kiiresti, ilma et peaks välismaailmaga sünkroniseerima. Väga võimas veebiserver võib olla kiire, kuid see ei ole tingimata reaalajas süsteem, kui sellel pole füüsiliste sündmustega seotud rangeid tähtaegu.
Samuti on oluline neid eristada veebisüsteemidest : need võivad alati olla ühendatud ja vastata päringutele (näiteks brauser või broneerimissüsteem), kuid nad ei pea järgima füüsiliste protsessidega kooskõlastatud jäiku tähtaegu, seega ei ole need automaatselt reaalajas süsteemid; tänapäevastes veebirakendustes võib reaalajas otsing aga nõuda sarnaseid latentsusaegu ja garantiisid.
Praktiline näide: valgusfoori reguleerimine ristmikul
Väga hea näide reaalajas töötavatest elektroonilistest süsteemidest on tiheda liiklusega ristmikul asuv foori juhtimissüsteem . Ainult fooride enam-vähem õigeaegsest muutmisest ei piisa; otsuseid tuleb langetada pidevalt, lähtudes tänaval toimuvast.
Esiteks jälgitakse liiklust . Sõiduradadele ja ülekäiguradadele paigutatakse andurid (induktiivsilmused, kaamerad, infrapunaandurid jne), et tuvastada sõidukeid ja inimesi. Need seadmed saadavad pidevalt andmeid keskjuhtimisseadmesse, mis saab seeläbi ajakohast teavet keskkonna kohta.
Juhtimiskeskuses töötleb sisseehitatud arvuti andmeid reaalajas, rakendades algoritme , mis arvutavad järjekorras olevate sõidukite arvu, iga sõiduraja täituvuse ja ootavate jalakäijate arvu. Selle teabe põhjal määrab see, kui kaua peaks iga foori faas igas suunas kestma.
Järgmisena tuleb otsuste langetamine . Süsteem otsustab näiteks pikendada rohelist tuld kõige tihedama liiklusega suunas, et vähendada liiklusummikuid, või eelistada jalakäijate ülekäigurada, kui see on liiga kaua oodanud. Need otsused põhinevad eelnevalt määratletud optimeerimispoliitikatel ning ohutuse ja liiklusvoo nõuetel.
Kui otsus on tehtud, reageerib kontroller fooride täiturmehhanismidele . See muudab fooride olekut millisekundilise täpsusega, järgides kollast ja punast tuld, blokeeringuid ja muid ohutusnõudeid, tagades sujuva ülemineku faaside vahel.
Kõik see saavutatakse pideva optimeerimise abil : süsteem jälgib liiklust katkematult ja kohandab reaalajas rohelise, kollase ja punase tule ajastust, et kohaneda ootamatute muutustega (liiklusummik, möödasõitev kiirabi, liiklusvoo muutused teatud kellaaegadel jne). See näitab selgelt, miks me räägime reaalajast: juhtimisloogikal on mõtet ainult siis, kui otsuseid täidetakse kindla aja jooksul.
Reaalajasüsteemide ajalugu ja areng
Reaalajalise andmetöötluse päritolu on tihedalt seotud tööstus- ja lennundusprotsesside juhtimisega 20. sajandi teisel poolel. Nende süsteemide aluse pannud teatmeteosed avaldati juba 1965. aastal ja varsti pärast seda, 1973. aastal, vormistasid Liu ja Layland ajastamise matemaatilise definitsiooni rangetes ja paindlikes reaalajas süsteemides.
Arvutisimulatsioonides hakati terminit "reaalajaline simulatsioon" kasutama siis, kui arvutimudel töötas sama kiiresti kui füüsiline protsess, mida see esindas. See tekitas klassikalise dilemma: kas suurendada mudeli täpsust kiiruse arvelt või vähendada täpsust, et saavutada või ületada reaalajas jõudlust.
Sama juhtus graafiliste liideste ja mängumootoritega : sujuva kogemuse tagamiseks peavad need reageerima kasutaja sisendile ja stseenimuutustele piisavalt kiiresti, säilitades samal ajal kõrge ja konstantse kaadrite arvu sekundis.
Alates 60. ja 70. aastatest on reaalajas süsteemid küpsemaks muutunud tänu õppetundidele, mis on saadud kõrgetasemelistest, mõnedest peaaegu katastroofilistest reaalsetest juhtumitest, mis on aidanud täiustada ajaanalüüsi ja planeerimistehnikaid.
Maamärgiks olevad juhtumid: Apollo 11 ja Mars Pathfinder
Üks kuulsamaid juhtumeid reaalajas andmetöötluse algusajaloos oli Apollo 11 kuumooduli arvuti ülekoormus . Laskumise ajal hakkas juhtimissüsteem andma alarme (näiteks kuulus 1202), mis näitasid, et protsessor jäi oma töökoormusest maha.
Missiooniaruannete kohaselt oleks nende häirete püsimise korral meeskonna navigatsiooniandmete usaldusväärsus olnud ohus ja missioon oleks võinud katkeda. Lõpuks, tuginedes varasematele simulatsioonidele ja kogemustele, otsustati missiooniga jätkata ning Eagle'i moodul maandus edukalt Kuule.
Põhimõtteliselt oli tegemist protsessori ülekoormusega : arvutusi oli rohkem, kui protsessor suutis etteantud aja jooksul käsitleda, eriti kui häirega seotud töötlemine lisati tavapärasele töökoormusele. See juhtum rõhutas piisavate ressursivarude säilitamise olulisust süsteemides, kus rikke hind on vastuvõetamatu.
Teine hästi uuritud juhtum on Mars Pathfinderi kosmoselaev . Siin ei olnud probleem niivõrd töötlemata andmete ülekoormuses, kuivõrd prioriteedi inversioonina tuntud nähtuses, mis põhjustas tähtaegade ülejääki, isegi kui protsessoril oli näiliselt mõistlik mahutavus.
Preemptiivses ajastamissüsteemis toimub prioriteedi inversioon siis, kui kõrge prioriteediga ülesande blokeerib madala prioriteediga ülesanne , millel on jagatud ressurss (näiteks mutex), ja samal ajal katkestab keskmise prioriteediga ülesanne madala prioriteediga ülesande. Tulemuseks on see, et kriitiline ülesanne blokeeritakse kaudselt vähem olulise ülesande poolt, rikkudes reaalajas garantiisid.
Selle riski maandamiseks kasutatakse prioriteedi pärimise protokolli . Kui madala prioriteediga ülesanne blokeerib kõrge prioriteediga ülesande, tõstab ajastaja ajutiselt madala prioriteediga ülesande prioriteedi kõrge prioriteediga ülesande tasemele. See hoiab ära keskmise prioriteediga ülesannete poolt ülesande katkestamise, võimaldades sel ressursi võimalikult kiiresti vabastada ja seejärel algse prioriteedi juurde naasta.
Need juhtumid tegid selgeks, et STR-i kavandamine ei seisne ainult "piisava protsessori ressurssi olemasolus", vaid ka ajastamise ja ajastusteooria mõistmises ning kogu süsteemi (riistvara, püsivara ja tarkvara) ajutises koos testimises.
Reaalajasüsteemi põhikomponendid
Tüüpiline STR koosneb spetsiaalse riist- ja tarkvara ning füüsilise protsessiga seotud liideselementide kombinatsioonist . See ei ole lihtsalt programm; see on integreeritud süsteem, mis peab reageerima välistele stiimulitele teadaolevate ajaraamide piires.
Füüsikalisest küljest leiame, et süsteemi tuleb juhtida : see võib olla mis tahes protsess, mis on reguleerimisele alluv, näiteks tööstusettevõte, mootor, tootmisliin, valgusfoor, robot või meditsiiniseade. STR mõõdab selle olekut ja rakendab juhtimistoiminguid, et hoida seda soovitud parameetrite piires.
Füüsilise maailma ja arvuti vahel asub signaaliliides , mis koosneb analoog-digitaalmuunduritest (ADC) ja digitaal-analoogmuunduritest (DAC) ning töötlemisahelatest. See kiht kohandab pingeid, voolusid ja signaalivorminguid nii, et digitaalsüsteem saaks neid lugeda ja genereerida.
Põhielement on reaalajas kell , mis genereerib igas diskreetimisperioodis perioodilisi katkestusi. See sünkroniseerib andmete kogumise, juhtimise ja käivitamise ülesandeid, tagades, et mõõtmised ja käsud antakse täpselt siis, kui need peaksid olema.
Süsteem sisaldab tavaliselt inimesest operaatori konsooli koos käivitus- ja seiskamisnuppudega, liideseid parameetrite reguleerimiseks ja mehhanisme käsitsirežiimide sundimiseks. Lisaks kasutatakse ekraane olekute, häirete, trendide ja muu protsessi jälgimiseks vajaliku teabe kuvamiseks.
Olulised olekumuudatused salvestatakse reaalajas andmebaasi , mis võimaldab registreerida toimunut, uurida rikkeid ja hankida statistikat halduse parandamiseks. See ajalooline teave kasvab aja jooksul ja annab teavet hoolduse, optimeerimise ja ümberkujundamise otsuste kohta.
Paljudes tööstuskeskkondades on kaugseiresüsteem , mis võimaldab tehast hajutatud juhtimiskeskustest jälgida ja mõnel juhul ka juhtida. See on oluline, kui üks rajatis sõltub teisest (näiteks tehas, mis varustab teist toorainega) ja ühes tehtud otsused mõjutavad kogu ahelat.
STR-i keskmes on manussüsteem , mille tarkvara on tavaliselt jagatud mitut tüüpi mooduliteks: digitaalsed juhtimisalgoritmid (regulaatorid, filtrid, tagasisideahelad), andmete logimine, aadressi- ja haldusliidesed ning otsene suhtlus operaatoriga.
Peamised omadused: aeg, samaaegsus, turvalisus ja tõhusus
Reaalajas süsteemid tegelevad tavaliselt suurte ja keerukate probleemidega , mis hõlmavad mitut muutujat, väliseid seadmeid ja muutuvaid tingimusi. See nõuab hoolikat tähelepanu arhitektuurile, planeerimisele ja ülesannetevahelistele kommunikatsioonimehhanismidele.
Kuna andmed pärinevad füüsilisest maailmast, peab süsteem käsitlema reaalarve (ujukoma, fikseeritud skaala jne), mis esindavad suurusi nagu temperatuur, rõhk, kiirus või pinge. Esituse ja arvutuse täpsus võib olla juhtimise kvaliteedi seisukohalt ülioluline.
Ohutus ja töökindlus on tavaliselt kriitilise tähtsusega: rike võib põhjustada tõsiseid majanduslikke kahjusid, varalist kahju, kehavigastusi või keskkonnamõjusid. Seetõttu on integreeritud rikketaluvuse tehnikad, koondamine ja kontrollitud halvenemise strateegiad.
Samaaegsus on veel üks määrav omadus. STR täidab tavaliselt loogiliselt paralleelselt mitut ülesannet: andurite lugemine, juhtimine, side, logimine , kasutajaliides jne. See nõuab jagatud ressursside haldamist, võidujooksu tingimuste vältimist ja kriitiliste osade tähtaegade ületamise tagamist.
Tõhusus ei ole luksus, see on vajadus. STR peab olema loogiliselt ja ajaliselt korrektne , aga ka optimeeritud, et kasutada täielikult ära protsessori, mälu ja sisend-/väljundseadmeid. Väljakutse seisneb ajavaru, riistvarakulu ja tarkvara keerukuse vahelise tasakaalu leidmises.
Sisend-/väljundseadmed on tavaliselt spetsialiseerunud ja tihedalt seotud füüsilise protsessiga . Me ei räägi ainult üldistest portidest, vaid ka väljasiinidest, nutikatest anduritest ja sideprotokollidest, mis on loodud latentsuse minimeerimiseks ja lühikeste tarneaegade tagamiseks.
Reaalajasüsteemide tüübid: kõvad, pehmed ja kindlad
Sõltuvalt ajastusvigade käsitlemise raskusastmest liigitatakse STR-id mitmesse kategooriasse. Kõvas reaalajas süsteemis tuleb kõiki tähtaegu eranditeta järgida. Üksainus tõrge võib kaasa tuua tõsiseid tagajärgi või vähemalt tulemuse kehtetuks muuta.
Tüüpilised näited kõvadest reaalajas süsteemidest on lennujuhtimine, teatud kriitilised meditsiinisüsteemid ja elektrilise infrastruktuuri kaitse. Sellistel juhtudel on korrektne, kuid hilinenud tulemus kasutu; süsteem tuleb projekteerida nii, et see ei ületaks ettenähtava stsenaariumi korral oma ajapiirangut.
Pehmed reaalajasüsteemid lubavad aeg- ajalt esineda viivitusi. Tulemuse kasulikkus väheneb viivitusega, kuid see on siiski kasutatav. See on nii multimeedia- või andmehõiverakendustes, kus mõned kadunud kaadrid või viivitusega näidised halvendavad kvaliteeti, kuid süsteem jätkab toimimist.
Nende kahe äärmuse vahele jäävad kindlad reaalajas süsteemid . Siin talutakse aeg-ajalt esinevaid viivitusi, kuid kui vastus saabub hilja, muutub see väärtusetuks ja see visatakse ära. Klassikaliste näidete hulka kuuluvad reaalajas video- või telekommunikatsioonisüsteemid: hilja saabunud kaader visatakse sünkroniseerimise säilitamiseks ära.
Arhitektuurid: avatud/suletud ja tsentraliseeritud/hajutatud
Reaalajas süsteeme saab liigitada ka nende tehnoloogilise avatuse astme järgi . Patenteeritud süsteemid kasutavad suletud tehnoloogiaid ja protokolle, mida kontrollib üks müüja, mis võib pakkuda head jõudlust, kuid piirab koostalitlusvõimet ja arengut.
Seevastu avatud süsteemid kasutavad avalikke standardeid ja protokolle , mis hõlbustavad erinevate tootjate komponentide integreerimist, tarkvara taaskasutamist ja järkjärgulist migreerimist uutele platvormidele.
Teine oluline erinevus on tsentraliseeritud ja hajutatud süsteemide vahel . Tsentraliseeritud lähenemisviisi korral vastutab peamine sõlm kommunikatsiooni ja kriitilise töötlemise koordineerimise eest, samas kui teised sõlmed toimivad suhteliselt lihtsate terminalide või välisseadmetena.
Hajutatud arhitektuuris on töötlemine ja kommunikatsioon jagatud mitme intelligentse sõlme vahel, mis teevad enam-vähem autonoomselt koostööd. See võimaldab skaleeritavust, koondamist ja lähedust füüsilisele protsessile, kuid raskendab aja sünkroniseerimist ja üldist koordineerimist.
Determinism, katkestuste latentsus ja reageerimisvõime
Determinism on SRT-de põhiomadus: see on võime suure tõenäosusega ennustada, kui kaua ülesande alustamine ja lõpetamine aega võtab . Asi ei ole võimalikult kiires olemises, vaid teadaoleva ja piiratud reageerimisaja omamises.
Katkestuse latentsusaeg mõõdab aega välise katkestuse genereerimisest (näiteks anduri sündmusest teatamisest) kuni süsteemi sellega töötama hakkamiseni. See väärtus on kriitilise tähtsusega, kuna paljud teenusepäringud pärinevad füüsilisest keskkonnast ja ei talu suvalisi viivitusi.
Reageerimisvõime keskendub ajale, mis kulub ülesande täitmiseks pärast katkestuse vastuvõtmist . See hõlmab selliseid tegureid nagu teenindusrutiini käivitusaeg, seotud töötlemise kestus ja pesastatud katkestuste või eelistuste mõju.
Süsteemi iseloomustamiseks tehakse tavaliselt determinismi ja reageerimisvõime kvantitatiivne analüüs: näiteks võib olla nõutav, et 95% ülesannetest täidetaks teatud aja jooksul . Seejärel tuleb RTOS-il töötavad rakendused kavandada nii, et need ei langeks halvima eeldatava jõudlusvahemiku piiridesse.
Süsteemi juhtimine protsesside ja töökindluse abil
Paljudes täiustatud reaalajas süsteemides on rakendusprotsessidel endil süsteemi üle väga täpne kontroll . Nad saavad selgesõnaliselt deklareerida oma prioriteedi, mälunõuded (milline osa peaks vahemällu salvestatama, milline vahetuspoliitika on lubatud jne) ja vajalikud õigused.
Kuigi see võib esmapilgul tunduda anarhilise mudelina, põhineb see tegelikult täpselt määratletud protsessitüüpidel ja selgetel piirangutel . On tavaline kehtestada nõuded, näiteks: "hooldusprotsessid ei tohi ületada 3% protsessori kasutusest, välja arvatud selgelt määratletud madala koormusega akende ajal".
Usaldusväärsus hõlmab enamat kui lihtsalt juhuslike rikete puudumist. Võrguteenuse pakkuja (NSP) peab säilitama teenuse kvaliteedi kokkulepitud piirides pikema aja jooksul, tagades spetsifikatsioonidele vastava reageerimisaja isegi mõistlike katkestuste korral.
Lisaks on vajalik rikketaluvus : tõsise probleemi (riistvara rike, inimlik eksimus, väline häiring) ilmnemisel peab süsteem säilitama võimalikult palju andmeid ja funktsionaalsust ning halvendama oma käitumist, seades esikohale kõrgeima prioriteediga kriitilised ülesanded.
Keeled ja reaalajas programmeerimine
Praktikas on paljud reaalajas süsteemid (RTS) manustatud ja peavad suhtlema arvukate väliste komponentidega, mistõttu on samaaegne programmeerimine ja seadme otsene juhtimine hädavajalikud. Kaasaegsed programmeerimiskeeled pakuvad primitiivid lõimede loomiseks, suhtlemiseks ja sünkroniseerimiseks, kuid neid tuleb reaalajas rakendustes, eriti veebiraamistikes ja reaalajas teenustes nagu Laravel, kasutada väga ettevaatlikult.
Rakenduse efektiivsus on võtmetähtsusega: „ilusad” keelefunktsioonid võivad olla kallid reageerimisaja , protsessori kasutuse või mälukasutuse osas . Seetõttu hinnatakse manussüsteemides iga abstraktsiooni enne kasutuselevõttu hoolikalt.
Kaks reaalajas maailmas silmapaistvat keelt on Ada ja reaalajas laiendustega Java . Ada on spetsiaalselt loodud kriitiliste süsteemide toetamiseks ja on teinud täiustusi, et tugevdada oma võimekust selles valdkonnas.
Java puhul lisati reaalajas funktsionaalsusi hiljem selliste spetsifikatsioonidega nagu Java reaalajas spetsifikatsioon ja reaalajas tuuma laiendus, mis tutvustavad RTOS-i jaoks paremini sobivaid mälu- ja ajastamismudeleid.
Reaalajas operatsioonisüsteemid (RTOS)
Reaalaja operatsioonisüsteem (RTOS) on tarkvara põhiosa, mis pakub raamistikku , millele ehitatakse rangete tähtaegadega rakendusi. Selle teenused (ajastamine, katkestused, sünkroniseerimine, sisend/väljund jne) peavad käituma etteaimatavalt.
Erinevalt üldotstarbelisest operatsioonisüsteemist on RTOS optimeeritud korduvate ülesannete täitmiseks väga lühikese aja jooksul . Eesmärk ei ole "teha palju asju", vaid tagada, et kõige olulisem ülesanne töötaks siis, kui see peaks, ilma üllatusteta.
Seepärast on need tavaliselt palju kergemad süsteemid, ilma graafiliste kaunistuste või ebavajalike teenusteta, vaid mõne megabaidise suurusega ja minimalistliku disainifilosoofiaga. Vähem koodi tähendab vähem ootamatut latentsust ja vähem rikkekohti , mis sobib reaalajas nõuetega.
Ajalooliselt hakati RTOS-e arendama 60. ja 70. aastatel sõjaliste, lennundus- ja tööstuslike rakenduste jaoks. Järgnevatel kümnenditel tekkisid kommertstooted, näiteks VxWorks, QNX ja Solarise reaalajas variandid , mida laialdaselt kasutatakse telekommunikatsioonis, autotööstuses ja manussüsteemides.
Asjade interneti levikuga 2000. ja 2010. aastatel on kerged RTOS-id, näiteks FreeRTOS, muutunud väikese energiatarbega ühendatud seadmetes väga populaarseks. Samal ajal on pakutud välja reaalajas POSIX-laiendusi liideste ühtlustamiseks ja tarkvara kaasaskantavuse hõlbustamiseks.
Tänapäeval integreeruvad paljud RTOS-id tehisintellekti ja masinõppe tehnikatega, et optimeerida ajastamist, ennustada rikkeid ja kohandada juhtimisparameetreid käitusajal. Kõik see toimub loomulikult ajalisi garantiisid silmas pidades.
RTOS-i turg on väärt mitu miljardit dollarit ja eeldatavasti kasvab see lähiaastatel pidevalt, mida vedavad meditsiiniseadmed, tööstusautomaatika, autotööstus ja kriitilise taristu süsteemid.
Nõuded, millele hea RTOS peab vastama
Kaasaegne RTOS peab olema multitegumtöötluse ja ennetava toimega , et see saaks ennetada madalama prioriteediga ülesandeid, et koheselt käivitada kiireloomulisemad ülesanded. Valdav paradigma on prioriteedipõhine ajastamine: see käivitab alati kõige olulisema ülesande, mis on täitmiseks valmis.
Lisaks peab see pakkuma kommunikatsiooni- ja sünkroniseerimismehhanisme (järjekorrad, semaforid, mutexid, sündmused), mis on loodud tarbetu blokeerimise minimeerimiseks ja selliste nähtuste vältimiseks nagu prioriteedi inversioon, pärimisprotokollide või prioriteedi piiramise rakendamine, kui see on asjakohane.
On oluline, et RTOS-i ajastuskäitumist hästi mõistetaks : maksimaalsed katkestuste latentsused, kontekstivahetuse ajad, sünkroniseerimisprimitiivide täitmisajad jne. Ilma nende andmeteta on võimatu näidata, et rakendus täidab oma tähtaegu.
Ajastusalgoritmid: EDF ja muud mudelid
Ülesannete ajastamine on reaalajas süsteemide üks nurgakive. Üks enim uuritud algoritme on Earliest Deadline First (EDF) – dünaamiliselt prioriseeritud ajastaja, mis on optimaalne paljudes reaalajas kontekstides.
EDF prioriseerib ülesandeid nende absoluutse valmimistähtaja alusel : lähima tähtajaga ülesandel on igal ajahetkel kõrgeim prioriteet. See tagab teatud tingimustel, et kui on olemas teostatav plaan, mis vastab kõigile tähtaegadele, leiab EDF selle.
See algoritm on ennetav: kui ülesande täitmise ajal saabub mõni teine kiireloomulisema tähtajaga ülesanne, saab süsteem praeguse ülesande katkestada ja protsessori uuele ülesandele eraldada. EDF-i rakendatakse tavaliselt prioriteetide järjekorra abil, mis on järjestatud tähtajani jäänud aja järgi.
Üks EDF-i eeliseid on see, et see suudab saavutada peaaegu 100% protsessori kasutuse, pidades samal ajal kinni tähtaegadest, eeldusel, et ülesannete komplekt on ajastatav. Lisaks kohandub see hästi dünaamiliste keskkondadega, kus tähtajad või eeldatavad täitmisajad muutuvad.
Näiteks kui meil on kaks protsessi P1 ja P2, millel on erinevad perioodid ja arvutusajad, eelistab EDF alati eksemplari, mille absoluutne tähtaeg on lähemal, vaheldumisi selle täitmist uute aktiveerimiste saabumisel ja tähtaegade ümberarvutamisel.
Siiski on EDF-il ka puudusi. Äärmiselt suure töökoormuse ja sagedaste muudatuste korral võib selle tõhus rakendamine muutuda keeruliseks ning teatud tingimustel võivad suhteliselt pikkade tähtaegadega ülesannete puhul tekkida nälgiprobleemid.
Teised tuntud reaalajas algoritmid on näiteks Rate Monotonic (RM) ja Deadline Monotonic (DM) , mis kasutavad fikseeritud prioriteete, mis põhinevad ülesannete perioodil või suhtelisel ajaraamil. Igal neist on oma optimaalsustingimused ja eelistatud rakendusala.
Reaalajasüsteemide tüüpilised rakendused
STR-e on kõikjal. Töötlevas tööstuses kasutatakse neid toidu, jookide, kemikaalide, ravimite jms tootmisliinide juhtimiseks ja jälgimiseks, tagades, et põhimuutujad jäävad oma piiridesse ja et lõpptoode vastab oodatavale kvaliteedile.
Transpordis tuginevad lennukid, rongid, autod ja laevad reaalajas navigatsiooni-, juhtimis- ja ohutussüsteemidele . Need ulatuvad ABS-pidurisüsteemidest veojõu- ja stabiilsuskontrollini ning raudtee- ja mereliikluse korraldussüsteemideni.
Kaasaegne telekommunikatsioon tugineb kiirete võrkude infovoo reaalajas haldamisele: pakettkommuteerimine, reaalajas kõne ja video edastamine, teenuse kvaliteedi tagamine ja latentsuse vähendamine on ülesanded, mille puhul on tähtaegade järgimine ülioluline.
Kaitsesektoris kasutavad seire-, radari-, elektroonilise sõjapidamise ja küberturvalisuse süsteemid reaalajas platvorme, et tuvastada ja reageerida ohtudele millisekundite või lühema ajaga, kaitstes kriitilist infrastruktuuri ja strateegilisi ressursse.
Meditsiinis töötavad sellised seadmed nagu elutähtsate näitajate monitorid, ventilaatorid, südamestimulaatorid või infusioonipumbad reaalajas tarkvaraga, mis peab ohutult reageerima patsiendi seisundi muutustele, millel on tähtaegade mittetäitmise korral sageli eluohtlikud tagajärjed.
Lisaks digitaalsele maailmale võib reaalajas toimuvat jälgida ka bioloogilistes protsessides. Näiteks seeme idaneb ainult siis, kui keskkonnatingimused jäävad teatud vahemikesse ja ajaraamidesse (niiskus, temperatuur, valgus). Kui see idaneks kohe maapinnale jõudes, neid ajaraamidest kinni pidamata, siis see tõenäoliselt ellu ei jääks. See on kasulik metafoor selle kohta, kuidas süsteem, mis ei kohane oma ajalise keskkonnaga, võib ebaõnnestuda.
Suuremat pilti vaadates hõlmavad tööstuslikud tehnoloogilised lahendused telekommunikatsiooni, multimeediat, tööstusjuhtimist, robootikat, avioonikat, raudtee-, auto-, kodumasinate, teaduskatsete ja meditsiinisüsteemide valdkondi . Ja nimekiri kasvab pidevalt uute tehnoloogiate arenedes.
Kõigis neis keskkondades on vaja spetsiifilisi reaalajas sideprotokolle , näiteks CAN, Token Bus, TDMA-TTP, kohandatud CSMA/CD või positiivse kinnituse või uuesti saatmise (PAR) skeemid, mis vähendavad edastusaega ja pakuvad garantiid andmete saabumise aja kohta.
Lisaks kõigele sellele on täiustatud patenteeritud reaalajas tarkvaratehnikat, mille andmevoo metoodikad, andmestruktuurid ja objektorientatsioon on kohandatud katkestuste, kontekstimuutuste, asünkroonse kommunikatsiooni ja keeruliste ajanõuetega vigadest taastumise kujutamiseks.
Kõige eelneva põhjal saab selgemaks, miks reaalajas süsteemid on nüüdseks tänapäevase tehnoloogilise infrastruktuuri oluline osa: need vastutavad tuhandete kriitiliste ja igapäevaste protsesside ohutu ja usaldusväärse toimimise eest, ilma et kasutaja peaks sekundi murdosa jooksul mõtlema kõigele, mis "kulisside taga" toimub.