Reaaliaikainen käyttöjärjestelmä

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] .

Kovat ja pehmeät reaaliaikaiset järjestelmät

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.

RTOS:n erityispiirteet

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ä

RTOS-arkkitehtuurit

Kehityksessään RTOS rakennettiin seuraavien arkkitehtuurien pohjalta :

  1. Parempi luotettavuus, koska jokainen palvelu on itse asiassa erillinen sovellus, ja se on helpompi jäljittää ja jäljittää.
  2. Parempi skaalautuvuus , koska tarpeettomat palvelut voidaan sulkea pois järjestelmästä vaarantamatta järjestelmän suorituskykyä.
  3. Lisääntynyt vikasietokyky, koska ripustettu palvelu voidaan käynnistää uudelleen ilman järjestelmän uudelleenkäynnistystä.


Reaaliaikaisten käyttöjärjestelmien arkkitehtuurit
Monoliittista arkkitehtuuria Porrastettu (kerroksinen) arkkitehtuuri Asiakas-palvelin arkkitehtuuri

Ytimen ominaisuudet

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] .

Peruspalvelut

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] .

Erot yleiskäyttöisistä käyttöjärjestelmistä

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] .

Tehtävän ajoitus

Job Scheduler

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 :

  1. Määrittää, pitäisikö parhaillaan käynnissä olevan tehtävän suorittamista jatkaa.
  2. Määrittää, mikä tehtävä suoritetaan seuraavaksi.
  3. Tallentaa pysäytetyn tehtävän kontekstin (jotta se voi jatkaa siitä mihin se jäi).
  4. Määrittää kontekstin seuraavalle tehtävälle.
  5. Aloittaa tämän tehtävän.

Näitä algoritmin viittä vaihetta kutsutaan myös tehtävänvaihdoksi.

Tehtävän suorittaminen

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.

Suunnittelualgoritmit

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.

Tehtävien välinen vuorovaikutus ja resurssien jakaminen

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.

Muistin varaus

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.

Muistiinpanot

  1. S. Zolotarev. Reaaliaikaiset käyttöjärjestelmät 32-bittisille mikroprosessoreille Arkistoitu 9. elokuuta 2014 Wayback Machinessa
  2. The Open Group The Single UNIX Specification, versio 2 Arkistoitu 16. syyskuuta 2016 Wayback Machinessa
  3. Mikä on hyvä RTOS Arkistoitu 5. maaliskuuta 2016 Wayback Machinessa , Dedicated Systems Experts NV, 11. kesäkuuta 2001
  4. I. B. Burdonov, A. S. Kosachev, V. N. Ponomarenko. Reaaliaikaiset käyttöjärjestelmät Arkistoitu 3. tammikuuta 2009 Wayback Machinen osiossa 1. Johdanto: Reaaliaikaisten käyttöjärjestelmien ominaisuudet
  5. 1 2 3 A. A. Zhdanov. Reaaliaikaiset käyttöjärjestelmät arkistoitu 12. marraskuuta 2017 Wayback Machinessa
  6. 1 2 E. Khukhlaev. Reaaliaikaiset käyttöjärjestelmät ja Windows NT Arkistoitu 13. joulukuuta 2009 Wayback Machinessa
  7. 1 2 3 4 5 6 7 8 D. Kalinsky. Reaaliaikaisten käyttöjärjestelmien peruskäsitteet . Arkistoitu alkuperäisestä 28. tammikuuta 2013.  (Englanti)
  8. A. A. Bliskavitsky, S. V. Kabaev. Reaaliaikaiset käyttöjärjestelmät (arvostelu) Arkistoitu 18. toukokuuta 2018 Wayback Machinessa
  9. I. B. Burdonov, A. S. Kosachev, V. N. Ponomarenko. Reaaliaikaiset käyttöjärjestelmät Arkistoitu 3. tammikuuta 2009 Wayback Machinessa s. 1.2. Suunnittelu, prioriteetit

Kirjallisuus

Linkit