Real-Time Linux

Wikipediasta
Siirry navigaatioon Siirry hakuun

Real-Time Linux (engl. Real-Time Linux, RTL) on reaaliaikainen (RTOS) versio Linux-ytimestä, joka tunnetaan Linux Foundationin projektina.[1][2]

Reaaliaikaista Linuxia on käytetty mm. robotiikassa, pörssipalveluissa ja tietokoneissa, joiden pitää olla yhteydessä "kovan" reaaliaikajärjestelmän kanssa.[3]

Vaatimukset[muokkaa | muokkaa wikitekstiä]

Kovan reaaliaikajärjestelmän vaatimuksille on neljä määrittelyä ja on tiedettävä mitä käyttäjä tarkoittaa:[4]

  • järjestelmän on aina kohdattava aikarajat
    • tämä määritelmä on epäreilu ohjelmalle mikäli laitteisto vikaantuu
  • järjestelmän on aina kohdattava aikarajat, mutta vain laitteistovian puuttuessa
    • tämä määritelmä yksinkertaistaa asioita, mutta ei ole riittävä järjestelmätasolla
    • "timantinkova" reaaliaikajärjestelmä voi suorittaa kytkemällä pois laitteistokeskeytykset
  • järjestelmä saa ohittaa aikarajan, mutta vain jos se ilmoittaa siitä
    • esimerkiksi korkean tarkuuden anturitietojen keruussa ennakoimattomien kuormien ollessa läsnä järjestelmässä
  • järjestelmä määritellään testijoukon läpäisyllä
    • eräät vaativat tämän sijaan formaalia (matemaattista) todistetta eivätkä kelpuuta tätä määrittelyä

Reaaliaikaisuus ei tarkoita nopeutta vaan latenssia ja deterministisyyttä.[5] Reaaliaikaisessa käsittelyssä 99% todennäköisyys ei ole riittävä ja painopiste on pahimpien tapauksien (engl. worst case) käsittely siten, että tulos on ennakoitava ja toistettava: suorituskykyä painottava käsittely optimoi keskivertotapausta.[6] Turvakriittinen ja reaaliaikainen eivät ole sama asia, mutta voivat liittyä toisiinsa.[6]

Historia[muokkaa | muokkaa wikitekstiä]

RTL:stä on myös käytetty nimiä -rt, RT-Patch ja RT PREEMPT sekä PREEMPT_RT. Pääsarjan ydintä on vaiheittain muokattu yhteensopivaksi.[7] Linux-ytimen versiossa 5.3 on CONFIG_PREEMPT_RT on liitetty osaksi pääsarjan ydintä.[8] Muutoksilla ytimen omat toiminnot ovat keskeytettäviä.[9][10][4] Aiemmin SCHED_DEADLINE-vuoronnus on lisätty ytimeen versiossa 3.14.[11] Keskeytyksien käsittely säikeissä on ollut ytimessä jo pitkään.[5]

Konfiguroitavuus[muokkaa | muokkaa wikitekstiä]

Linux-ytimen reaaliaikatuki voidaan konfiguroida useasta eri vaihtoehdosta:[5]

  • ei pakotettua keskeytystä - CONFIG_PREEMPT_NONE
  • vapaaehtoinen keskeytys - CONFIG_PREEMPT_VOLUNTARY
  • keskeytettävä ydin (alhaisen latenssin työpöytä) - CONFIG_PREEMPT_LL
  • keskeytettävä ydin (perustason reaaliaikaisuus) - CONFIG_PREEMPT_RTB
  • täysin keskeytettävä ydin - CONFIG_PREEMPT_RT_FULL

Prioriteettien inversio-ongelman välttämiseksi reaaliaikainen ydin tukee prioriteettien perintää.[5] Prioriteettien perintä nostaa lukon varanneen prioriteettia vähintään samalle tasolle kuin lukkoa odottavalla kunnes lukko vapautuu, jotta lukon varannut saa riittävästi ajoaikaa.[12][13] Reaaliaikaisessa ytimessä spin lock -lukituksista tulee mutex-lukituksia.[5]

Normaali Linux-ydin käyttää tasavertaista (engl. fair) vuoronnusta, mutta reaaliaikaisessa ytimessä korkeimmalla prioriteetilla oleva saa aina ensin vuoron.[14] Tasavertaisessa lukkoa ensin odottava saa ensin vuoron mutta reaaliaikaisessa korkeammalla prioriteetilla oleva saa sen ensin.[14] Levylle sivuttaminen on mahdollista estää.[14]

Suoritintuki[muokkaa | muokkaa wikitekstiä]

Reaaliaikaversio on saatavilla mm. seuraaville suoritinarkkitehtuureille:[15]

Jäsenjärjestöt ja tukijat[muokkaa | muokkaa wikitekstiä]

Projektin tukijoina ovat:[1]

OSADL jäseniä ovat:[16]

OSADL-projekti Safety Critical Linux pyrkii sertifioimaan reaaliaikaisen Linuxin.[17]

Muut projektit[muokkaa | muokkaa wikitekstiä]

Lisäksi on olemassa RTLinux, RTAI-laajennus Linux-ytimeen, Xenomai, Linux/RK, LITMUS-RT sekä LibeRTOS.

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. a b The Linux Foundation Announces Project to Advance Real-Time Linux 5.10.2015. Linux Foundation. Arkistoitu . Viitattu 29.1.2017. (englanniksi)
  2. The Linux Foundation Announces Project to Advance Real-Time Linux marketwatch.com. 5.10.2015. Viitattu 29.1.2017. (englanniksi)
  3. Intro to Real-Time Linux for Embedded Developers Linux.com. Viitattu 29.1.2017.
  4. a b Paul E. McKenney: SMP and Embedded Real Time 1.1.2007. Linux Journal. Viitattu 25.10.2019. (englanniksi)
  5. a b c d e Steven Rostedt: Real-Time is coming to Linux (PDF) events19.linuxfoundation.org. 24.10.2018. Viitattu 26.10.2019. (englanniksi) 
  6. a b Jonathan Corbet: Safety-critical realtime with Linux 25.9.2017. Lwn.net. Viitattu 27.10.2019.
  7. Thomas Gleixner: [patch 0/1 Kconfig: Introduce CONFIG_PREEMPT_RT] lwn.net. 15.7.2019. Viitattu 25.10.2019. (englanniksi) 
  8. Linux_5.3 kernelnewbies.org. Viitattu 25.10.2019. (englanniksi) 
  9. Robert Love: Lowering Latency in Linux: Introducing a Preemptible Kernel 1.5.2002. Linux Journal. Viitattu 25.10.2019. (englanniksi)
  10. Paul McKenney: A realtime preemption overview 10.8.2005. Lwn.net. Viitattu 25.10.2019. (englanniksi)
  11. SCHED_DEADLINE To Be Added To Linux 3.14 Kernel phoronix.com. Viitattu 25.10.2019. (englanniksi)
  12. Priority inheritance in the kernel 3.4.2006. Lwn.net. Viitattu 28.10.2019. (englanniksi)
  13. PI-futex: -V1 lwn.net. 25.3.2006. Viitattu 28.10.2019. (englanniksi)
  14. a b c Klaas van Gend: Using Real-Time Linux (PDF) elinux.org. Viitattu 26.10.2019. (englanniksi)
  15. OSADL Project: Realtime Linux
  16. OSADL Regular Members osadl.org. Viitattu 29.1.2017.
  17. OSADL Project: Safety Critical Linux osadl.org. Viitattu 29.1.2017.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.