6. Skedulointi eli vuoronnus

Koko: px
Aloita esitys sivulta:

Download "6. Skedulointi eli vuoronnus"

Transkriptio

1 100 Sulautettu ohjelmointi 6. Skedulointi eli vuoronnus Skeduloinnin eli vuoronnuksen (scheduling) tehtävä voidaan tiivistää kysymykseen, miten seuraavaksi suoritukseen otettava prosessi valitaan. Valintaperusteita on useita, ja mitkä niistä kannattaa huomioida on usein tilannekohtaista. Yleisesti käyttöjärjestelmissä optimoidaan vastausaika, kokonaissuoritusteho (yksikkönä valmiita töitä tai reaktioita aikayksikköä kohti) ja reiluus (eli ei kauan odottavia töitä). Vaikka reaaliaikakäyttöjärjestelmissäkin nämä ominaisuudet ovat tärkeitä, erityisesti reiluus on helposti ristiriidassa sen vaatimuksen kanssa, että vastausajan vaihteluväli (niin sanottu jitter, huojunta) voidaan laskea etukäteen. Reaaliaikajärjestelmissä päätavoite usein onkin mahdollistaa reaaliaikavaatimusten toteuttaminen, eli siis sen varmistaminen, että järjestelmä kykenee suorittamaan kaiken tarpeellisen laskennan tehtävien aikarajojen asettamissa puitteissa. 6.1 Lyhyesti reaaliajasta Reaaliajalle (real time) on useita määritelmiä, jotka hieman poikkeavat toisistaan. Pohjimmaisena ajatuksena on aina kuitenkin se, että tapahtuman on tapahduttava oikeaan aikaan. Tämä tarkoittaa käytännössä sitä, että reaaliaikajärjestelmissä on tärkeää ajoituksen ennustettavuus. Tehtävän laskennan valmistumiselle annetaan tällöin ensimmäinen ja viimeinen sallittu ajanhetki. Tämä aikaikkuna esitetään usein suhteellisena johonkin tapahtumaan, "aktioon", johon järjestelmä tuottaa vasteen ("reaktio"). Joskus aikaikkunan lisäksi määritellään ensimmäinen ajanhetki, jolloin laskennan saa aloittaa. Syynä voi olla laskennan tarvitsemat lähtötiedot tai että sen välituloksetkin jo vaikuttavat järjestelmän toimintaan. Usein ajatellaan reaaliajan tarkoittavan mahdollisimman nopeaa vasteaikaa, mutta tämä määritelmä on liian suppea. Käytännössä ajastuksien avulla ongelmat voidaan redusoida tähän tai tätä muistuttavaan

2 Skedulointi eli vuoronnus 101 muotoon pyritään siis siihen, että skeduleri saa tehtäviä malliin "tee tämä niin pian kuin mahdollista" Pehmeät ja kovat reaaliaikajärjestelmät Teknisesti on syytä jakaa reaaliaikajärjestelmät pehmeisiin ja koviin reaaliaikajärjestelmiin. Pehmeä reaaliaikaominaisuus tarkoittaa sitä, että tehtävällä on haluttu aikaikkuna, jossa sen tulee valmistua, mutta epäonnistuminen tässä ehdossa johtaa vain hieman huonompaan tai hitaampaan lopputulokseen, ei varsinaiseen virheeseen. Kova reaaliaikaominaisuus taas on sellainen, jossa ajoitukset ovat yhtä tärkeitä kuin asioita kuin järjestelmän muutkin ominaisuudet. Toisin sanoen aikarajojen rikkominen on virhetoiminta, joka pahimmillaan estää koko laitteen toimimisen tai jopa rikkoo sen. Esimerkki pehmeästä reaaliajasta on tilisiirto tililtä toiselle. Vaikka siirto viipyisi matkalla päivän odotettua kauemmin, on tärkeämpää, että raha siirtyy edes myöhässä kuin ei ollenkaan. Kovaa reaaliaikaa edustaa esimerkiksi matkapuhelin, joka lähettää puheen aikajaetulla kanavalla tukiasemalle. Mikäli puhelimen ajastukset eivät toimi, viestiä ei saada vastaanotettua, ja lisäksi muidenkin puhelimien yhteydet voivat häiriintyä. Siksi jos viestiä ei voida lähettää juuri oikeaan aikaan, on parempi, että sitä ei lähetetä lainkaan, jotta muut verkossa olevat laitteet eivät häiriintyisi. Yksi kovan reaaliajan tavanomaisista tunnusmerkeistä ei tosin välttämätön onkin se, että mikäli toimintaa ei voida tehdä annetuissa rajoissa, on se parempi jättää kokonaan tekemättä. Pehmeällä reaaliajalla sen sijaan ei tätä ominaisuutta ole, vaan yleensä kaikki tehtävät tulee suorittaa loppuun saakka viime kädessä aikataulun kustannuksella. Kovalle reaaliajalle on myös tunnusomaista, että aikarajan määrää jokin järjestelmän ulkopuolinen asia. Kyseessä voi olla kuten yllä olevassa esimerkissä standardin määräys, laitteen fyysistä ominaisuuksista tuleva vaatimus, lainsäädäntö ja niin edelleen Reaaliaikaohjelmien tyypillisiä piirteitä Reaaliaikajärjestelmät ovat usein reaktiivisia, mikä tarkoittaa sitä, että ne reagoivat useista eri lähteistä tuleviin ärsykkeisiin ainakin näennäisesti yhtä aikaa. Lisäksi aikavaatimukset edellyttävät, että riippumatta siitä, mitä palvelupyyntöjä on kesken, niihin kaikkiin vastataan jokaisen pyynnön omien reaaliaikavaatimusten mukaisesti. Tyypillisesti useimmat sulautetut järjestelmät ovat sekä reaktiivisia että reaaliaikaisia.

3 102 Sulautettu ohjelmointi Tyypillistä on myös se, että prosessien lukumäärä ja tehtävät ovat vakioita ja suhteellisen hyvin tunnettuja. Samoin yksittäisten prosessien tarvitsema aika on suhteellisen hyvin tiedossa. Näistä johtuen sulautettujen järjestelmien suunnitteluvaiheessa voidaan normaalijärjestelmää todennäköisemmin arvioida tai jopa ääritapauksessa laskea se, täyttääkö järjestelmä sille annetut aikavaatimukset vai ei Milloin järjestelmä on reaaliaikainen? Järjestelmä on reaaliaikainen, mikäli sen vasteajat (minimi ja maksimi) voidaan aina laskea. Tämä lienee kuitenkin niin abstrakti määritelmä, että suunnittelun lähtökohdaksi se ei sovi hyvin. Siksi käytännön vastaus kysymykseen voisi olla vaikkapa seuraava: Järjestelmä on reaaliaikainen, jos ajossa olevan prosessin prioriteetti on suurempi tai yhtä suuri kuin minkään ajovuoroa odottavan prosessin. Käänteisprioriteettiongelman (alakohdassa sivulla 112) takia tähän tulee lisätä vielä sellainen ehto, että prosessin ei pidä joutua odottamaan sitä, että sitä alhaisemmalla prioriteetilla oleva prosessi vapauttaa resurssin. Yksi tapa hoitaa tämä on muuttaa varaavan prosessin prioriteettia väliaikaisesti yhtä suureksi kuin mikä on korkeimmalla prioriteetilla olevalla odottajalla. Käytännössä täydellinen täsmällisen ennustettava reaaliaikaisuus on lähes mahdotonta. Esimerkiksi keskeytysten estäminen viivästyttää korkeaprioriteettista prosessia, jolloin edellä olevat ehdot eivät ihan aina päde. 6.2 Irrottamaton ja irrottava skedulointi Irrottamaton ja irrottava skedulointi kuvaavat periaatepäätöstä siitä, voiko parhaillaan suorituksessa olevan prosessin (tai säikeen) vaihtaa toiseksi ilman prosessin omaa pyyntöä. Näistä kahdesta skedulointiperiaatteesta irrottamaton on yleensä sekä skedulerin toteutuksen että sovelluksen ohjelmistosuunnittelun kannalta yksinkertaisempi muoto. Siinä ajossa olevaa prosessia ei koskaan vaihdeta toiseen, ellei prosessi itse anna siihen lupaa joko eksplisiittisesti (kutsu operaatiota yield() tai jotain vastaavaa) tai implisiittisesti (palvelupyyntö, jota jäädään odottamaan). Irrottavassa skeduloinnissa prosessi voidaan vaihtaa toiseen, mikäli skeduleri niin haluaa kesken prosessin suorituksen, eikä prosessi voi vaikuttaa asiaan välttämättä mitenkään. Kaikissa irrottavissa ympäristöissäkin vaihto kuitenkin liittyy oikeastaan aina johonkin lait-

4 Skedulointi eli vuoronnus 103 teiston tai ohjelmiston tapahtumaan, kuten keskeytykseen, jonka jälkeen joku toinen prosessi valitaan suoritukseen esimerkiksi siksi, että sen suoritus tuli mahdolliseksi keskeytyksen seurauksena, tai siksi, että parhaillaan suorituksessa oleva prosessi sai jo oman osansa suoritusaikaa ja on jonkin toisen prosessin vuoro. On lähes ilmiselvää, että irrottamattomalla skeduloinnilla on hyvin vaikea tehdä mielivaltaisia reaaliaikasovelluksia, ja vastaantulevat ongelmat lähestyvät nopeasti mahdottomia. Toisaalta irrottamaton skedulointi ratkaisee lähes automaattisesti poissulkemisongelman 17, kun prosessit eivät pääse käsittelemään samaa tietoa yhtä aikaa. Samaten irrottamaton skedulointi on yleensä helpompaa testata ja sen ongelmatilanteet on helpompi jäljittää ja jopa toistaa. Niinpä jopa reaaliaikajärjestelmissä on usein ainakin osittain käytössä myös irrottamaton skedulointi. Irrottava skedulointi on kuitenkin päävaihtoehto aivan harvinaisimpia järjestelmiä lukuunottamatta. Joskus kuitenkin joko ongelman tai toteutukseen valitun teknologian ominaisuudet voivat vaatia muunlaista lähestymistapaa. Jotkut toteutukset mahdollistavat sekä irroittamattoman että irroittavan skeduloinnin käytön, esimerkiksi siten, että säikeet skeduloidaan prosessin sisällä irroittamattomasti, mutta suorituksessa olevat prosessit irroittavasti. 6.3 Skedulointimenetelmiä Skeduloinnilla tai vuoronnonnuksella (scheduling) tarkoitetaan menetelmää (algoritmia), jolla valitaan seuraavaksi suoritettava säie, prosessi tai työ. Yleisesti skeduloinnin tavoitteena on järjestelmän suorituskyvyn optimointi. Tässä yhteydessä järjestelmän kokonaissuoritusteholla (throughput) tarkoitetaan tavallisesti suoritettuja tehtäviä aikayksikköä kohti. Tehtävä voi tässä tarkoittaa tilanteesta riippuen esimerkiksi yhtä interaktiota käyttäjän kanssa (ikkunoitu käyttöliittymä) tai tietokantaoperaatiota (suuret tietojärjestelmät). Koska nykykäytössä monet prosessit ovat pitkiä seinäkelloajaltaan ja sulautetuissa järjestelmissä ne usein eivät pysähdy ennen kuin koko laite sammutetaan, on järkevää valita sellainen tehokkuusindikaattori, joka on kyseisessä ympäristössä mielekäs. Tämä taas johtaa siihen, että erityyppisten järjestelmien keskinäisestä vertailusta tulee kovin vaikeaa. 17. Tyhmyyksien tekeminen on toki mahdollista, mutta koska ne kohdat, joissa prosessi voi vaihtua, tunnetaan, poissulkemisen hallinta yksinkertaistuu merkittävästi.

5 104 Sulautettu ohjelmointi Skeduloinnin liikkumavara on erilainen erätöiden 18, osituskäytön ja reaaliaikajärjestelmien tapauksissa: Erätöiden osalta järjestelmä voi suhteellisen vapaasti keskittyä optimoimaan järjestelmän kokonaissuoritustehoa. Osituskäytön yhteydessä (esimerkiksi ikkunoitu käyttöliittymä) on otettava huomioon käyttäjän kokemat odotusajat: skeduloinnin on tapahduttava siten, että kaikki käyttäjät tai saman käyttäjän kaikki sovellukseet saavat suunnilleen samantasoista palvelua optimoitavana suureena voi olla esimerkiksi keskimääräinen vasteaika. Reaaliaikajärjestelmissä suunnittelun pääpaino on siinä, että järjestelmän vasteajat pysyvät mahdollisimman ennustettavina. Käytännössä tämä rajaa pois ajonaikaiset prioriteetin vaihdokset ja vastaavat. Varsinaisen optimoinnin lisäksi usein suotava ominaisuus skedulointimenetelmälle on reiluus (fairness): mikään prosessi tai työ ei saisi jäädä odottamaan vuoroaan ikuisesti tai edes hyvin pitkäksi aikaa. Tarkastelemme seuraavaksi joitain prosessien ja säikeiden skedulointimenetelmiä. Seuraavassa sanalla säie tarkoitetaan pienintä skedulointavaa yksikköä, oli sen nimi käyttöjärjestelmässä mikä tahansa. Menetelmän kuvauksen lisäksi tarkastelemme neljää ominaisuutta: reiluutta, kokonaissuoritustehoa, vasteaikaa sekä reaaliaikaisuutta. Tarkastelussa siirräntäsidonnaisilla säikeillä tarkoitetaan sellaisia säikeitä, jotka tekevät suhteellisen usein siirräntäpyyntöjä käytettyyn suoritinaikaan nähden. Esimerkiksi editori on suurimman osan aikaa odottamassa käyttäjältä tulevaa syötettä. Suoritinsidonnaisia taas ovat sellaiset säikeet, jotka käyttävät runsaasti suoritinaikaa, kuten monet teknisen laskennan ongelmat FIFO eli jono FIFO-menetelmä (first in first out, myös FCFS, first come first served) on itse asiassa jono. Siinä säikeet otetaan suoritukseen siinä järjestyksessä, jossa ne saapuvat ready-tilaan (kuva 6.1). Menetelmän hyviä puolia ovat muun muassa periaatteellinen reiluus ja yksinkertainen toteutus. Haittapuolena on muun muassa se, että suoritinsidonnaiset säikeet viivyttävät tarpeettomasti siirräntäsidonnaisten säikeiden etene- 18. Erätyöt ovat nykyään harvinaisia, sulautetuissa järjestelmissä niitä ei käytännössä ole. Siksi aihe sivuutetaan maininnalla tässä yhteydessä.

6 Skedulointi eli vuoronnus 105 Wait-tilaan Wait-tilasta Run-tilassa Pros. 1 Kuva 6.1 mistä, mikä näkyy huonona vasteaikana interaktiivisilla säikeillä. Koska kokonaissuoritusteho on suurimmillaan, mikäli suoritetaan ensin kaikista pienimmät tehtävät, menetelmä ei tuota senkään suhteen optimaalista tulosta. Lisäksi ikuinen silmukka saa aikaan muiden säikeiden pysähtymisen, mikäli oletetaan yksinkertaisin mahdollinen irroittamaton toteutus. Siksi reaaliaikaominaisuuksen osalta menetelmä on käytännössä mahdoton. Varsinaisessa säikeiden skeduloinnissa puhdas jonoalgoritmi on harvinainen, mutta epäsuorasti se vaikuttaa usein skedulointiin. Esimerkkinä mainittakoon vaikkapa viestinvälitys tai oheislaitteelle annetut tehtävät, jotka usein palvellaan siinä järjestyksessä kuin ne on oheislaitteelle lähetetty. Jonomallia käytettäessä skeduleri voidaan pitää hyvin yksinkertaisena, sillä suoritukseen päästyään tehtävä suoritetaan loppuun asti. Tästä syystä irroittamaton skeduleri riittää toteutukseksi. Jos jonoperustaiseen skedulointiin lisätään irroittavuus ja tietty määrä reiluutta, muuttuu menetelmä kiertovuorotteluksi Kiertovuorottelu Pros. 2 Pros. 3 Pros. 4 FIFO, ensiksi jonoon, ensiksi palveluun. Kiertovuorottelu (round robin, RR) toimii kuin FIFO, mutta säie saa olla run-tilassa yhtäjaksoisesti korkeintaan sille annetun aikaviipaleen (time slice) määräämän ajan (kuva 6.2). Tosin sanoen FIFO on irrottamaton menetelmä ja kiertovuorottelu muilta ominaisuuksiltaan FIFOa vastaava irrottava skedulointimenetelmä. Tyypillinen aikaviipaleen koko voisi olla esimerkiksi ms. Menetelmän hyvä puoli on sen reiluus: kaikki säikeet saavat vuorollaan aikaviipaleensa. Jos aikaviipale on suhteellisen lyhyt, siirräntäsidonnaiset prosessit eivät joudu kärsimään suoritinsidonnaisten töiden hitaasta etenemisestä run-tilassa. Ohjelmoijan kannalta kiertovuorottelu on melko yksinkertaista sikäli, että jokainen (saman prioriteetin omaava) prosessi saa suoritusai-

7 106 Sulautettu ohjelmointi kaa, kunhan se vain laitetaan ajoon. Sen sijaan ennustettavuuden kannalta menetelmässä on ilmeisiä ongelmia, jos prosessien määrä voi kasvaa suorituksen aikana jokainen niistä saa vuorollaan viipaleen suoritinaikaa, joten lukumäärän muuttuessa muuttuu myös se, miten usein oma viipale saadaan. Näin menetelmä ei sovi hyvin reaaliaikaratkaisuihin. Puhtaimmillaan kiertovuorottelussa ei käytetä lainkaan prioriteetteja, mutta monessa käytännön toteutuksessa sellaiset ovat mukana. Tämä johtaa seuraavana esiteltävän kiinteän prioriteetin ja kiertovuorottelun yhdistelmään, jossa suorituksessa on aina tehtävä, jonka prioriteetti on korkein, mutta jos usealla tehtävällä on sama prioriteetti, tehtäviä suoritetaan vuorotellen Kiinteä prioriteetti Kiinteä prioriteetti (fixed priority) tarkoittaa skedulointimenetelmää, jossa suoritukseen valitaan se säie, jolla on korkein prioriteetti (kuva 6.1), eikä skedulointimenetelmä muuta tätä prioriteettia 19. Vaikka menetelmää voidaan käyttää myös irrottamattomassa skeduloinnissa, käytännössä se yhdistetään irrottavaan skedulointiin. Tällöin siitä voidaan käyttää lyhennettä FPPE (fixed priority pre-emptive scheduling). Menetelmä on yksinkertainen toteuttaa, ja se mahdollistaa säikeiden tärkeysjärjestyksen määrittämisen. Järjestelmän kokonaissuoritustehon ja vasteaikojen minimoimiseksi siirräntäsidonnaisilla säikeillä tulee olla suoritinsidonnaisia korkeampi prioriteetti. Menetelmän haittapuolena on se, että se ei ole reilu. Alhaisen prioriteetin säikeet voivat nälkiintyä (starve), sillä korkeaprioriteettiset säikeet voivat aina ohittaa ne ready-tilassa. Pohjimmiltaan algoritmi siis takaa, Wait-tilaan Wait-tilasta Run-tilassa Aikaviipale loppui Säie1 Säie 2 Säie 3 Säie 4 Kuva 6.2 Kiertovuorottelu. 19. Ohjelman prioriteetti voi silti muuttua muista syistä.

8 Skedulointi eli vuoronnus 107 että suoritin suorittaa aina sitä säiettä, jolla on korkein prioriteetti niistä säikeistä, jotka ovat valmiina suoritettavaksi. Tästä syystä algoritmi soveltuu hyvin myös reaaliaikajärjestelmien toteuttamiseen. Skedulointi voi tapahtua kahdella eri tavalla. Jotkut toteutukset saattavat suorittaa skeduloinnin siinä yhteydessä, kun uusi säie tulee suoritettavien säikeiden joukkoon. Toinen algoritmin vaihtoehto on kellokeskeytyksen avulla toimiva aikaviipalointi (time slicing), jonka tarkoitus on taata, ettei mikään säie voi käyttää kaikkea suoritinaikaa. Toisin sanoen ajossa oleva säie saa maksimissaan yhden aikaviipaleen verran suoritusaikaa, jonka jälkeen suoritus pysäytetään, ja skedulointi suoritetaan uudelleen. Kumpikin menetelmistä on irrottava, mutta jälkimmäinen ei sovellu erittäin nopeaa vasteaikaa vaativiin reaaliaikajärjestelmiin. Ilman kellokeskeytystä ja ilman automaattista uudelleenskedulointia uusien tehtävien tullessa mahdolliseksi algoritmista voidaan rakentaa irroittamaton versio. Tällöin tehtävä suoritetaan aina loppuun saakka riippumatta siitä, onko muita prosesseja tullut suoritettavaksi. Mikäli uudet sovellukset saavat tarpeeksi matalan prioriteetin, algoritmi mahdollistaa myös uusien tehtävien lisäämisen järjestelmään ilman, että korkeaprioriteettisemmat tehtävät kärsivät. Tästä syystä toteutuksen eteneminen voi olla inkrementaalista kohtuullisen helposti. Toisaalta tämä voi olla jossain mielessä huono peruste valita algoritmi, Wait-tilaan Run-tilassa Säie 1 Wait-tilasta prioriteetin mukaiseen paikkaan Säie 2 Nouseva prioriteetti Säie 3 Säie 4 Kuva 6.3 Kiinteä prioriteetti.

9 108 Sulautettu ohjelmointi Wait-tilaan Run-tilassa Säie 1 Wait-tilasta (ehkä muuttuneen) prioriteetin mukaiseen paikkaan Säie 2 Nouseva prioriteetti Kuva 6.4 Säie 3 Säie. 4 Vaihteleva prioriteetti. Prosessien järjestys voi jonotusaikana muuttua: prioriteetti vaihtuu sillä sulautettuja järjestelmiä rakennettaessa pitäisi yleensä pyrkiä kokonaisuuden kannalta tehokkaimpaan ratkaisuun Vaihteleva prioriteetti Vaihteleva prioriteetti (dynamic priority) ei itse asiassa ole yksi ainoa menetelmä, vaan joukko erilaisia menetelmiä, jossa menetelmä muuttaa säikeen prioriteettia ajan funktiona. Itse säikeen valinta tapahtuu kuin kiinteässä prioriteetissa sitten, kun prioriteetit on laskettu (kuva 6.4). Yksi tunnetuimmista vaihtelevan prioriteetin menetelmistä on perinteinen Unixien skedulointimenetelmä. Menetelmä yrittää havaita I/O-sidonnaiset säikeet ja nostaa niiden prioriteettia. Vastaavasti suoritinsidonnaisten säikeiden prioriteettia voidaan pienentää. Tämä lisää yleensä järjestelmän kokonaissuoritustehoa, parantaa vasteaikaa ja poistaa nälkiintymismahdollisuuden: mikäli säie ei saa aikaa, sen prioriteettia nostetaan, mistä seuraa, että se ennen pitkää saa aikaa. Reaaliaikajärjestelmän skedulointimenetelmäksi tästä ei kuitenkaan ole, sillä ennustettavuus on heikko. Edellä kuvattu menetelmä voidaan toteuttaa seuraavasti. Perusmenetelmänä on irrottava vaihtelevan prioriteetin skedulointi, jossa pieni lukuarvo tarkoittaa suurta prioriteettia. Prioriteetin vaihtaminen tehdään siten, että kellokeskeytyskäsittelijä laskee kaikkien sovellusprosessien prioriteetit uudelleen kerran sekunnissa. Sovellusten prioriteet-

10 Skedulointi eli vuoronnus 109 tien määräämiseen liittyvät toimenpiteet kellokeskeytyksen yhteydessä ovat seuraavat: Kellokeskeytyksen tullessa kasvatetaan aktiivisena olleen prosessin kellokeskeytyslaskuria. Kellokeskeytyslaskuri ilmaisee siis sen, montako kertaa kello on keskeyttänyt tämän prosessin kuluvan sekunnin aikana. Kerran sekunnissa lasketaan uusi prioriteetin arvo lisäämällä perusprioriteettivakioon (esimerkiksi 100) prosessikohtainen kellokeskeytyslaskuri ja nollataan prosessin kellokeskeytyslaskuri. Toisin sanoen prosessi, joka on (todennäköisesti) kuluttanut eniten suoritinaikaa, saa pienimmän prioriteetin. Perusprioriteettia suuremmat prioriteetit (eli tässä 0 99) on varattu käyttöjärjestelmän prosesseille ja ytimen rutiineille. Monissa järjestelmissä prioriteetin määräytyminen on vieläkin dynaamisempaa: esimerkiksi Microsoft Windows NT -sukuisissa käyttöjärjestelmässä käyttäjäprosessien prioriteettia kasvatetaan wait-tilasta poistuttaessa ja pienennetään, jos säie on käyttänyt saamansa aikaviipaleen loppuun. Vaihtelevan prioriteetin menetelmistä käydään läpi vielä kaksi: lyhin ajoaika ensin- ja aikaisin määräaika ensin -menetelmät Lyhin ajoaika ensin Melko suoraviivainen vaihtelevan prioriteetin skedulointialgoritmi lyhin ajoaika ensin (shortest remaining time, SRT) käyttää lähtökohtana sitä, kuinka paljon aikaa on säikeen odotettuun valmistumisaikaan (kuva 6.5). Tämä algoritmi siis palvelee ensin ne säikeet, joiden oletettu valmistumisaika on lyhyt. Puhtaimmillaan menetelmä vaatii irroittavan skeduloinnin käyttöä, sillä on mahdollista, että järjestelmään tulee uusi säie, jonka oletettu kesto on vielä lyhyempi kuin parhaillaan käynnissä olevan säikeen. Tällöin käynnissä oleva säie keskeytetään, ja ryhdytään suorittamaan uutta säiettä. Normaalitilanteessa tämä on kuitenkin melko harvinainen tapahtuma sulautetussa ympäristössä, ja siksi säikeen vaihtaminen on tarpeellista yleensä vain silloin, kun suorituksessa oleva säie saadaan valmiiksi. Toisaalta ytimen ja järjestelmän kokonaisuuden kannalta on kuitenkin varauduttava myös monimutkaisempiin vaihtoehtoihin, jos uusien säikeiden esittely on mahdollista.

11 110 Sulautettu ohjelmointi Wait-tilaan Run-tilassa Säie 1 Jonoon oletetun keston mukaiseen paikkaan Säie 2 Nouseva prioriteetti Säie 3 Kuva 6.5 Säie 4 SRT, lyhin ajoaika ensin. Koska skeduloinnin laskemiseksi on tunnettava säikeiden ominaisuudet melko tarkasti, tätä skedulointia voidaan käyttää oikeastaan vain sellaisissa ympäristöissä, joissa tehtävien laskenta-ajat tunnetaan hyvin. Sulautettujen järjestelmien tapauksessa kyseeseen tulevat erityisesti pienehköt järjestelmät, joiden ohjelmisto on suljettu käyttäjän tekemiltä laajennoksilta Aikaisin määräaika ensin Kolmannen vaihtuvaprioriteettisen menetelmän, aikaisin määräaika ensin -skeduloinnin (earliest deadline first, EDF), ideana on valita ajoon se säie, jonka pitää valmistua ensimmäisenä. Algoritmi toimii melko hyvin silloin, kun säikeiden ajoajat ovat suunnilleen samansuuruisia, mutta voi johtaa ongelmiin silloin, kun tehtävien pituus vaihtelee voimakkaasti. Koska aikarajoihin perustuva skedulointi on helppo laskea (itse asiassa säikeitä voidaan pitää tietorakenteessa, joka on järjestetty aikarajojen mukaisesti), algoritmin suoritus toisin sanoen suoritukseen valittavan prosessin etsiminen on tyypillisesti melko nopea operaatio. Aikaisin määräaika ensin -algoritmi on ohjelmoijan kannalta sangen suoraviivainen, ja se soveltuu hyvin reaaliaikaisten järjestelmien to-

12 Skedulointi eli vuoronnus 111 teuttamiseen. Skeduloinnin varmistamiseksi joudutaan tosin usein tekemään tarkkoja analyysejä eri tehtävien kestoista, mutta tämä on välttämätöntä oikeastaan aina, kun halutaan ylipäätään olla varmoja järjestelmän skeduloituvuudesta. Algoritmi ei kuitenkaan vaadi niin tarkkaa ajoituksen tuntemista kuin edellinen SRT-algoritmi. Koska uusien säikeiden tai oikeastaan uusien määräaikojen lisääminen vaikuttaa skedulointiin merkittävästi, yleensä tämäntyyppiset järjestelmät ovat suljettuja, eli näihin ei voi lisätä jälkeen päin uusia säikeitä Skedulointialgoritmien vertailua Käytännön skedulointimenetelmät ovat yleensä yhdistelmiä eri menetelmistä, joskaan kahta jälkimmäistä ei juuri voi yhdistää muihin. Tavallinen yhdistelmä on käyttää käyttöjärjestelmän säikeille kiinteitä, yleensä korkeita, prioriteetteja. Käyttäjän säikeiden osalta sovelletaan vaihtelevaa prioriteettia Unixin tapaan ja lisäksi usein kiertovuorottelua samalla prioriteetilla olevien säikeiden kesken. Yhteenveto algoritmien ominaisuuksista on koottu taulukkoon 6.1. Säikeiden skedulointi on tavallisesti irrottavaa (pre-emptive), jolloin säie voi joutua run-tilasta takaisin ready-tilaan. Tämä ei tietenkään koske FIFO-menetelmää. Symbianin aktiivioliot ovat itse asiassa käyttäjätilan säikeitä, joihin sovelletaan irrottamatonta skedulointia. 6.4 Reaaliaikajärjestelmien skedulointi Käytännön reaaliaikajärjestelmissä skedulointi perustuu usein kiinteään prioriteettiin. Tämän skedulointimenetelmän oletuksena on, että työlle annettu prioriteetti on riittävä järjestelmän ajoittamiseksi. On siis vain suorittimesta kiinni, valmistuvatko työt ajoissa. Prioriteettiin siis kiteytetään tieto siitä, milloin prosessin pitää valmistua, paljonko laskentaan kuluu aikaa ja niin edelleen suhteutettuna muihin prosesseihin. Monissa käytännön tilanteissa tämä tieto saadaan riittämään, jos suorittimessa on tarpeeksi suoritustehoa (tarkoittaa reaaliaikajärjestelmien yhteydessä yleensä sitä, että suoritin tekee työtä korkeintaan 70 % ajasta).

13 112 Sulautettu ohjelmointi Taulukko 6.1: Skedulointialgoritmien ominaisuuksia Algoritmi Reilu Suoritusteho a Vasteaika Reaaliaika Nälkiintyy FIFO On Matala, jopa huono Pitkä Ei Ei Kiertovuorottelu, RR Kiinteä prioriteetti, FPPE Vaihtuva prioriteetti (Unix) Lyhin ajoaika ensin, SRT Aikaisin ensin, EDF On Matala Pitkä Ei Ei Ei Keskitasosta korkeaan Vaihtelee prioriteetin mukaan. On Korkea Interaktiivisilla töillä lyhyt. Kyllä Ei Kyllä On Korkea Keskitaso Ei Kyllä On Keskitaso Keskitaso Kyllä Kyllä b Ei a. Tarkoittaa valmistuneita operaatioita aikayksikköä kohti. b. EDF-algoritmin johtaessa nälkiintymiseen on kyseessä joko tällä algoritmilla skeduloitumaton tehtäväjoukko tai sitten mukana on tehtävä, jolle ei ole asetettu aikarajaa lainkaan Käänteisprioriteettiongelma Vaikka käytössä olisi periaatteessa kiinteän prioriteetin järjestelmä, on käänteisprioriteettiongelman (priority inversion) takia on prioriteetteja käytännössä vaihdettava. Käänteisprioriteettiongelmassa korkeaprioriteettinen säie joutuu odottamaan matalaprioriteettista, vaikka näin ei pitäisi koskaan olla irrottavassa kiinteän prioriteetin skeduloinnissa. Käänteisprioriteettiongelman syntymiseen tarvitaan vähintään kolme säiettä, joilla on matala, keskitaso ja suuri prioriteetti (jatkossa MP, KP, SP). Näiden lisäksi on olemassa jokin yhteinen resurssi, jota tarvitsee sekä SP että MP. Tällainen resurssi voi olla mikä tahansa poissulkemista vaativa asia kuten kriittinen alue. Ongelma syntyy seuraavasti:

14 Skedulointi eli vuoronnus MP varaa kriittisen alueen ja alkaa suorittaa sitä. 2. KP aktivoituu, jolloin se irrottavan skeduloinnin takia pääsee ajoon ja estää MP:n etenemisen. MP siis pysähtyy keskelle kriittistä aluetta. 3. SP aktivoituu ja saa heti ajovuoron, mutta yrittää päästä kriittiselle alueelle. 4. Koska MP on kriittisellä alueella, SP jää odottamaan kriittisen alueen vapautumista. 5. KP saa ajovuoron, koska se on ready-tilassa olevista säikeistä korkein. Näin SP odottaa käytännössä KP:tä, joka ei varaa mitään yhteistä resurssia, eikä sen pitäisi estää SP:n etenemistä. Käytännön toteutuksissa toimitaan esimerkiksi siten, että resurssin varaamisen eli kriittiselle alueelle tulon yhteydessä nostetaan resurssin varanneen säikeen prioriteetti yhtä korkeaksi kuin mikä on korkeimman resurssia jonottavan säikeen prioriteetti. Menetelmää kutsutaan joskus nimellä prioriteettikatto (priority ceiling) Kerran tehtävät ja toistuvat työt Skeduloinnin kannalta toistuva (periodic) työ on helpompi hallita kuin satunnaisesti ilmaantuva työ (sporadic). Toistuva työ toistuu säännöllisin väliajoin P. Sille pätee yleisesti, että edellinen työ on saatava valmiiksi, ennen kuin työ aktivoituu uudelleen. Eli vähän formaalimmin: Ai + 1 Di Di + 1 Ai P missä A on saapumisaika järjestelmään (arrival time) ja D määräaika (deadline), eli aika, jolloin työn (joskus käytetään myös termiä tehtävä) pitää olla valmis. Mikäli järjestelmässä on vain säännöllisesti toistuvia töitä, on skeduloinnin laskeminen suhteellisen helppoa. Lisäksi tähän tarkoitukseen on olemassa myös useita työkaluja, joiden avulla järjestelmän skeduloituvuutta voidaan tarkastella. Tällaisesta skeduloinnista käytetään nimitystä rate monotonic scheduling, RMS. Satunnainen työ on reaaliaikaskeduloinnin kannalta ongelma, koska sen tuloaikaa ei tiedetä. Mitä useampia satunnaisia töitä järjestelmässä on, sitä vaikeampi on näyttää, että järjestelmän ajoitukset varmasti toimivat yleensä täysin riippumatta siitä onko järjestelmässä käytössä staattinen vai dynaaminen skedulointi.

15 114 Sulautettu ohjelmointi Joskus tilannetta pyritään yksinkertaistamaan siten, että satunnaiset työt skeduloidaan suoritettavaksi erityisen niille tarkoitetun, periodisesti skeduloidun tehtävän paikalla. Tällä tavoin skeduloituvuuden tarkasteluja voidaan yksinkertaistaa melkoisesti. Huono puoli on, että satunnaisten tehtävien suoritusaika voi vaihdella. Lisäksi se, milloin tehtävä skeduloidaan suoritukseen, voi olla huomattavasti myöhemmin kuin mitä se olisi valmis suoritettavaksi, sillä sitä ennen voidaan joutua suorittamaan muita satunnaisia tehtäviä Jitter Reaaliaikajärjestelmien kannalta usein käytetty termi on jitter (suomeksi vapina, huojunta, värinä tai muu sellainen). Termiä käytetään kuvaamaan ei-toivottua poikkeamaa esimerkiksi perättäisten pulssien aikaväleissä. Usein kyse on siitä, että tapahtumien taajuus on keskimäärin vakio, mutta yksittäisten tapahtumien ajallinen etäisyys esimerkiksi milloin eri työt skeduloidaan suoritukseen tai milloin niiden suoritus valmistuu vaihtelee hieman. Koska ajastuksiin liittyvät ongelmat ovat vaikeita ratkaistavia rinnakkaisissa järjestelmissä, joudutaan joskus ottamaan kantaa myös järjestelmän maksimijitterarvoihin. Tämä on luonnollisesti yleisempää silloin, kun ollaan tekemisissä kovien reaaliaikajärjestelmien kanssa, joissa pienetkin ajastusvirheet voivat olla merkittäviä Staattinen skedulointi Staattisen skeduloinnin idea on laskea skedulointi etukäteen. Tämän laskennan hyviksi puoliksi voidaan laskea muun muassa seuraavat asiat: prosessin valitseminen ajoaikana nopeaa, töiden jako eri suorittimille (hajautus) on staattisen skeduloinnin yleinen erikoistapaus, ja kun skedulointi on laskettu valmiiksi, voidaan taata järjestelmän reaaliaikaominaisuudet. Haittapuolena staattisessa skeduloinnissa on se itsestäänselvyys, että laskenta on suunniteltava kokonaisuudessaan etukäteen, joten tarvitaan tarkkaa tietoa prosesseista ja niiden tarvitsemista laskenta-ajoista. Toisaalta staattista skedulointia hyödyntäen voidaan yleensä suorittimen käyttöaste nostaa korkeammaksi kuin mitä muita menetelmiä käyttäen on mahdollista. Koska kaikki on etukäyteen laskettu, myös ennustettavuus ja toistettavuus on korkealla tasolla. Tämä puolestaan yksinkertaistaa testausta ja kokonaisjärjestelmän toiminnan verifiointia

16 Skedulointi eli vuoronnus 115 merkittävästi, sillä suorituksen toistaminen täysin samanlaisena on usein mahdollista. Staattista skedulointia kutsutaan optimaaliseksi, mikäli se pystyy skedulointiin aikarajojen puitteissa aina, kun jokin toinenkin staattinen algoritmi siihen pystyy. Mitään tarkempaa yleistä ehtoa optimiskeduloinnille ei pystytä esittämään Dynaaminen skedulointi Useimmat staattisen skeduloinnin optimiratkaisut eivät ole optimiratkaisuja dynaamisessa järjestelmässä. Lisäksi monisuoritinjärjestelmissä ei irrottavalle skeduloinnille ole optimiratkaisua, jos tehtävien saapumisaikoja ei tiedetä etukäteen. Koska dynaaminen skedulointi tehdään kokonaisuudessaan ajon aikana, kovin monimutkaista järjestelmää ei yleensä rakentaa skedulointia varten. Ei nimittäin ole mitään järkeä käyttää suurta osaa suoritinkapasiteetista skeduloinnin laskemiseen, minkä takia käytetään erilaisia heuristisia ratkaisuja. Yleisin menetelmä on jo aiemmin esitelty kiinteäprioriteettinen skedulointi, jossa prioriteetit määräävät seuraavaksi suoritukseen valittavan tehtävän. Yksi ratkaisumalli on käyttää vain tehtävän määräaikaa D seuraavan prosessin valitsemiseen siten, että mitä pienempi määräaika, sitä suurempi prioriteetti prosessilla on. Näin päädymme edellä kuvattuun määräaikaskedulointiin (EDF). Mikäli prosessin tarvitsema ajoaika tiedetään, voidaan skedulointi perustaa pelkän D:n asemesta arvoon D C, missä C on siis pahimman mahdollisen laskennan suorittamisessa tarvittava aika. Näin aikaan saatu menetelmä on aiemmin esiteltyjen SRT:n ja EDF:n välillä. Koska dynaamisen skeduloinnin perusajatus on antaa skedulerin valita suoritukseen se prosessi, joka skedulointialgoritmin mukaisesti on sopivin, käy usein niin, että skedulointiongelmia alkaa ilmetä, kun kuormitus kasvaa. Tästä syystä usein pidetään hyvänä peukalosääntönä sitä, että suorittimen kuormituksen kasvaessa yli prosentin sekä reaaliaikaominaisuudet ja ohjelman suorituksen ennustettavuus heikentyvät merkittävästi. Dynaamista skedulointia kutsutaan optimaaliseksi, mikäli se pystyy skedulointiin annettujen rajojen puitteissa aina, kun jokin staattinen algoritmi olisi siihen pystynyt. Määritelmän tiukkuutta kuvaa se, että staattisella algoritmilla on enemmän lähtötietoja, mukaan lukien yksit-

17 116 Sulautettu ohjelmointi Prosessien aktivoituminen tehtävä 1 tehtävä 2 tehtävä 1 aika Irrottamaton skedulointi tehtävä 1 tehtävä 1 tehtävä 2 aika Irrottava skedulointi tehtävä 1 tehtävä 1 tehtävä 2 Kuva 6.6 Skedulointikaavio aika täisten tehtävien suorittamisessa tarvittava aika, jonka avulla skeduloinnin laskeminen on mahdollista. 6.5 Skedulointiesimerkki Kuvassa 6.6 on kuvattu skedulointikaavio, jossa ylin kaavio näyttää tehtävien aktivoitumisen ja niiden suorituksen, olettaen että kummallakin tehtävällä olisi oma suoritin. Näistä tehtävä 1 aktivoituu säännöllisin väliajoin, eli on periodinen. Tehtävä 2 on puolestaan sporadinen, ja se kestää kauemmin kuin mitä on kahden 1. tehtävän aktivoitumisen väli on. Keskimmäinen kuva esittää tehtävien skedulointia irrottamattoman skeduloinnin tapauksessa. Skedulointi on siis mahdollinen, mikäli tehtävän yksi määräaika sietää tehtävän kaksi aiheuttaman viivästyksen. Mikäli näin ei ole, irrottamaton skedulointi ei ole mahdollista. Alin kuva näyttää tilanteen, jossa käytetään irrottavaa skedulointia. Tämä tapaus ratkaisee yllä kuvatun ongelman, mutta se ei silti ole yleispätevä: jos tehtävän 2 pitää olla valmis niin nopeasti, ettei tehtävän 1 ajaminen kesken tehtävän 2 suoritusta ole mahdollista, on joko viivästettävä tehtävää 1 keskimmäisen kuvan malliin, tai jos tehtävää 1 ei voi viivästää, niin todeta, että reaaliaikainen skedulointi ei ole mahdollista.

18 Skedulointi eli vuoronnus 117 Jos skedulointi ei ole mahdollinen, on joko muutettava ajoitusvaatimuksia, lyhennettavä ohjelman vaatimaa suoritusaikaa optimoimalla tai keksittävä jotain muuta. Yksi tällainen "muuta" on kahden algoritmin järjestelmä. Mikäli tilanne on esimerkin mukainen siinä mielessä, että normaalisti aika riittää hyvin (tehtävä 1 ehditään aina ajamaan), mutta ongelmia tulee vain silloin, kun toinenkin tehtävä ilmaantuu, voidaan tehdä esimerkiksi siten, että silloin tällöin ajetaan nopeampi, mutta esimerkiksi lopputulokseltaan heikompi laskennan toteuttava algoritmi tehtävän yksi normaalin toiminnan asemesta. Yleisesti idea on siis seuraava: Mikäli hyvä ja hidas ei ole käytettävissä, käytetään nopeaa mutta vähän huonompaa algoritmia. Heikomman algoritmin valinnan tai ainakin hyväksynnän tekee skeduleri, mutta toistuvalle työlle ei saa aina valita huonoa vaihtoehtoa. Jotta tämä voitaisiin toteuttaa, skedulerin on tunnettava erilaiset vaihtoehdot, niiden suorittamiseksi tarvittava aika sekä yhteinen määräaika. Skeduleri voi siis ajaa nopeaa ja epätarkkaa algoritmia säännönmukaisesti laskennassa tai "yllättäen" jossakin huippukuormatilanteissa, mutta vaihdosta ei saa tehdä aina. Tämä vaihdantatekniikka sopii käytettäväksi staattisessa skeduloinnissa, jossa voidaan taata, että hidaskin suoritus saa joskus ajovuoron, vikasietoisissa järjestelmissä virheestätoipumisen aikana ja pienissä, hyvin tunnetuissa järjestelmissä. Tällaisenaan siis skedulerin ominaisuutena vaihto on harvinainen tosielämässä, sillä dynaamisen skeduloinnin tapauksessa useamman eri laskennan käyttö eri tilanteissa johtaa luonnollisesti monimutkaisempaan järjestelmätestaukseen, sillä siinä pitäisi kyetä varmentamaan kaikki (tai ainakin riittävän monta) vaihtoehdoista suoritusta eri tilanteissa. Toisaalta ohjelmakoodiin langoitettuna sama ilmiö on löydettävissä useammastakin järjestelmästä. 6.6 Skeduloituvuuden analysoinnista Koska skeduloituvuus on oikeastaan minkä tahansa reaaliaikajärjestelmän kannalta tärkeä ominaisuus, on skeduloituvuuden tarkastelua varten olemassa useita vaihtoehtoja Staattinen skeduloituvuus Staattisen skeduloituvuuden kannalta tilanne on yleensä melko suoraviivainen, sillä ohjelmoija pystyy useimmiten rakentamaan haluamansa

19 118 Sulautettu ohjelmointi skeduloinnin etukäteen lähes ilman rajoituksia, jotka olisivat peräisin skedulerin toiminnasta tai prosessien dynaamisesta vaihtamisesta. Koska skeduloinnin kannalta ei ongelmia ole, voidaan keskittyä oikeastaan kokonaan siihen, miten paljon aikaa mikäkin tehtävä vie. Apuna on mahdollista käyttää erilaisia analyysityökaluja, jotka kykenevät rakentamaan ohjelman ajoaikaisia suorituspolkuja ja laskemaan niiden suoritusaikoja. Tällaisen ohjelman avulla on melko helppoa saada selville se, miten kauan jonkun algoritmin pisin mahdollinen suoritus kestää, ja sitä kautta on edelleen mahdollista käyttää tietoa osana skeduloituvuuden analyysia. Koska kyseessä on täysin staattinen skedulointi, kaikki voidaan laskea etukäteen valmiiksi suunnittelun aikana. Staattisuudesta voidaan usein johtaa myös muita analyysia yksinkertaistavia ominaisuuksia, kuten vaikkapa suurin mahdollinen määrä muistia, jonka järjestelmä voi normaalitilanteessa varata. Yhdessä staattisen skeduloinnin kanssa tämä yleensä yksinkertaistaa virheiden jäljittämistä merkittävästi Dynaaminen skeduloituvuus Dynaamista skedulointia käytettäessä tilanne on lähes aina melko tavalla monimutkaisempi skeduloituvuuden kannalta. Yleensä ensimmäinen pikatesti on rakentaa versio järjestelmästä, jossa jokaista tehtävää edustaa varjotehtävä, joka kuormittaa suoritinta likimäärin yhtä paljon kuin mitä todellinen tehtävä oletettavasti tulee tekemään. Mikäli suorittimella vaikuttaa olevan ongelmia, voidaan melko luotettavasti päätellä, että näin tulee käymään myös todellisen järjestelmän tapauksessa. Pikatestiä luotettavampia arvoja skeduloituvuuden tarkastelua varten on mahdollista saada käyttämällä analyysityökaluja, joita voidaan hyödyntää samaan tapaan kuin staattisen skeduloinninkin yhteydessä. Näin järjestelmän ominaisuuksista saadaan usein lisätietoa, mikä puolestaan johtaa lähes aina tarkempaan arvioon järjestelmän skeduloituvuudesta. Dynaamisen skeduloinnin yhteydessä voidaan skeduloituvuutta analysoida myös matemaattisesti. Moniin skedulointialgoritmeihin on liitetty kaavoja, joihin syötetään tunnetut lähtöarvot, kuten määräajat, suoritusajat, periodit, ja niin edelleen. Kaavaan sijoitusten jälkeen tuloksena saadaan tieto siitä, pystyykö kaavaan liittyvä algoritmi suorittamaan skeduloinnin vai ei. Jos vastaus on kyllä, algoritmia voidaan käyttää olettaen, että lähtötiedot ja -oletukset olivat oikeat. Toisaalta vaikka vastaukseksi tulisikin ei, ei tämä kuitenkaan takaa sitä, etteikö olisi olemassa skedulointialgoritmia, joka ongelman voisi ratkaista

20 Skedulointi eli vuoronnus 119 voi kuitenkin olla, että tällaista algoritmia ei ole vielä keksitty ja kaikki tunnetut algoritmit johtavat yhtä huonoon tulokseen. Skeduloitavuuteen liittyviin malleihin liittyy myös muita ongelmia. Ensimmäiseksi pitää tietää kuinka paljon prosessit oikeasti vaativat suoritusaikaa samaan tapaan kuin staattisen skeduloinnin yhteydessä, mikä lienee kohtuullinen oletus skeduloituvuutta arvioitaessa. Tilannetta kuitenkin monimutkaistaa se, että toisin kuin staattisessa skeduloinnissa, missä suunnittelija laskee skeduloinnin kokonaisuudessaan, dynaamista skedulointia käytettäessä skeduleri valitsee kulloinkin suoritettavan prosessin jonkin algoritmin mukaisesti. Tästä syystä tulos on oikeastaan aina pessimistisempi kuin staattisen skeduloinnin tapauksessa. Usein tilanne on sellainen, että jos liikutaan äärirajoilla dynaamista skedulointia käytettäessä, kannattaa varautua skeduloituvuuteen liittyviin ongelmiin jatkossa tai jopa suosiolla todeta, että pitää kokeilla jotakin kokonaan toista lähestymistapaa. Yksi tällainen vaihtoehto on esimerkiksi staattinen skedulointi, jossa joku prosessi voi dynaamisesti valita suorittamansa tehtävän, ja siten lisätä järjestelmään jonkin verran dynaamisia ominaisuuksia. Toinen ongelma skeduloituvuuteen liittyen on, että skeduleri voi myös vaihtaa suorituksessa olevan prosessin, kun suurempiprioriteettinen prosessi tulee suoritusvalmiiksi. Koska prosessin vaihtamisen kustannukset ja vaihtokertojen lukumäärä on vaikeaa arvioida käytännön syistä, usein ajoituslaskennan vaatimat arvot joudutaan osittain arvioimaan, tai jopa toteamaan, että prosessin vaihto on niin nopeaa, että siihen liittyvää aikaa ei tarvitse huomioida lainkaan. Kuten jo aiemmin todettiin, jotkut laitteiston ominaisuudet, kuten erityisesti välimuistin käyttö ja esimerkiksi levyoperaatioiden puskurointi, voivat monimutkaistaa realististen arvioiden tekemistä. 6.7 Yhteenveto Reaaliaikapiirteet vaativat ohjelman toiminnan oikea-aikaisuutta ja ennustettavuutta. Useita erilaisia vaatimuksia: 1. pehmeä reaaliaika: ajoituksen epäonnistuminen ei ole vakava virhe 2. kova reaaliaika: ajoitus ei saa epäonnistua 3. ennustettavuus: vasteajat voidaan laskea ja taata 4. reaktiivisuus: reagoi ärsykkeisiin aikarajojen sisällä riippumatta siitä, mitä muita tehtäviä on aktiivisena.

Arto Salminen,

Arto Salminen, 6. Luento: Skedulointi eli Vuoronnus Arto Salminen, arto.salminen@tut.fi Agenda Peruskäsitteet Skedulointialgoritmeja Reaaliaikajärjestelmien skedulointi Skeduloituvuuden analysoinnista Yhteenveto Peruskäsitteet

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu

Lisätiedot

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

4.3. Matemaattinen induktio

4.3. Matemaattinen induktio 4.3. Matemaattinen induktio Matemaattinen induktio: Deduktion laji Soveltuu, kun ominaisuus on osoitettava olevan voimassa luonnollisilla luvuilla. Suppea muoto P(n) : Ominaisuus, joka joka riippuu luvusta

Lisätiedot

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I. Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Esimerkkejä vaativuusluokista

Esimerkkejä vaativuusluokista Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään

Lisätiedot

Matematiikan tukikurssi, kurssikerta 2

Matematiikan tukikurssi, kurssikerta 2 Matematiikan tukikurssi kurssikerta 1 Relaatioista Oletetaan kaksi alkiota a ja b. Näistä kumpikin kuuluu johonkin tiettyyn joukkoon mahdollisesti ne kuuluvat eri joukkoihin; merkitään a A ja b B. Voidaan

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

A11-02 Infrapunasuodinautomatiikka kameralle

A11-02 Infrapunasuodinautomatiikka kameralle A11-02 Infrapunasuodinautomatiikka kameralle Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Lassi Seppälä Johan Dahl Sisällysluettelo Sisällysluettelo 1. Projektityön tavoite

Lisätiedot

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä Sekalaiset tehtävät, 11. syyskuuta 005, sivu 1 / 13 Tehtäviä Tehtävä 1. Johda toiseen asteen yhtälön ax + bx + c = 0, a 0 ratkaisukaava. Tehtävä. Määrittele joukon A R pienin yläraja sup A ja suurin alaraja

Lisätiedot

J. Virtamo Jonoteoria / Prioriteettijonot 1

J. Virtamo Jonoteoria / Prioriteettijonot 1 J. Virtamo 38.3143 Jonoteoria / Prioriteettijonot 1 Prioriteettijonot Tarkastellaan M/G/1-jonojärjestelmää, jossa asiakkaat on jaettu K:hon prioriteettiluokkaan, k = 1,..., K: - luokalla 1 on korkein prioriteetti

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010 TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta Yliassistentti Jussi Hakanen jussi.hakanen@jyu.fi syksy 2010 Optimaalisuus: objektiavaruus f 2 min Z = f(s) Parhaat arvot alhaalla ja vasemmalla

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 Määrittelyjoukoista Tarkastellaan funktiota, jonka määrittelevä yhtälö on f(x) = x. Jos funktion lähtöjoukoksi määrittelee vaikkapa suljetun välin [0, 1], on funktio

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 Konekieli, aliohjelmat, keskeytykset ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

5. OSITTAISINTEGROINTI

5. OSITTAISINTEGROINTI 5 OSITTAISINTEGROINTI Kahden funktion f ja g tulo derivoidaan kuten muistetaan seuraavasti: D (fg) f g + f Kun tämä yhtälö integroidaan puolittain, niin saadaan fg f ()g()d + f ()()d Yhtälö saattaa erota

Lisätiedot

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen S14 09 Sisäpeltorobotti AS 0.3200 Automaatio ja systeemitekniikan projektityöt Antti Kulpakko, Mikko Ikonen 1. Projektin tavoitteet Projektin tavoitteena on toteuttaa ohjelmisto sisäpeltorobottiin seuraavien

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus Versio: 28.2.2013 Julkaistu: 28.2.2013 Voimassaoloaika: toistaiseksi Sisällys 1 Yleiset vaatimukset... 2 2 Latauspalvelun

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 10 1 Funktion monotonisuus Derivoituva funktio f on aidosti kasvava, jos sen derivaatta on positiivinen eli jos f (x) > 0. Funktio on aidosti vähenevä jos sen derivaatta

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

6*. MURTOFUNKTION INTEGROINTI

6*. MURTOFUNKTION INTEGROINTI MAA0 6*. MURTOFUNKTION INTEGROINTI Murtofunktio tarkoittaa kahden polynomin osamäärää, ja sen yleinen muoto on P() R : R(). Q() Mikäli osoittajapolynomin asteluku on nimittäjäpolynomin astelukua korkeampi

Lisätiedot

HePon ryhmäajokoulutus Ajomuodostelmat

HePon ryhmäajokoulutus Ajomuodostelmat HePon ryhmäajokoulutus 9.4.2011 Ajomuodostelmat Peesaus Edellä ajavaan etäisyys 30 cm Kovissa nopeuksissa parikin metriä jo auttaa Älä aja renkaat limittäin Pidä veto koko ajan päällä Älä kiihdytä ja rullaa

Lisätiedot

1 Erilaisia tapoja järjestää

1 Erilaisia tapoja järjestää TIE-20100 Tietorakenteet ja algoritmit 1 1 Erilaisia tapoja järjestää Käsitellään seuraavaksi järjestämisalgoritmeja, jotka perustuvat muihin kuin vertailuun alkioiden oikean järjestyksen saamiseksi. Lisäksi

Lisätiedot

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys. Ei-säännöllisiä kieliä [Sipser luku 1.4] Osoitamme, että joitain kieliä ei voi tunnistaa äärellisellä automaatilla. Tulos ei sinänsä ole erityisen yllättävä, koska äärellinen automaatti on äärimmäisen

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

VUOROTTAMINEN YKSI CPU

VUOROTTAMINEN YKSI CPU Käyttöjärjestelmät VUOROTTAMINEN YKSI CPU Stallings, Luku 9 KJ-II K2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 5-1 Mihin jäimmekään? Tähän mennessä: Ready-jono, valitse ensimmäinen Aikaviipaletekniikka

Lisätiedot

3.1 Väliarvolause. Funktion kasvaminen ja väheneminen

3.1 Väliarvolause. Funktion kasvaminen ja väheneminen Väliarvolause Funktion kasvaminen ja väheneminen LAUSE VÄLIARVOLAUSE Oletus: Funktio f on jatkuva suljetulla välillä I: a < x < b f on derivoituva välillä a < x < b Väite: On olemassa ainakin yksi välille

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

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

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Agility Games Gamblers

Agility Games Gamblers Agility Games Gamblers Games-lajeista ehkä hieman helpommin sisäistettävä on Gamblers, jota on helppo mennä kokeilemaan melkein ilman sääntöjä lukematta. Rata koostuu kahdesta osuudesta: 1. Alkuosa, jossa

Lisätiedot

Opetusmateriaali. Fermat'n periaatteen esittely

Opetusmateriaali. Fermat'n periaatteen esittely Opetusmateriaali Fermat'n periaatteen esittely Hengenpelastajan tehtävässä kuvataan miten hengenpelastaja yrittää hakea nopeinta reittiä vedessä apua tarvitsevan ihmisen luo - olettaen, että hengenpelastaja

Lisätiedot

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 7 1 Useamman muuttujan funktion raja-arvo Palautetaan aluksi mieliin yhden muuttujan funktion g(x) raja-arvo g(x). x a Tämä raja-arvo kertoo, mitä arvoa funktio g(x)

Lisätiedot

MS-C2105 Optimoinnin perusteet Malliratkaisut 5

MS-C2105 Optimoinnin perusteet Malliratkaisut 5 MS-C2105 Optimoinnin perusteet Malliratkaisut 5 Ehtamo Demo 1: Arvaa lähimmäksi Jokainen opiskelija arvaa reaaliluvun välillä [0, 100]. Opiskelijat, joka arvaa lähimmäksi yhtä kolmasosaa (1/3) kaikkien

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

1 Määrittelyjä ja aputuloksia

1 Määrittelyjä ja aputuloksia 1 Määrittelyjä ja aputuloksia 1.1 Supremum ja infimum Aluksi kerrataan pienimmän ylärajan (supremum) ja suurimman alarajan (infimum) perusominaisuuksia ja esitetään muutamia myöhemmissä todistuksissa tarvittavia

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2

Sisällys. Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä. 2.2 2. Vuokaaviot 2.1 Sisällys aavioiden rakenne. aavioiden piirto symboleita yhdistelemällä. aavion osan toistaminen silmukalla. simerkkejä. 2.2 Vuokaaviot Graafinen kieli algoritmien kuvaamiseen. Muodostetaan

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

PEM1123/ 410993A. Asennus- ja käyttöohje SW/S2.5 viikkokello. ABB i-bus KNX. SW/S2.5 Viikkokello

PEM1123/ 410993A. Asennus- ja käyttöohje SW/S2.5 viikkokello. ABB i-bus KNX. SW/S2.5 Viikkokello PEM1123/ 410993A Asennus- ja käyttöohje SW/S2.5 viikkokello ABB i-bus KNX SW/S2.5 Viikkokello Sisällysluettelo 1.0 Kuvaus 1.1 Laitteen käyttö...3 1.2 Ominaisuudet...3 1.3 Näppäimet ja osat...4 1.4 Tekniset

Lisätiedot

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

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??) 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

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 8 1 Funktion kuperuussuunnat Derivoituva funktio f (x) on pisteessä x aidosti konveksi, jos sen toinen derivaatta on positiivinen f (x) > 0. Vastaavasti f (x) on aidosti

Lisätiedot

Harjoitus 7: NCSS - Tilastollinen analyysi

Harjoitus 7: NCSS - Tilastollinen analyysi Harjoitus 7: NCSS - Tilastollinen analyysi Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tilastollinen testaus Testaukseen

Lisätiedot

Harjoitus 6 ( )

Harjoitus 6 ( ) Harjoitus 6 (21.4.2015) Tehtävä 1 Määritelmän (ks. luentomoniste s. 109) mukaan yleisen, muotoa min f(x) s. t. g(x) 0 h(x) = 0 x X olevan optimointitehtävän Lagrangen duaali on missä max θ(u, v) s. t.

Lisätiedot

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012 1.1. (a) Jaettava m, jakaja n. Vähennetään luku n luvusta m niin kauan kuin m pysyy ei-negatiivisena. Jos jäljelle jää nolla, jaettava oli tasan jaollinen. int m,

Lisätiedot

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Approbatur 3, demo 1, ratkaisut 1.1. A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat. Käydään kaikki vaihtoehdot läpi. Jos A on rehti, niin B on retku, koska muuten

Lisätiedot

Kustannusten minimointi, kustannusfunktiot

Kustannusten minimointi, kustannusfunktiot Kustannusten minimointi, kustannusfunktiot Luvut 20 ja 21 Marita Laukkanen November 3, 2016 Marita Laukkanen Kustannusten minimointi, kustannusfunktiot November 3, 2016 1 / 17 Kustannusten minimointiongelma

Lisätiedot

Matemaattisen analyysin tukikurssi

Matemaattisen analyysin tukikurssi Matemaattisen analyysin tukikurssi 5. Kurssikerta Petrus Mikkola 10.10.2016 Tämän kerran asiat Raja-arvo ja toispuolinen raja-arvo Funktion suurin ja pienin arvo Lukujono Lukujonon suppeneminen Kasvava

Lisätiedot

DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä

DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä 1 DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä JK 23.10.2007 Johdanto Harrasteroboteissa käytetään useimmiten voimanlähteenä DC-moottoria. Tämä moottorityyppi on monessa suhteessa kätevä

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 8 Väliarvolause Oletetaan, että funktio f on jatkuva jollain reaalilukuvälillä [a, b] ja derivoituva avoimella välillä (a, b). Funktion muutos tällä välillä on luonnollisesti

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

Tavutusohjelman toimintapa...3. Tavutussääntöjä...3. Keinoja...3. Vihjetavu...3. Katkeamaton väli...4. Katkeamaton tavuviiva...4

Tavutusohjelman toimintapa...3. Tavutussääntöjä...3. Keinoja...3. Vihjetavu...3. Katkeamaton väli...4. Katkeamaton tavuviiva...4 1 Sisältö Tavutusohjelman toimintapa...3 Tavutussääntöjä...3 Keinoja...3 Vihjetavu...3 Katkeamaton väli...4 Katkeamaton tavuviiva...4 Pehmeä rivinvaihto...4 2 Mikään tavutusohjelma ei ole täydellinen.

Lisätiedot

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/ Koodaamme uutta todellisuutta FM Maarit Savolainen 19.1.2017 https://blog.edu.turku.fi/matikkaajakoodausta/ Mitä on koodaaminen? Koodaus on puhetta tietokoneille. Koodaus on käskyjen antamista tietokoneelle.

Lisätiedot

METEORIEN HAVAINNOINTI III VISUAALIHAVAINNOT 3.1 YLEISTÄ

METEORIEN HAVAINNOINTI III VISUAALIHAVAINNOT 3.1 YLEISTÄ 23 METEORIEN HAVAINNOINTI III VISUAALIHAVAINNOT 3.1 YLEISTÄ Tässä metodissa on kyse perinteisestä. luettelomaisesta listaustyylistä, jossa meteorit kirjataan ylös. Tietoina meteorista riittää, kuuluuko

Lisätiedot

Nyt ensimmäisenä periodina (ei makseta kuponkia) odotettu arvo on: 1 (qv (1, 1) + (1 q)v (0, 1)) V (s, T ) = C + F

Nyt ensimmäisenä periodina (ei makseta kuponkia) odotettu arvo on: 1 (qv (1, 1) + (1 q)v (0, 1)) V (s, T ) = C + F Mat-2.34 Investointiteoria Laskuharjoitus 2/2008, Ratkaisut 29.04.2008 Binomihilan avulla voidaan laskea T vuoden ja tietyn kupongin sisältävän joukkovelkakirjan arvo eli hinta rekursiivisesti vaihtelevan

Lisätiedot

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen) 58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen) 1. Lisäysjärjestämisessä järjestetään ensin taulukon kaksi ensimmäistä lukua, sitten kolme ensimmäistä lukua, sitten neljä ensimmäistä

Lisätiedot

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0. Ääriarvon laatu Jatkuvasti derivoituvan funktion f lokaali ääriarvokohta (x 0, y 0 ) on aina kriittinen piste (ts. f x (x, y) = f y (x, y) = 0, kun x = x 0 ja y = y 0 ), mutta kriittinen piste ei ole aina

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen, 14. Luento: Kohti hajautettuja sulautettuja järjestelmiä Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Hajautettujen järjestelmien väyliä LON CAN Pienen laitteen sisäinen hajautus OpenCL Network

Lisätiedot

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k 1 Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa ko. toiminnallisuuden hyödyntämisen Web-palveluna.

Lisätiedot

5.3 Suoran ja toisen asteen käyrän yhteiset pisteet

5.3 Suoran ja toisen asteen käyrän yhteiset pisteet .3 Suoran ja toisen asteen käyrän yhteiset pisteet Tämän asian taustana on ratkaista sellainen yhtälöpari, missä yhtälöistä toinen on ensiasteinen ja toinen toista astetta. Tällainen pari ratkeaa aina

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Näihin harjoitustehtäviin liittyvä teoria löytyy Adamsista: Ad6, Ad5, 4: 12.8, ; Ad3: 13.8,

Näihin harjoitustehtäviin liittyvä teoria löytyy Adamsista: Ad6, Ad5, 4: 12.8, ; Ad3: 13.8, TKK, Matematiikan laitos Gripenberg/Harhanen Mat-1.432 Matematiikan peruskurssi K2 Harjoitus 4, (A=alku-, L=loppuviikko, T= taulutehtävä, P= palautettava tehtävä, W= verkkotehtävä ) 12 16.2.2007, viikko

Lisätiedot

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.

Lisätiedot

Jonojen matematiikkaa

Jonojen matematiikkaa Lectio praecursoria Jonojen matematiikkaa Samuli Aalto luento.ppt 1 Sisältö Johdanto Joukkopalveltu jono (batch service queue) Nestevarastomalli (fluid flow storage model) 2 Reaalimaailman ilmiö... ÿþýüûr.u.p.t.

Lisätiedot

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 3: Jatkuvuus Pekka Alestalo, Jarmo Malinen Aalto-yliopisto, Matematiikan ja systeemianalyysin laitos 19.9.2016 Pekka Alestalo, Jarmo

Lisätiedot

Matemaatiikan tukikurssi

Matemaatiikan tukikurssi Matemaatiikan tukikurssi Kurssikerta 1 1 Funktiot Funktion määritelmä Funktio on sääntö, joka liittää kahden eri joukon alkioita toisiinsa. Ollakseen funktio tämän säännön on liitettävä jokaiseen lähtöjoukon

Lisätiedot

5. Rinnakkaisuus ja jako prosesseihin

5. Rinnakkaisuus ja jako prosesseihin Rinnakkaisuus ja jako prosesseihin 89 5. Rinnakkaisuus ja jako prosesseihin Tietokoneen oheislaitteet toimivat toisistaan riippumatta. Ne edustavat todellista rinnakkaisuutta, sillä niiden toimintojen

Lisätiedot

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120 Tehtävä 1 : 1 Merkitään jatkossa kirjaimella H kaikkien solmujoukon V sellaisten verkkojen kokoelmaa, joissa on tasan kolme särmää. a) Jokainen verkko G H toteuttaa väitteen E(G) [V]. Toisaalta jokainen

Lisätiedot

Reaalilukuvälit, leikkaus ja unioni (1/2)

Reaalilukuvälit, leikkaus ja unioni (1/2) Luvut Luonnolliset luvut N = {0, 1, 2, 3,... } Kokonaisluvut Z = {..., 2, 1, 0, 1, 2,... } Rationaaliluvut (jaksolliset desimaaliluvut) Q = {m/n m, n Z, n 0} Irrationaaliluvut eli jaksottomat desimaaliluvut

Lisätiedot

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot Lukujonon raja-arvo 1/7 Sisältö Esimerkki lukujonon raja-arvosta Lukujonossa a 1,a 2,a 3,... (jossa on äärettömän monta termiä) voivat luvut lähestyä jotakin arvoa, kun jonossa edetään yhä pidemmälle.

Lisätiedot

1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.

1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen. Joukko-oppia Matematiikan mestariluokka, syksy 2010 Harjoitus 1, vastaukset 20.2.2010 1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi asettele

Lisätiedot

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Sami Hokuni 12 Syyskuuta, 2012 1/ 54 Sami Hokuni Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Turun Yliopisto. Gradu tehty 2012 kevään

Lisätiedot

E-kirjan kirjoittaminen

E-kirjan kirjoittaminen 1 E-kirjan kirjoittaminen Ohjeet e-kirjan kirjoittamiseen Tämän ohjeistuksen tavoitteena on auttaa sinua luomaan yksinkertainen e-kirja (pdftiedosto) asiakkaallesi. Kirja näyttää hänelle kuinka hyvin ymmärrät

Lisätiedot

(b) Onko hyvä idea laske pinta-alan odotusarvo lähetmällä oletuksesta, että keppi katkeaa katkaisukohdan odotusarvon kohdalla?

(b) Onko hyvä idea laske pinta-alan odotusarvo lähetmällä oletuksesta, että keppi katkeaa katkaisukohdan odotusarvon kohdalla? 6.10.2006 1. Keppi, jonka pituus on m, taitetaan kahtia täysin satunnaisesti valitusta kohdasta ja muodostetaan kolmio, jonka kateetteina ovat syntyneet palaset. Kolmion pinta-ala on satunnaismuuttuja.

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä:

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä: 2. Vuokaaviot 2.1 Sisällys Kaavioiden rakenne. Kaavioiden piirto symbolta yhdistelemällä. Kaavion osan toistaminen silmukalla. Esimerkkejä: algoritmi oven avaamiseen vuokaaviona, keskiarvon laskeminen

Lisätiedot

8 Yritys kilpailullisilla markkinoilla (Mankiw & Taylor, Ch 14)

8 Yritys kilpailullisilla markkinoilla (Mankiw & Taylor, Ch 14) 8 Yritys kilpailullisilla markkinoilla (Mankiw & Taylor, Ch 14) Markkinat ovat kilpailulliset silloin, kun siellä on niin paljon yrityksiä, että jokainen pitää markkinoilla määräytyvää hintaa omista toimistaan

Lisätiedot

Automatisoituminen, resurssit ja monitehtäväsuoritus

Automatisoituminen, resurssit ja monitehtäväsuoritus Automatisoituminen, resurssit ja monitehtäväsuoritus Mitä automatisoitumisella tarkoitetaan? Hyvin pitkälti automatisoitunut tehtävä... voidaan suorittaa ilman tarkkaavaisuutta ei välttämättä tuota minkäänlaista

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

12. Hessen matriisi. Ääriarvoteoriaa

12. Hessen matriisi. Ääriarvoteoriaa 179 12. Hessen matriisi. Ääriarvoteoriaa Tarkastelemme tässä luvussa useamman muuttujan (eli vektorimuuttujan) n reaaliarvoisia unktioita : R R. Edellisessä luvussa todettiin, että riittävän säännöllisellä

Lisätiedot

Skedulointi, kuormituksen tasaus, robotin navigaatio

Skedulointi, kuormituksen tasaus, robotin navigaatio Skedulointi, kuormituksen tasaus, robotin navigaatio Esitelmä algoritmiikan tutkimusseminaarissa 17.2.2003 Kimmo Palin Tietojenkäsittelytieteen laitos Helsingin Yliopisto Skedulointi, kuormituksen tasaus,

Lisätiedot

17. Ohjelmoinnin tekniikkaa 17.1

17. Ohjelmoinnin tekniikkaa 17.1 17. Ohjelmoinnin tekniikkaa 17.1 Sisällys for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot