Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

Samankaltaiset tiedostot
UML -mallinnus TILAKAAVIO

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

12. Javan toistorakenteet 12.1

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

12. Javan toistorakenteet 12.1

Graafisen käyttöliittymän ohjelmointi

1. Mitä tehdään ensiksi?

Ohjelmointi 1. Kumppanit

UML- mallinnus: Tilakaavio

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Tietorakenteet ja algoritmit

11. Javan toistorakenteet 11.1

Directory Information Tree

Monimutkaisempi stop and wait -protokolla

Algoritmit 1. Luento 3 Ti Timo Männikkö

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Tämän kurssin sisältö. Esitiedot. Tietoa tästä kurssista. Ilmoittautuminen. Kurssin osasuoritukset ja arvostelu. T Tietokoneverkot

Tehtävä 2: Tietoliikenneprotokolla

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

T Tietokoneverkot

Tietorakenteet ja algoritmit

Tietokanta (database)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmoinnin perusteet Y Python

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Tietorakenteet ja algoritmit

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

T Tietokoneverkot

1. Olio-ohjelmointi 1.1

D-Link DSL-504T ADSL Reitittimen Asennusohje ver. 1.0

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Monipuolinen esimerkki

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

T Tietokoneverkot

ELEC-C3240 Elektroniikka 2

Unified Modeling Language

T Tietokoneverkot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Olio-ohjelmointi Syntaksikokoelma

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Sisällys. 15. Lohkot. Lohkot. Lohkot

3. Muuttujat ja operaatiot 3.1

Tietoa tästä kurssista. Esitiedot. T Tietokoneverkot. TCP/IP-verkot ja niiden toiminta. Verkkosovellusten suunnittelu ja ohjelmointi

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Esimerkki 1: Kahviautomaatti.

AutoCAD-natiiviobjektin toteutus

Tämän kurssin sisältö. Tietoa tästä kurssista. Esitiedot. Ilmoittautuminen. Kurssin osasuoritukset ja arvostelu. T Tietokoneverkot

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

3. Kuljetuskerros 3.1. Kuljetuspalvelu

UML-kielen formalisointi Object-Z:lla

T Tietokoneverkot

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

Sisällys. 16. Lohkot. Lohkot. Lohkot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Ohjelmoinnin peruskurssien laaja oppimäärä

T Tietokoneverkot Miika Komu Alkup. kalvot: Sanna Suoranta Tietoliikenneohjelmistot Tietotekniikan laitos Aalto-yliopisto

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

812347A Olio-ohjelmointi, X Reflektiivisyys

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Itsestabiloivabysanttilainen yhteisymmärrys. Timo Virkkala

Kertaus: yleistys-erikoistus ja perintä

Tietoliikenneohjelmistojen pääainesauna tänään!

T Tietokoneverkot

Harjoitustyö: virtuaalikone

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

ITKP102 Ohjelmointi 1 (6 op)

Osaa käyttää työvälineohjelmia, tekstinkäsittelyä taulukkolaskentaa ja esitysgrafiikkaa monipuolisesti asiakasviestintään.

Tämän kurssin sisältö. Ilmoittautuminen

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisältö. Tilakaaviot 2

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Vaalijärjestelmä Vakka

Harjoitus Particle View

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Ohjelmistotekniikan menetelmät, UML

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Ohjelmistojen suunnittelu

4. Luokan testaus ja käyttö olion kautta 4.1

Tämän kurssin sisältö. Tietoa tästä kurssista. Esitiedot. T Tietokoneverkot. TCP/IP-verkot ja niiden toiminta Turvallisuusominaisuudet

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Transkriptio:

Sulautetut järjestelmät Luku 2 Sivu 1 (??) Kiertokysely Perinteiset ohjelmointikielet kuten C tukevat hyvin sekventiaalista ohjelmointia, jossa herätteisiin reagointi on helppoa toteuttaa pollauksella eli kiertokyselyllä Käyttöjärjestelmien tarjoamat rajapinnat suosivat myös sekventiaalista suoritusta Esim. merkkien lukeminen tapahtuu kutsumalla funktiota, joka palaa sitten kun merkkejä on vastaanotettu Paljon busy-wait tilanteita, jotka pysäyttävät koko ohjelman kierron Lue tila Valmis? KYLLÄ Lue data

Sulautetut järjestelmät Luku 2 Sivu 2 (??) Busy wait Laite A valmiina? Laitteen A palveluohjelma Laite A valmiina? Laitteen A palveluohjelma BUSY WAIT Laite B valmiina? Laitteen B palveluohjelma Laite B valmiina? Laitteen B palveluohjelma Laite C valmiina? Laitteen C palveluohjelma Laite C valmiina? Laitteen C palveluohjelma Busy wait pysäyttää koko kiertokyselysilmukan!

Sulautetut järjestelmät Luku 2 Sivu 3 (??) Foreground/background Pelkkää kiertokyselyä ei käytännössä voi käyttää sulautetuissa järjestelmissä, jotta järjestelmän vasteaika olisi jotenkin hallittavissa Keskeytysrutiineilla voidaan taata nopea vaste ulkoisiin herätteisiin ja kerätä data esim. puskuriin, josta pääohjelma käy sen hakemassa Keskeytysrutiinit foreground Pääohjelma background Tässä lähetymistavassa pääohjelman edelleenkin pitää pollata tapahtumia Yhden tapahtuman pollauksen aikana muita tapahtumia ei tyypillisesti pystytä käsittelemään, joten järjestelmän vasteaika ei edelleenkään ole optimaalinen

Sulautetut järjestelmät Luku 2 Sivu 4 (??) Reaktiivisuus Sulautetut järjestelmät ovat yleensä luonteeltaan reaktiivisia Toiminnot tapahtuvat herätteiden pohjalta Jos herätteitä on paljon ja järjestelmä monimutkainen, niin perinteinen vuokaavioajattelu ei yleensäkään toimi Busy wait-hidastaa herätteisiin reagointia Pitää muistaa tutkia herätteitä oikeissa kohdissa Tietoliikenneprotokollat erityisen hankalia vuokaavioajattelussa (tuppaavat olemaan monimutkaisia) Hyvin monet järjestelmät voidaan mallintaa tilakoneen avulla Järjestelmällä on tila Siirtymät tilojen välillä tapahtuvat herätteiden perusteella Järjestelmän toiminnot liittyvät joko tilaan, jossa ollaan (Mooren kone) tai sekä tilaan että herätteeseen (Mealyn kone)

Sulautetut järjestelmät Luku 2 Sivu 5 (??) Tilakoneista Perinteisessä tilakoneessa järjestelmän tila selviää yksinomaan tilan perusteella Ohjelmoijan kannalta tilan tallentamiseen riittää yksi muuttuja Esimerkiksi tietoliikenneprotokollissa on erilaisia odotusaikoja, joiden toteuttaminen perinteisellä tilakoneella kasvattaisi tilojen määrän valtavan suureksi Esimerkiksi TCP uudelleenlähetysviive (retransmission timeout) vaatisi yhden tilan per odotettava aikayksikkö. Jos aikaa lasketaan 100 ms yksiköissä, niin 5 sekunnin odotus vaatisi 50 erillistä tilaa Tyypillisesti käytetään ns. laajennettuja tilakoneita, joissa tiloilla on omia tilamuuttujia (esim. timeoutin laskentaan)

Sulautetut järjestelmät Luku 2 Sivu 6 (??) Laajennettu tilakone Esimerkiksi DHCP protokolla on RFC:ssä kuvattu tilakoneena, jossa on ajastimia (T1, T2), jotka käytännössä toteutettaisiin tilamuuttujilla Selecting-tilassa toteutuskohtaisesti voi päättää kuinka kauan vastauksia odotetaan (tähän tarvitaan tilamuuttuja)

Sulautetut järjestelmät Luku 2 Sivu 7 (??) DHCP tilakone (rfc2131) DHCPNAK / Restart INIT- REBOOT -/ Send DHCPREQUEST DHCPNAK / Discard offer DHCPACK (not accept.)/ Send DHCPDECLINE Select offer / Send DHCPREQUEST INIT -/ Send DHCPDISCOVER REBOOTING REQUESTING SELECTING DHCPOFFER / Collect replies DHCPACK / Record lease, set timers T1, T2 DHCPOFFER / Discard DHCPACK / Record lease, set timers T1, T2 DHCPACK / Record lease, set timers T1, T2 REBINDING DHCPNAK, Lease expired / Halt network BOUND DHCPNAK / Halt network DHCPOFFER, DHCPACK, DHCPNAK / Discard DHCPACK / Record lease, set timers T1, T2 T2 expires / Broadcast DHCPREQUEST T1 expires / Send DHCPREQUEST to leasing server RENEWING

Sulautetut järjestelmät Luku 2 Sivu 8 (??) Tilakoneiden toteutustapoja Tilakone toteutetaan funktiolla, jolle annetaan parametrina käsiteltävä heräte Herätteillä on vakiomuoto esim. tietue Herätteiden tuottaminen kannattaa erottaa tilakoneesta, jolloin tilakone on yksinkertaisempi ja helpommin siirrettävissä ympäristöstä toiseen Herätteet jonossa odottamassa käsittelyä Sisäkkäiset switch-case-lauseet Ulompi valitsee tilan ja sisemmässä reagoidaan tapahtumaan Toimii pienehköllä tilakoneella, mutta paisuu helposti hallitsemattoman suureksi

Sulautetut järjestelmät Luku 2 Sivu 9 (??) Event handler Käytännöllinen tapa hallita herätteitä on laittaa herätteet jonoon, josta ne sitten käsitellään järjestyksessä (tämä ajatusmalli on pohjalla esimerkiksi graafisissa käyttöliittymissä)

Sulautetut järjestelmät Luku 2 Sivu 10 (??) Active objects Toteutustapa, jossa jokainen tilakone on erillinen olio, jolla on oma herätejono Tilakoneen ulkopuolelta tuotetaan herätteet tilakoneen jonoihin Tilakone ei ota kantaa siihen mistä herätteet tulevat, joten tilakone on mahdollista testata erillisenä (testipenkissä verrataan herätteitä ja vasteita)

Sulautetut järjestelmät Luku 2 Sivu 11 (??) Toteutusperiaatteita Tilojen pitää olla mahdollisimman riippumattomia Tilaan tultaessa toiminta ei saa riippua siitä mistä tilasta kyseiseen tilaan saavuttiin Tällainen riippuvuus ei yleensä näy tilakaaviossa, vaan on toteutuksen ongelma Tila on hajotettu osiin, jotka sijaitsevat eri puolilla lähdekoodia Globaalit tilamuuttujat estävät useamman kuin yhden tilakoneen instanssin ajamisen yhtä aikaa Jos tarvitaan yhteisiä tilamuuttujia, niin niiden pitää sijaita tilakoneen instanssin tiedoissa Lähdekoodista pitää helposti pystyä tunnistamaan tilakaaviossa määritellyt tilat ja niiden toiminta Lähdekoodin perusteella pitää pystyä piirtämään tilakaavio jos ei pysty, niin yleensä ongelmia on vastassa

Sulautetut järjestelmät Luku 2 Sivu 12 (??) Yksinkertainen UML kaavio ja tilakone void ststate1(smi *me, const event *e) { switch(e->type) { case eenter: me->timer = 0; case eexit: case ekey: led_set(e->value, 1); case etick: me->timer++; if(me->timer >= 5) TRAN(stState2); } } void ststate2(smi *me, const event *e) { switch(e->type) { case eenter: case eexit: case ekey: case etick: led_set(1, 0); led_set(2, 0); led_set(3, 0); led_set(4, 0); TRAN(stState1); } }

Sulautetut järjestelmät Luku 2 Sivu 13 (??) UML tilakone (erittäin lyhyt oppimäärä) Constraint State name Event Parameter Action Transition