Remove ads
From Wikipedia, the free encyclopedia
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]
Kovan reaaliaikajärjestelmän vaatimuksille on neljä määrittelyä ja on tiedettävä mitä käyttäjä tarkoittaa:[3]
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]
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][15] SLUB-muistivaraus on tehty yhteensopivaksi PREEMPT_RT:n kanssa versiossa 5.15.[16] Reaaliaikakäyttöön konfiguroidussa ytimessä on siihen tarkoitetut versiot mutexeista, wait/wound mutexeista, luku/kirjoitus semaforeista, spinlockeista ja read/write lukoista.[17] Aiemmin SCHED_DEADLINE-vuoronnus on lisätty ytimeen versiossa 3.14.[18] Muita käytäntöjä ovat SCHED_FIFO ja SCHED_RR.[19] 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.[20][21][22] Joitakin kehityskohtia on edelleen jäljellä eri arkkitehtuurien ja ajurien tuen parantamiseksi. "Kova" reaaliaikajärjestelmä ei ole vain ytimestä kiinni, vaan vaatii myös laitteiston ja muun ohjelmiston optimointia halutulle vasteajalle.[23]
Linux-ytimen reaaliaikatuki voidaan konfiguroida useasta eri vaihtoehdosta:[4]
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.[24][25] 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.[26] Tasavertaisessa lukkoa ensin odottava saa ensin vuoron mutta reaaliaikaisessa korkeammalla prioriteetilla oleva saa sen ensin.[26] Levylle sivuttaminen on mahdollista estää.[26]
Ytimessä on käytetty local_lock
-alueita merkitsemään paikkoja, jotka tavallisessa ytimessä voivat hetkellisesti kytkeä moniajon pois tai estää keskeytykset.[27] 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ä.[27][28][29]
Ytimessä on Lockdep-niminen työkalu lukitusmallin oikeellisuuden validointiin.[30][31]
Reaaliaikaversio on saatavilla mm. seuraaville suoritinarkkitehtuureille:[32]
Projektin tukijoina ovat:[1]
OSADL jäseniä ovat:[33]
OSADL-projekti Safety Critical Linux pyrkii sertifioimaan reaaliaikaisen Linuxin.[34]
Lisäksi on olemassa RTLinux, RTAI-laajennus Linux-ytimeen, Xenomai, Linux/RK, LITMUS-RT sekä LibeRTOS.
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.