Luento 10: Tosiaikakäyttöjärjestelmät Lähteet: Liu: Real-Time Systems, luku 12, Stankovic & Rajkumar: Real-Time Operating Systems. Real-Time Systems, 28,237-253,2004. Lisäksi kalvosarjassa on kuvia myös kirjasta: Cooling: Software Engineering for Real-time Systems, luku 6 Sisältö Yleistä Ominaisuuksia Arkkitehtuuriratkaisuja Piirteitä Kehitysympäristö ja -työkaluja POSIX RTOS esimerkkejä 1
Ominaisuuksia Ennustettavuus ja suorituskyky Pieni yleiskuorma Aikapalvelut ja niiden tarkkuus Konfiguroitavuus Työkalut (kääntäjät, GUI) Siirrettävyys (sekä KJ että sovellus) Arkkitehtuuriratkaisuja Ei yhtä standardiratkaisua Tarpeet ja ratkaisut vaihtelevat yksinkertaisesta sulautetusta järjestelmästä hajautettuun yleiskäyttöiseen järjestelmään Käytettävät työkalut vaihtelevat ratkaisujen mukana 2
Sulautettu järjestelmä: Yksi ohjaava prosessori Kaikki toiminnallisuus tiedossa ennakkoon Usein ei erillistä käyttöjärjestelmää lainkaan Ohjelmakehitys muualla, esim. simuloidussa ympäristössä Prosessori Ulkoisia laitteita Sulautettu järjestelmä: Useita ohjaavia prosessoreja Kaikki toiminnallisuus tiedossa ennakkoon Usein ei erillistä käyttöjärjestelmää lainkaan Prosessorien välinen kommunikointi Ohjelmakehitys muualla Väylä Prosessori Prosessori Ulkoisia laitteita Ulkoisia laitteita 3
Sulautettu ja hajautettu järjestelmä: Useita prosessoreja, yksi verkko Prosessorien välinen kommunikointi Usein käytössä jokin RTOS (tosiaikakj) Ohjelmakehitys suoraan järjestelmässä tai muualla LAN Prosessori Prosessori Ulkoisia laitteita Prosessori Ulkoisia laitteita Ohjausjärjestelmä: yleiskuva kuvattava halutulle toteutusalustalle Real-Time Clock Algorithms for Digital Control Interface Engineering System Data Logging Remote Monitoring System Database Data Retrieval and Display Display Devices Operator s Console Operator Interface Real-Time Computer Alan Burns and Andy Wellings, 2001 4
Vain ohjain (Controller) - ei kj:tä Esimerkiksi keskeytyskäsittelyn avulla Kaksi vaihetta Käynnistys (initialisation) Toiminta Sovelluksen koodi keskeytyskäsittelijöissä Aktivointi esim. kellokeskeytyksillä Usein tausta-ajona silmukka, joka ei tee mitään tai kerää alhaisella prioriteetilla erilaista tilastotietoa Malli (vain ohjain) Cooling: kuva 6.3 5
Nanoydin (Nanokernel) real-time executive Hyvin minimalistinen käyttöjärjestelmä, vain Tehtävän (task) luonti Skedulointi ja prosessinvaihto Ajoitus ja keskeytykset Kaikkein aikakriittisimmät tehtävät keskeytyskäsittelyllä HAL Hardware Abstraction Layer Malli nanoydin Cooling: kuva 6.4 6
Mikroydin Palveluja Järjestelmän käynnistys ja lataus Prosessin (tehtävän) skedulointi ja valvonta Poissulkeminen ja synkronointi Tiedonsiirto synkronoinnilla ja ilman Muistinhallinta BSP Board Support Package Mikroydin Cooling: kuva 6.7 7
Mikroydin Liu: kuva 12-2 Yleiskäyttöinen sulautettu RTOS Lisänä tavanomaiset kj-palvelut Verkkotuki ja tietoliikenneprotokollia Pysyvää muistia (esim. levy) Graafinen käyttöliittymä Prosessien ja muistin suojaus 8
Yleiskäyttöinen RTOS Cooling: kuva 6.9 Yleiskäyttöinen RTOS Cooling: kuva 6.8 9
Sekakuorma: sekä tosiaikaisia että ei-tosiaikaisia samalla koneella Liu kuva 12-10 Kaksivaiheinen vuorotus Sisältö Yleistä Ominaisuuksia Arkkitehtuuriratkaisuja Piirteitä Kehitysympäristö ja -työkaluja POSIX RTOS esimerkkejä 10
Piirteitä Tietoliikenne Oli aiemmalla luennolla Pysyvä tiedon tallennus (levy) Ei yleensä mitään poikkeavaa tavanomaisesta Prosessien hallinta ja skedulointi Ajoitusmenetelmät oli aiemmalla luennolla Graafinen käyttöliittymä Tosiaikainen (????) Prosessien (?) hallinta Eri järjestelmät käyttävät hiukan eri termejä Tehtävät (task) Prosessit (process) Säikeet (threads) Aktorit (actors) Useimmiten käsitellään säikeitä, joten niin tässäkin 11
Säietyypit Jaksollinen säi (periodic thread) Tuetaan esim. RT-Mach, EPIQ Säiettä ei luoda aina uudelleen, vaan Kunkin jakson alussa säie alustetaan uudelleen ja se 'nukkuu' jaksojen välit Jaksottomat ja sporadiset säikeet Nukkuvat myös toimintavälit, alustetaan uudelleen usein ennen nukahtamista Käynnistyvät usein ulkoisten tapahtumien perusteella Jaksollistuvan palvelimen toteutus Esim. Sporadiset ja Vakio käyttöaste palvelimet (luento 3) Voidaan toteuttaa yhdellä säikeellä Kukin erillinen sporadinen tai jaksoton työ muodostaa oman funktionsa säikeen sisälle Säikeellä on funktiotaulu, jossa on kunkin työn funktion osoite (kts. esim. C-kurssi) Ulkoinen herätä käynnistää tietyn työn, jolloin säi käynnistyy ja valitsee suoritettavaksi ko. funktion Töiden vuorotus palvelimen sisällä tapahtuu yksikertaisesti vaihtamalla suoritettavaa funktiota. 12
Säikeen tilat Nukkuu (sleeping) Valmis (ready) Suorituksessa (executing) Estetty (suspended, blocked) Päättynyt (terminated) Aikapalvelut (perusmalli) Kellokeskeytys (clock interrupt) Joka keskeytyksessä käydään läpi Prosessien ajastintapahtumat (timer events) Suorituskustannusten (execution budget) keruu Valmisjonon päivitys ja kontrollin siirto 10 millisekunnin välein (tyypillinen) 13
Keskeytykset Yleensä kahdessa vaiheessa Välitön käsittely Hyvin lyhyt kesto Ajoitettu käsittely Prioriteetin perusteella Liu kuva 12-3 Graafinen käyttöliittymä Näitä todella on tosiaikajärjestelmissäkin Lentäjien erilaiset valvontanäytöt Valvontahuoneiden näytöt Web-palvelin esim. tietoliikennekytkimessä Tarve laajenee Puhelimet PDA:t Autojen navigointijärjestelmät... 14
Sisältö Yleistä POSIX Portable Operating System Interface RTOS esimerkkejä POSIX - standardi 1003.1.-2001 Säikeet Skedulointirajapinta Kello ja ajastin Prosessien välinen kommunikointi Synkronointi Jaettu muisti ja lukitus Synkroninen ja asynkroninen I/O Tosiaikaiset signaalit 15
Kello ja ajastin Perinteiset kellot time gettimeofday Aika alkoi 1.1.1970 ja päättyy helmik. 2038 Perinteiset aikamuutoksia sleep setitimer getitimer Kello ja ajastin: laajennokset Useita kelloja: ainakin CLOCK_REALTIME clock_settime(clock_id clock_gettime, clock_getres Ajastimet timer_create, timer_delete timer_settime, timer_gettime timer_getoverrun nanosleep 16
Sisältö Yleistä POSIX RTOS esimerkkejä VxWorks + Tornado QNX Linuxin tosiaikamuunnelmat VxWorks 5.5 + Tornado 2.2 www.windriver.com Kehuu asiakkaillaan, mm. Honda: ASIMO humanoid robot JPL: Pathfinder ja Rover 17
Wind River tuotteita Käyttöjärj. Työkalut Laitteistosovitus Verkkoyhteys VxWorks tosiaikakäyttöjärj. wind mikrokernel Verkko- ja IO-tuki Kohdearkkitehtuureja Motorola 68K, ColdFire, IBM PowerPC Intel Pentiums, StrongArm, Xscale MIPS ARM 18
Tornado kehitysympäristö Kuva 5: white paper Wind River in Interactive Digital Television QNX www.qnx.com Vastaavasti 'success stories' Inform@fon, Multiphone Nukutusmonitori 19
QNX Neutrino tosiaikakj Mikrokerneli Verkkotuki Photon microgui Alustoja MIPS, PPC, X86, ARM LynxOS LynuxWorks (www.lynx.com) POSIX conformance tested BlueCat Linux / RT ISO 9001 sertifioitu HP:n kirjoittimissa PhatNoise jukeboxi autoon 20
LynxOS Linux ja tosiaikaisuus Kolme erilaista lähestymistapaa: Yhteensopiva ydin: Täysin erillinen toteutus, josta on tehty binääriyhteensopiva (LynxOS) Ytimen muokkaus: Tehdään erityisiä paikkauspaketteja (patch), joilla muutetaan ytimen rakennetta paremmin tosiaikaisuutta tukemaan (esim. aiempien ytimien low-latency patch) Kaksi ydintä: Laitetaan varsinainen linux-ydin yhdeksi tosiaikaprosessiksi tosiaikaisen mikroytimen päälle (RTLinux) 21
RTLinux Victor Yodaikenin idea, patentti ja nykyisin myös yritys (http://www.fsmlabs.com) tämän ympärillä Perus-Linuxin toiminnasta on vaihdettu vain keskeytyskäsittelijä. Se suorittaa tuon tosiaikaytimen ja vuorottaa tosiaikaiset prosessit. Niiltä vapaaksi jäävät osat annetaan perus-linuxille ja sen prosesseille. RTLinux tosiaikaprosessi 22
Tosiaikakäyttöjärjestelmät Open source Linux modifikaatiot Ei lisenssimaksuja, edullinen hankintahinta Kovien aikarajojen tuki? Kehitysympäristöt? Kaupalliset käyttöjärjestelmät Kallis hankintahinta + lisenssi per myynti Kovien aikarajojen tuki? Tehokkaita kehitysympäristöjä Siirrettävissä (maksua vastaan) uudelle alustalle Yhteenveto Tosiaikaisen käyttöjärjestelmän piirteet Deterministinen käyttäytyminen Lyhyet keskeytysviipeet, nopea kontekstin vaihto Prioriteetteja tukeva ajoitusmekanismi Kellon tarkkuus ja hyvät ajastimet Muunnettavissa parametreja vaihtamalla erilaisiin ympäristöihin 23