Real-Time Linux (RTL, myös Linux-rt, PREEMPT_RT) on reaaliaikainen (RTOS) versio Linux-ytimestä, joka tunnetaan Linux Foundationin projektina.[1]
Reaaliaikaista Linuxia on käytetty mm. robotiikassa, pörssipalveluissa ja tietokoneissa, joiden pitää olla yhteydessä ”kovan” reaaliaikajärjestelmän kanssa.[2]
Vaatimukset
Kovan reaaliaikajärjestelmän vaatimuksille on neljä määrittelyä ja on tiedettävä mitä käyttäjä tarkoittaa:[3]
- 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ä.[4] Reaaliaikaisessa käsittelyssä 99 %:n 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.[5] Turvakriittinen ja reaaliaikainen eivät ole sama asia, mutta voivat liittyä toisiinsa.[5]
Historia
Linuxia käytettiin tutkimusalustana jo varhain ja tutkijat alkoivat muuttaa Linuxia reaaliaikaiseksi käyttöjärjestelmäksi vaihtelevalla menestyksellä, mutta eivät tähdänneet pääsarjan ytimen muuttamiseen.[6] Vuonna 2004 eri tahot aloittivat koordinoimattomia yrityksiä saada avaintekniikoita ytimeen, mutta ne olivat vielä puutteellisia.[6] Red Hatille työskennellyt Ingo Molnar alkoi koota ja muokata kehitystä muutossarjaksi nimeltä PREEMPT_RT ja samaan aikaan Thomas Gleixner työskenteli Doug Niehausin kanssa oman ratkaisun siirtämiseksi.[6] Molnarin ja Gleixnerin työ oli sekä toisiaan täydentävää että ristiriidassa keskenään joten he yhdistivät voimavaransa.[6] Muita tahoja kuten Steven Rostedt liittyi mukaan tuoden omia ideoita ja kokemusta reaaliaikaisuuden tutkimuksesta.[6] Ryhmä sai nopeasti aikaan ratkaisun, joka oli vielä kaukana ylläpidettävästä ja tuotantovalmiista.[6] Pääsarjan ytimeen liittämiseksi on tarvittu vielä paljon valmistelevaa työtä ja integraatio ei ole voinut olla haittana muulle Linux-ytimen käytölle ja kehitykselle: muutossarja koskee keskeisiä osia ytimestä.[6]
Reaaliaikaisten järjestelmien käyttöalue on laaja ja useissa tapauksissa hyvin erikoistunut sekä voi olla aluekohtaisten standardien ja lakien säätelemä.[6] Real-Time Linux projekti ei tähtää näihin erikoistuneisiin tapauksiin vaan on suunnattu kattamaan 99% käyttötapauksista.[6] Validointia varten on käynnistetty Linux Foundationin ELISA-projekti.[6][7] Moniprosessointi on yleistynyt myös sulaututetuissa järjestelmissä ja järjestelmän osiointi (suorittimien eristäminen tiettyyn tehtävään) on yksi käyttötapaus.[3][8][9]
RTL:stä on myös käytetty nimiä -rt, RT-Patch ja RT PREEMPT sekä PREEMPT_RT. Pääsarjan ydintä on vaiheittain muokattu yhteensopivaksi.[10] Linux-ytimen versiossa 5.3 on CONFIG_PREEMPT_RT on liitetty osaksi pääsarjan ydintä.[11] Muutoksilla ytimen omat toiminnot ovat keskeytettäviä.[12][13][3] Lukitukseen liittyvä koodi on yhdistetty pääsarjaan versiossa 5.15.[14] SLUB-muistivaraus on tehty yhteensopivaksi PREEMPT_RT:n kanssa versiossa 5.15.[15] Reaaliaikakäyttöön konfiguroidussa ytimessä on siihen tarkoitetut versiot mutexeista, wait/wound mutexeista, luku/kirjoitus semaforeista, spinlockeista ja read/write lukoista.[16] Aiemmin SCHED_DEADLINE-vuoronnus on lisätty ytimeen versiossa 3.14.[17] Muita käytäntöjä ovat SCHED_FIFO ja SCHED_RR.[18] Keskeytyksien käsittely säikeissä on ollut ytimessä jo pitkään.[4][13]
Vuodesta 2005 kehitetty muutossarja on kokonaan mukana Linux-ytimen versiossa 6.12. Muutoksia on liitetty asteittain pääsarjan ytimeen, muun muassa NO_HZ-ominaisuus virrankulutuksen vähentämiseen on lisätty aiemmin.[19][20][21]
Toteutus
Linux-ytimen reaaliaikatuki voidaan konfiguroida useasta eri vaihtoehdosta:[4]
- 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ää.[4] 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.[22][23] Reaaliaikaisessa ytimessä spin lock -lukituksista tulee mutex-lukituksia.[4]
Normaali Linux-ydin käyttää tasavertaista (engl. fair) vuoronnusta, mutta reaaliaikaisessa ytimessä korkeimmalla prioriteetilla oleva saa aina ensin vuoron.[24] Tasavertaisessa lukkoa ensin odottava saa ensin vuoron mutta reaaliaikaisessa korkeammalla prioriteetilla oleva saa sen ensin.[24] Levylle sivuttaminen on mahdollista estää.[24]
Ytimessä on käytetty local_lock
-alueita merkitsemään paikkoja, jotka tavallisessa ytimessä voivat hetkellisesti kytkeä moniajon pois tai estää keskeytykset.[25] PREEMPT_RT-ytimessä nämä eivät estä ytimen moniajoa eivätkä kytke pois keskeytyksiä ja lisäksi PREEMPT_RT-ytimessä eräät primitiivit käyttävät eri tyyppiä jotta moniajoa ei estetä.[25][26][27]
Ytimessä on Lockdep-niminen työkalu lukitusmallin oikeellisuuden validointiin.[28][29]
Suoritintuki
Reaaliaikaversio on saatavilla mm. seuraaville suoritinarkkitehtuureille:[30]
Jäsenjärjestöt ja tukijat
Projektin tukijoina ovat:[1]
- National Instruments
- OSADL
- Texas Instruments
- Altera
- ARM
- Intel
- IBM
OSADL jäseniä ovat:[31]
- BMW
- Homag GmbH
- Intel
- KEBA AG
- Komax
- Phoenix Contact
- Roche
- Trumpf
- WAGO
OSADL-projekti Safety Critical Linux pyrkii sertifioimaan reaaliaikaisen Linuxin.[32]
Muut projektit
Lisäksi on olemassa RTLinux, RTAI-laajennus Linux-ytimeen, Xenomai, Linux/RK, LITMUS-RT sekä LibeRTOS.
Katso myös
Lähteet
Aiheesta muualla
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.