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.

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen, tommi.mikkonen@tut.fi 6. Luento: Skedulointi eli Vuoronnus Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Peruskäsitteet Skedulointialgoritmeja Reaaliaikajärjestelmien skedulointi Skeduloituvuuden analysoinnista Yhteenveto Peruskäsitteet

Lisätiedot

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

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt Harjoitustyöt 3

Lisätiedot

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Käyttöjärjestelmät: poissulkeminen ja synkronointi Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet

Lisätiedot

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

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

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

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

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät Sulautetut järjestelmät Luku 2 Sivu 1 (??) Palvelut Käyttöjärjestelmän tehtävänä on tarjota ohjelmoijalla erilaisia palveluita Tyypillisin palvelu, jota sulautetut käyttöjärjestelmät tarjoavat on prosessien

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

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

Yleistä. Esimerkki. Yhden palvelimen jono. palvelin. saapuvat asiakkaat. poistuvat asiakkaat. odotushuone, jonotuspaikat

Yleistä. Esimerkki. Yhden palvelimen jono. palvelin. saapuvat asiakkaat. poistuvat asiakkaat. odotushuone, jonotuspaikat J. Virtamo 38.3143 Jonoteoria / Jonojärjestelmät 1 JONOJÄRJESTELMÄT Yleistä Jonojärjestelmät muodostavat keskeisen mallinnuksen välineen mm. tietoliikenne- ja tietokonejärjestelmien suorituskyvyn analysoinnissa.

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

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi

4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi 4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia

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

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu 811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n)) Määritelmä: on O(g(n)), jos on olemassa vakioarvot n 0 > 0 ja c > 0 siten, että c g(n) kun n > n 0 O eli iso-o tai ordo ilmaisee asymptoottisen ylärajan resurssivaatimusten kasvun suuruusluokalle Samankaltaisia

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

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi 1. Luento: Sulautetut Järjestelmät Arto Salminen, arto.salminen@tut.fi Agenda Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu

Lisätiedot

Kombinatorinen optimointi

Kombinatorinen optimointi Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein

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

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

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

1 Aritmeettiset ja geometriset jonot

1 Aritmeettiset ja geometriset jonot 1 Aritmeettiset ja geometriset jonot Johdatus Johdatteleva esimerkki 1 Kasvutulille talletetaan vuoden jokaisen kuukauden alussa tammikuusta alkaen 100 euroa. Tilin nettokorkokanta on 6%. Korko lisätää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

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä: Nielsen: "Olen tutkinut Webin käytettävyyttä vuodesta 1994, ja jokaisessa tutkimuksessa esiin on noussut sama asia: käyttäjät haluaisivat sivujen latautuvan nopeammin. Aluksi olin sitä mieltä, että käyttäjät

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

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö 3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden

Lisätiedot

3 Raja-arvo ja jatkuvuus

3 Raja-arvo ja jatkuvuus 3 Raja-arvo ja jatkuvuus 3. Raja-arvon käsite Raja-arvo kuvaa funktion kättätmistä jonkin lähtöarvon läheisdessä. Raja-arvoa tarvitaan toisinaan siksi, että funktion arvoa ei voida laskea kseisellä lähtöarvolla

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

9. Luento: Ohjelmistotyö. Tommi Mikkonen, tommi.mikkonen@tut.fi

9. Luento: Ohjelmistotyö. Tommi Mikkonen, tommi.mikkonen@tut.fi 9. Luento: Ohjelmistotyö Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Ristikäännös Testaus ja virheen jäljitys Yleensä Kehitysympäristössä Käyttöympäristössä Laitteiston testaus Iteratiivisesta

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

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

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

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

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja

Lisätiedot

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

Lisätiedot

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki 30.11.2007 Hajautetut algoritmit -seminaari Konsensusongelma Päätöksen muodostaminen hajautetussa järjestelmässä Prosessien välinen viestintä

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

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

Jatkuvat satunnaismuuttujat

Jatkuvat satunnaismuuttujat Jatkuvat satunnaismuuttujat Satunnaismuuttuja on jatkuva jos se voi ainakin periaatteessa saada kaikkia mahdollisia reaalilukuarvoja ainakin tietyltä väliltä. Täytyy ymmärtää, että tällä ei ole mitään

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

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

Tosiaikajärjestelmät Luento 5: Resurssien hallinta ja prioriteetit

Tosiaikajärjestelmät Luento 5: Resurssien hallinta ja prioriteetit Tosiaikajärjestelmät Luento 5: Resurssien hallinta ja prioriteetit Tiina Niklander Jaetut resurssit Useat tapahtumat jakavat ohjelma-/laitteisto-olioita, joissa keskinäinen poissulkeminen on välttämätöntä.

Lisätiedot

Tuotannon jatkuva optimointi muutostilanteissa

Tuotannon jatkuva optimointi muutostilanteissa Tuotannon jatkuva optimointi muutostilanteissa 19.4.2012 Henri Tokola Henri Tokola Esityksen pitäjä 2009 Tohtorikoulutettava Aalto-yliopisto koneenrakennustekniikka Tutkimusaihe: Online-optimointi ja tuotannonohjaus

Lisätiedot

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt S11-04 Kompaktikamerat stereokamerajärjestelmässä Projektisuunnitelma Ari-Matti Reinsalo Anssi Niemi 28.1.2011 Projektityön tavoite Projektityössä

Lisätiedot

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: Tietorakenteet, laskuharjoitus 10, ratkaisuja 1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa: SamaLuku(T ) 2 for i = 1 to T.length 1 3 if T [i] == T [i + 1] 4 return True 5 return

Lisätiedot

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,

Lisätiedot

Mat-2.148 Dynaaminen optimointi, mallivastaukset, kierros 5

Mat-2.148 Dynaaminen optimointi, mallivastaukset, kierros 5 Mat-2.148 Dynaaminen optimointi, mallivastaukset, kierros 5 1. Kotitehtävä. 2. Lasketaan aluksi korkoa korolle. Jos korkoprosentti on r, ja korko maksetaan n kertaa vuodessa t vuoden ajan, niin kokonaisvuosikorko

Lisätiedot

Luento 9. June 2, Luento 9

Luento 9. June 2, Luento 9 June 2, 2016 Otetaan lähtökohdaksi, että sopimuksilla ei voida kattaa kaikkia kontingensseja/maailmantiloja. Yksi kiinnostava tapaus on sellainen, että jotkut kontingenssit ovat havaittavissa sopimusosapuolille,

Lisätiedot

T Rinnakkaiset ja hajautetut digitaaliset järjestelmät Stokastinen analyysi

T Rinnakkaiset ja hajautetut digitaaliset järjestelmät Stokastinen analyysi T-79.179 Rinnakkaiset ja hajautetut digitaaliset järjestelmät Stokastinen analyysi 12. maaliskuuta 2002 T-79.179: Stokastinen analyysi 8-1 Stokastinen analyysi, miksi? Tavallinen Petri-verkkojen saavutettavuusanalyysi

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

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

Algoritmit 2. Luento 1 Ti Timo Männikkö

Algoritmit 2. Luento 1 Ti Timo Männikkö Algoritmit 2 Luento 1 Ti 14.3.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin valinta Algoritmin analysointi Algoritmin suoritusaika Peruskertaluokkia Kertaluokkamerkinnät Kertaluokkien ominaisuuksia

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

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

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007 Jaetun muistin muuntaminen viestin välitykseksi Otto Räsänen 15. lokakuuta 2007 1 Motivaatio 2 Valtuuden välitys Peruskäsitteitä 3 Kolme algoritmia Valtuuden välitys käyttäen laskuria ilman ylärajaa Valtuuden

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

Nollasummapelit ja bayesilaiset pelit

Nollasummapelit ja bayesilaiset pelit Nollasummapelit ja bayesilaiset pelit Kristian Ovaska HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Seminaari: Peliteoria Helsinki 18. syyskuuta 2006 Sisältö 1 Johdanto 1 2 Nollasummapelit 1 2.1

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

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

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

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

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko

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

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

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

Tehtävä 2: Tietoliikenneprotokolla

Tehtävä 2: Tietoliikenneprotokolla Tehtävä 2: Tietoliikenneprotokolla Johdanto Tarkastellaan tilannetta, jossa tietokone A lähettää datapaketteja tietokoneelle tiedonsiirtovirheille alttiin kanavan kautta. Datapaketit ovat biteistä eli

Lisätiedot

GREDDY PROFEC B SPEC II säätäminen

GREDDY PROFEC B SPEC II säätäminen GREDDY PROFEC B SPEC II säätäminen Päätin tehdä tällaisen ohjeen, koska jotkut ovat sitä kyselleet suomeksi. Tämä on vapaa käännös eräästä ohjeesta, joka on suunnattu Evoille (joka on koettu toimivaksi

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä?

Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? Ongelma 1: Ovatko kaikki tehtävät/ongelmat deterministisiä? 2012-2013 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2012-2013 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia

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

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

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia 58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, 10..2014, vastauksia 1. [9 pistettä] (a) Todistetaan 2n 2 + n + 5 = O(n 2 ): Kun n 1 on 2n 2 + n + 5 2n 2 + n 2 +5n 2 = 8n 2. Eli

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

Meidän visiomme......sinun tulevaisuutesi

Meidän visiomme......sinun tulevaisuutesi Meidän visiomme... Asiakkaittemme akunvaihdon helpottaminen...sinun tulevaisuutesi Uusia asiakkaita, lisää kannattavuutta ja kehitystä markkinoiden tahdissa Synergy Battery Replacement Programme The Battery

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava

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

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

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

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa

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

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon

Lisätiedot

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi 24.01.2011 Ohjaaja: Tapio Niemi Valvoja: Harri Ehtamo Tausta ja työn tavoite Työ tehtiin Helsinki Institute of Physics:ille,

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

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

Demo 1: Simplex-menetelmä

Demo 1: Simplex-menetelmä MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x

Lisätiedot

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura 28.01.2012

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura 28.01.2012 Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen Pekka Peura 28.01.2012 MOTIVAATIOTA JA AKTIIVISUUTTA LISÄÄVÄN OPPIMISYMPÄRISTÖN ESITTELY (lisätietoja maot.fi)

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

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

kertaa samat järjestykseen lukkarissa.

kertaa samat järjestykseen lukkarissa. Opetuksen toistuva varaus ryhmällee TY10S11 - Tästä tulee pitkä esimerkki, sillä pyrin nyt melko yksityiskohtaisesti kuvaamaan sen osion mikä syntyy tiedon hakemisesta vuosisuunnittelusta, sen tiedon kirjaamiseen

Lisätiedot

8.1. Tuloperiaate. Antti (miettien):

8.1. Tuloperiaate. Antti (miettien): 8.1. Tuloperiaate Katseltaessa klassisen todennäköisyyden määritelmää selviää välittömästi, että sen soveltamiseksi on kyettävä määräämään erilaisten joukkojen alkioiden lukumääriä. Jo todettiin, ettei

Lisätiedot

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B. HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 3 Ratkaisuehdotuksia Tehtäväsarja I Seuraavissa tehtävissä harjoitellaan muun muassa kahden joukon osoittamista samaksi sekä joukon

Lisätiedot

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla.

Kaavioiden rakenne. Kaavioiden piirto symboleita yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. 2. Vuokaaviot 2.1 Sisällys Kaavioiden rakenne. Kaavioiden piirto symbolta yhdistelemällä. Kaavion osan valitseminen päätöksellä ja toistaminen silmukalla. Esimerkkejä: algoritmi oven avaamiseen vuokaaviona,

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat

Lisätiedot