Reaaliaikainen käyttöjärjestelmä ( RTOS , englanniksi real-time operation system, RTOS ) on eräänlainen erikoistunut käyttöjärjestelmä , jonka päätarkoituksena on tarjota tarvittavat ja riittävät toiminnot reaaliaikaisen käyttöjärjestelmän suunnitteluun, kehittämiseen ja toimintaan. aikajärjestelmät tietyissä laitteistoissa.
UNIX-spesifikaatio, versio 2, määrittelee:
Reaaliaika käyttöjärjestelmissä on käyttöjärjestelmän kykyä tarjota vaadittu palvelutaso tietyn ajan kuluessa. [yksi]
Alkuperäinen teksti (englanniksi)[ näytäpiilottaa] Reaaliaikainen käyttöjärjestelmissä: käyttöjärjestelmän kyky tarjota vaadittu palvelutaso rajoitetussa vasteajassa. [2]Ihanteellisella RTOS:lla on ennustettava käyttäytyminen kaikissa kuormitusskenaarioissa, mukaan lukien samanaikaiset keskeytykset ja säikeen suoritus [3] .
Reaaliaikaiset käyttöjärjestelmät jaetaan joskus kahteen tyyppiin: kovat reaaliaikaiset järjestelmät ja pehmeät reaaliaikaiset järjestelmät [4] .
Käyttöjärjestelmää, joka pystyy tarjoamaan vaaditun suoritusajan reaaliaikaiseen tehtävään pahimmissakin tapauksissa, kutsutaan kovaksi reaaliaikaiseksi käyttöjärjestelmäksi . Järjestelmää, joka pystyy tarjoamaan keskimäärin tarvittavan suoritusajan reaaliaikaiseen tehtävään, kutsutaan pehmeäksi reaaliaikaiseksi käyttöjärjestelmäksi .
Kovat reaaliaikaiset järjestelmät eivät salli viivästyksiä järjestelmän reagoinnissa, koska tämä voi johtaa tulosten merkityksen menettämiseen, suuriin taloudellisiin menetyksiin tai jopa onnettomuuksiin ja katastrofeihin. Tilanne, jossa tapahtuman käsittely tapahtuu sallitun ajan yli, pidetään kohtalokkaana virheenä kovassa reaaliaikaisessa järjestelmässä. Kun tällainen tilanne ilmenee, käyttöjärjestelmä keskeyttää toiminnan ja estää sen, jotta se ei mahdollisuuksien mukaan vaikuta muun järjestelmän luotettavuuteen ja käytettävyyteen. Esimerkkejä kovista reaaliaikaisista järjestelmistä voivat olla lentokoneen ohjausjärjestelmät (lentokoneessa, avaruusaluksessa, laivassa jne.), hätäsuojajärjestelmät, hätätapahtumien tallentimet [5] .
Pehmeässä reaaliaikaisessa järjestelmässä vasteviivettä pidetään korjattavana virheenä, joka voi nostaa tulosten kustannuksia ja vähentää suorituskykyä, mutta ei ole kohtalokas. Esimerkkinä on tietokoneverkon toiminta [6] . Jos järjestelmällä ei ollut aikaa käsitellä seuraavaa vastaanotettua pakettia, tämä johtaa lähetyspuolen pysähtymiseen ja uudelleenlähetykseen ( protokollasta riippuen ). Tietoja ei menetetä, mutta verkon suorituskyky heikkenee.
Suurin ero kovien ja pehmeiden reaaliaikaisten järjestelmien välillä voidaan kuvata seuraavasti: kova reaaliaikainen järjestelmä ei koskaan myöhästy reagoimaan tapahtumaan, pehmeä reaaliaikainen järjestelmä ei saa olla myöhässä reagoidakseen tapahtumaan [6] .
Usein reaaliaikaisena käyttöjärjestelmänä pidetään vain järjestelmää, jota voidaan käyttää vaikeiden reaaliaikaisten ongelmien ratkaisemiseen. Tämä määritelmä tarkoittaa, että RTOS:ssa on tarvittavat työkalut, mutta se tarkoittaa myös sitä, että näitä työkaluja on käytettävä oikein [5] .
Suurin osa ohjelmistoista on suunnattu pehmeään reaaliaikaan. Tällaisille järjestelmille on tunnusomaista:
Klassinen esimerkki tehtävästä, jossa vaaditaan RTOS, on robotin ohjaus, joka ottaa osaa kuljetinhihnalta . Osa liikkuu ja robotilla on vain pieni aika, jolloin se pystyy nostamaan sen. Jos se on myöhässä, niin osa ei enää ole kuljettimen oikealla osuudella, ja siksi työtä ei tehdä, vaikka robotti on oikeassa paikassa. Jos hän valmistautuu aikaisemmin, osalla ei ole vielä aikaa ajaa ylös, ja hän tukkii sen polun.
Myös käyttöjärjestelmissä käytetään joskus " interaktiivisen reaaliajan " käsitettä, joka määrittää vähimmäiskynnyksen graafisen käyttöliittymän tapahtumiin reagoimiselle, jonka aikana käyttäjä - henkilö - pystyy rauhallisesti, ilman hermostuneisuutta odottamaan järjestelmä reagoi heille annettuihin ohjeisiin.
Taulukko RTOS:n ja perinteisten käyttöjärjestelmien vertailusta [5] :
reaaliaikainen käyttöjärjestelmä | yleiskäyttöinen käyttöjärjestelmä | |
---|---|---|
Päätehtävä | Hallitse reagoida laitteessa tapahtuviin tapahtumiin | Tietokoneresurssien optimaalinen jakautuminen käyttäjien ja tehtävien välillä |
Mihin se keskittyy | Ulkoisten tapahtumien käsittely | Käyttäjien toimintojen käsittely |
Miten se on sijoitettu | Työkalu tietyn reaaliaikaisen laitteisto-ohjelmistokompleksin luomiseen | Käyttäjä kokee sen käyttöön valmiina sovellustena |
Kenelle on tarkoitettu | Pätevä kehittäjä | Keskitason käyttäjä |
Kehityksessään RTOS rakennettiin seuraavien arkkitehtuurien pohjalta :
Monoliittista arkkitehtuuria | Porrastettu (kerroksinen) arkkitehtuuri | Asiakas-palvelin arkkitehtuuri |
RTOS-ydin tarjoaa keskitason abstraktin käyttöjärjestelmätason toiminnan, joka piilottaa sovellusohjelmistolta prosessorin teknisen laitteen (useita prosessoreita) ja siihen liittyvien laitteistojen erityispiirteet [7] .
Tämä abstrakti kerros tarjoaa viisi pääasiallista palveluluokkaa sovellusohjelmistoille [7] [8] :
Ydinpalveluiden lisäksi monet RTOS-järjestelmät tarjoavat lisäkomponentteja sellaisten korkean tason konseptien järjestämiseen, kuten tiedostojärjestelmä , verkko, verkonhallinta, tietokantojen hallinta , graafinen käyttöliittymä jne. Vaikka monet näistä komponenteista ovat paljon suurempia ja enemmän monimutkaisempia kuin itse RTOS-ydin, ne perustuvat kuitenkin sen palveluihin. Jokainen näistä komponenteista sisältyy sulautettuun järjestelmään vain, jos sen palveluita tarvitaan sulautetun sovelluksen suorittamiseen, ja vain muistin kulutuksen pitämiseksi minimissä [7] .
Myös monet yleiskäyttöjärjestelmät tukevat yllä olevia palveluita. Tärkein ero RTOS-ydinpalvelujen välillä on kuitenkin niiden työn deterministinen , tiukkaan ajanhallintaan perustuva luonne. Tässä tapauksessa determinismi ymmärretään tosiasiana, että käyttöjärjestelmän yhden palvelun suorittaminen vaatii tunnetun pituisen ajanjakson. Teoriassa tämä aika voidaan laskea matemaattisilla kaavoilla , joiden tulee olla tiukasti algebrallisia eivätkä ne saa sisältää satunnaisia aikaparametreja. Mikä tahansa satunnaismuuttuja , joka määrittää tehtävän suoritusajan RTOS:ssa, voi aiheuttaa ei-toivotun viiveen sovelluksessa, jolloin seuraava tehtävä ei mahdu sen aikakvanttiin, mikä aiheuttaa virheen [7] .
Tässä mielessä yleiskäyttöiset käyttöjärjestelmät eivät ole deterministisiä. Heidän palvelunsa voivat sallia satunnaisia viivästyksiä työssään, mikä voi hidastaa sovelluksen reagointia käyttäjän toimiin tuntemattomalla hetkellä. Perinteisiä käyttöjärjestelmiä suunnitellessaan kehittäjät eivät keskity matemaattiseen laitteistoon tietyn tehtävän ja palvelun suoritusajan laskemiseksi. Tämä ei ole kriittinen tämän tyyppisille järjestelmille [7] .
Useimmat RTOS:t suorittavat tehtävien ajoituksen seuraavan kaavion mukaisesti [7] . Jokaiselle sovelluksen tehtävälle on määritetty tietty prioriteetti. Mitä korkeampi prioriteetti, sitä korkeampi tehtävän reaktiivisuus tulee olla. Korkea reaktiivisuus saavutetaan toteuttamalla ennaltaehkäisevää prioriteettiajoituslähestymistapaa, jonka ydin on, että ajoittaja saa pysäyttää minkä tahansa tehtävän suorittamisen mielivaltaisena ajankohtana, jos todetaan, että toinen tehtävä tulisi aloittaa välittömästi.
Kuvattu kaavio toimii seuraavan säännön mukaan: jos kaksi tehtävää on valmiina suoritettavaksi samanaikaisesti, mutta ensimmäisellä on korkea prioriteetti ja toisella alhainen, ajoittaja antaa etusijalle ensimmäisen. . Toinen tehtävä käynnistetään vasta, kun ensimmäinen on suorittanut työnsä.
On mahdollista, että matalan prioriteetin tehtävä on jo käynnissä ja ajoittaja saa viestin, että toinen korkeamman prioriteetin tehtävä on valmis suoritettavaksi. Tämä voi johtua jostakin ulkoisesta vaikutuksesta (laitteistokeskeytys), kuten RTOS:n ohjaaman laitteen kytkimen tilan muutos . Tällaisessa tilanteessa tehtävän ajastin käyttäytyy prioriteetin ennaltaehkäisevän ajoituslähestymistavan mukaisesti seuraavasti. Tehtävä, jolla on matala prioriteetti, saa suorittaa nykyisen konekäskyn (mutta ei ohjelmalähteessä korkean tason kielellä kuvattua käskyä ), minkä jälkeen tehtävän suoritus keskeytetään [7] . Seuraavaksi käynnistetään tehtävä, jolla on korkea prioriteetti. Kun se on valmis, ajastin aloittaa keskeytetyn ensimmäisen tehtävän konekäskyllä, joka seuraa viimeistä suoritettua tehtävää.
Joka kerta kun tehtävän ajastin vastaanottaa signaalin jonkin ulkoisen tapahtuman (triggerin) esiintymisestä, jonka syy voi olla sekä laitteisto että ohjelmisto, se toimii seuraavan algoritmin [7] mukaisesti :
Näitä algoritmin viittä vaihetta kutsutaan myös tehtävänvaihdoksi.
Perinteisessä RTOS:ssa tehtävällä voi olla kolme mahdollista tilaa:
Useimmiten suurin osa tehtävistä on estetty. Vain yksi tehtävä voi olla käynnissä CPU:ssa tiettynä aikana. Primitiivisessä RTOS:ssa suoritettavaksi valmiiden tehtävien luettelo on yleensä hyvin lyhyt, se voi koostua enintään kahdesta tai kolmesta kohdasta.
RTOS-järjestelmänvalvojan päätehtävä on koota tällainen tehtävän ajastin.
Jos viimeisten suoritusvalmiiden tehtävien luettelossa ei ole enempää kuin kaksi tai kolme tehtävää, oletetaan, että kaikki tehtävät sijaitsevat optimaalisessa järjestyksessä. Jos on tilanteita, joissa tehtävien määrä luettelossa ylittää sallitun rajan, tehtävät lajitellaan tärkeysjärjestykseen.
Tällä hetkellä RTOS:n tehokkaan suunnittelun ongelman ratkaisemiseksi kehitetään intensiivisimmin kahta lähestymistapaa [9] :
Suurille järjestelmäkuormituksille EDF on tehokkaampi kuin RMS.
Moniajojärjestelmien on jaettava pääsy resursseihin. Kahden tai useamman prosessin samanaikainen pääsy mihin tahansa muistialueeseen tai muihin resursseihin muodostaa tietyn uhan. On kolme tapaa ratkaista tämä ongelma: tilapäinen keskeytysten esto , binaariset semaforit , signaalien lähettäminen. RTOS ei yleensä käytä ensimmäistä tapaa, koska käyttäjäsovellus ei voi ohjata prosessoria niin paljon kuin haluaisi. Monet sulautetut järjestelmät ja RTOS-järjestelmät antavat kuitenkin sovellusten toimia ydintilassa , jotta ne voivat käyttää järjestelmäkutsuja ja hallita suoritusympäristöä ilman käyttöjärjestelmän väliintuloa.
Yksiprosessorijärjestelmissä paras ratkaisu on ydintilassa toimiva sovellus, joka saa estää keskeytykset. Kun keskeytys on poistettu käytöstä, sovellus käyttää yksin prosessin resursseja eikä muita tehtäviä tai keskeytyksiä voi suorittaa. Siten kaikki kriittiset resurssit ovat suojattuja. Kun sovellus on suorittanut kriittiset toiminnot, sen on sallittava mahdolliset keskeytykset. Keskeytyksen esto on sallittu vain, kun pisin kriittisen osan suoritusaika on pienempi kuin sallittu keskeytyksen vasteaika. Tyypillisesti tätä suojausmenetelmää käytetään vain, kun kriittisen koodin pituus ei ylitä muutamaa riviä eikä sisällä silmukoita . Tämä menetelmä on ihanteellinen rekisterien suojaamiseen .
Kun kriittinen osion pituus on suurempi kuin maksimipituus tai sisältää jaksoja, ohjelmoijan on käytettävä mekanismeja, jotka ovat identtisiä yleiskäyttöisten järjestelmien kanssa tai jäljittelevät niiden käyttäytymistä, kuten semaforeja ja signalointia.
Seuraaviin muistinvarausongelmiin kiinnitetään enemmän huomiota RTOS:issa kuin yleiskäyttöisissä käyttöjärjestelmissä.
Ensinnäkin muistin varauksen nopeus. Vakiomuistin allokointimenetelmä sisältää määrittelemättömän pituisen luettelon skannaamisen tietyn kokoisen vapaan muistialueen löytämiseksi, ja tämä ei ole hyväksyttävää, koska RTOS-muistin allokoinnin on tapahduttava tietyssä ajassa.
Toiseksi muisti voi pirstoutua, jos sen vapaat alueet jaetaan jo käynnissä olevilla prosesseilla. Tämä voi saada ohjelman pysähtymään, koska se ei pysty käyttämään uutta muistipaikkaa. Muistinvarausalgoritmi, joka lisää vähitellen muistin pirstoutumista, voi toimia hyvin työpöytäjärjestelmissä, jos ne käynnistetään uudelleen vähintään kerran kuukaudessa, mutta sitä ei voida hyväksyä sulautetuissa järjestelmissä, jotka toimivat vuosia ilman uudelleenkäynnistystä.
Yksinkertainen algoritmi, jossa on kiinteä pituus muistilohkoja, toimii erittäin hyvin yksinkertaisissa sulautetuissa järjestelmissä.
Tämä algoritmi toimii myös hyvin työpöytäjärjestelmissä, varsinkin kun yhden ytimen muistilohkon käsittelyn aikana toinen ydin käsittelee seuraavaa muistilohkoa. Työpöydälle optimoidut RTOS-järjestelmät, kuten Unison Operating System tai DSPnano RTOS , tarjoavat tämän ominaisuuden.
Reaaliaikaiset käyttöjärjestelmät | |
---|---|
| |
avata | |
Omistusoikeus |
|
historiallinen |
|
|
Käyttöjärjestelmien näkökohdat | |||||
---|---|---|---|---|---|
| |||||
Tyypit |
| ||||
Nucleus |
| ||||
Prosessien hallinta |
| ||||
Muistinhallinta ja osoitus |
| ||||
Lataus- ja alustustyökalut | |||||
kuori | |||||
muu | |||||
Luokka Wikimedia Commons Wikikirjat Wikisanakirja |