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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

10 Liiketaloudellisia algoritmeja

10 Liiketaloudellisia algoritmeja 218 Liiketaloudellisia algoritmeja 10 Liiketaloudellisia algoritmeja Tämä luku sisältää liiketaloudellisia laskelmia. Aiheita voi hyödyntää vaikkapa liiketalouden opetuksessa. 10.1 Investointien kannattavuuden

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

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

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

v 8 v 9 v 5 C v 3 v 4

v 8 v 9 v 5 C v 3 v 4 Verkot Verkko on (äärellinen) matemaattinen malli, joka koostuu pisteistä ja pisteitä toisiinsa yhdistävistä viivoista. Jokainen viiva yhdistää kaksi pistettä, jotka ovat viivan päätepisteitä. Esimerkiksi

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

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

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

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori Testauksen tuki nopealle tuotekehitykselle Antti Jääskeläinen Matti Vuori Mitä on nopeus? 11.11.2014 2 Jatkuva nopeus Läpäisyaste, throughput Saadaan valmiiksi tasaiseen, nopeaan tahtiin uusia tuotteita

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

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

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

Logistiikan optimointi- ja ohjausjärjestelmä TCS-Opti

Logistiikan optimointi- ja ohjausjärjestelmä TCS-Opti Logistiikan optimointi- ja ohjausjärjestelmä TCS-Opti Taustaa.. Logistiikan ohjaus on fyysisten toimintojen ja koko logistiikan suunnittelua, kehitystä ja valvontaa. Siihen liittyvät järjestelmät voidaan

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

Ongelma(t): Jotta tietokonetta voitaisiin käyttää monipuolisesti ja mahdollisimman yksinkertaisesti kaikkiin sille soveltuviin käyttötarkoituksiin,

Ongelma(t): Jotta tietokonetta voitaisiin käyttää monipuolisesti ja mahdollisimman yksinkertaisesti kaikkiin sille soveltuviin käyttötarkoituksiin, Ongelma(t): Jotta tietokonetta voitaisiin käyttää monipuolisesti ja mahdollisimman yksinkertaisesti kaikkiin sille soveltuviin käyttötarkoituksiin, niin miten tietokoneen resurssit tulisi antaa käyttöön

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ä? 2013-2014 Lasse Lensu 2 Ongelma 2: Milloin ongelmat muuttuvat oikeasti hankaliksi? 2013-2014 Lasse Lensu 3 Ongelma 3: Miten hankalia ongelmia

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

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

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta. Tehtävänanto - Asenna WordPress ja tee siihen esimerkkisisältöä - Mittaa WP:n tehoa. Vertaile etusivun ja alasivujen nopeutta siihen, että tallennat saman sisällön staattiseksi. Analysoi mittaustulokset.

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

Littlen tulos. Littlen lause sanoo. N = λ T. Lause on hyvin käyttökelpoinen yleisyytensä vuoksi

Littlen tulos. Littlen lause sanoo. N = λ T. Lause on hyvin käyttökelpoinen yleisyytensä vuoksi J. Virtamo 38.3143 Jonoteoria / Littlen tulos 1 Littlen tulos Littlen lause Littlen tuloksena tai Littlen lauseena tunnettu tulos on hyvin yksinkertainen relaatio järjestelmään tulevan asiakasvirran, keskimäärin

Lisätiedot

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

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

Hintadiskriminaatio 2/2

Hintadiskriminaatio 2/2 Hintadiskriminaatio 2/2 Matti Hellvist 12.2.2003 Toisen asteen hintadiskrimiaatio eli tuotteiden kohdennus Toisen asteen hintadiskriminaatio toimii tilanteessa, jossa kuluttajat ovat keskenään erilaisia

Lisätiedot

Tulostimen hallintaohjelmisto MarkVision

Tulostimen hallintaohjelmisto MarkVision Tulostinohjelmisto ja apuohjelmat 1 Tulostimen hallintaohjelmisto MarkVision Windows 95/98/2000-, Windows NT 4.0- ja Macintosh-käyttöjärjestelmien MarkVision toimitetaan tulostimen mukana Drivers, MarkVision

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

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT ALGORITMIEN ANALYYSISTÄ 1.ratkaisu Laskentaaika hakkeri - optimoitu ALGORITMIANALYYSIÄ hyvä algoritmi hakkeri -optimoitu hyvä algoritmi Tehtävän koko Kuva mukailtu

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

Aki Taanila LINEAARINEN OPTIMOINTI

Aki Taanila LINEAARINEN OPTIMOINTI Aki Taanila LINEAARINEN OPTIMOINTI 26.4.2011 JOHDANTO Tässä monisteessa esitetään lineaarisen optimoinnin alkeet. Moniste sisältää tarvittavat Excel ohjeet. Viimeisin versio tästä monisteesta ja siihen

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

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

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita. 1 2 Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita. 3 4 Region vastaa palvelun fyysistä sijaintipaikkaa (AWS

Lisätiedot

Rosemount 3051S sähköiset ERS-anturit

Rosemount 3051S sähköiset ERS-anturit sähköiset ERS-anturit Uudentasoiset mittausratkaisut erityiskohteisiin Uusi ratkaisu vanhaan ongelmaan Kaikkialta löytyy mittauksia, joiden luotettava toiminta edellyttää sekä aikaa että voimavaroja. Tyypillisiä

Lisätiedot

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2

2.3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. b b 4ac = 2 .3 Juurien laatu. Juurien ja kertoimien väliset yhtälöt. Jako tekijöihin. Toisen asteen yhtälön a + b + c 0 ratkaisukaavassa neliöjuuren alla olevaa lauseketta b b 4ac + a b b 4ac a D b 4 ac sanotaan yhtälön

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

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot

Simulointi. Varianssinhallintaa Esimerkki

Simulointi. Varianssinhallintaa Esimerkki Simulointi Varianssinhallintaa Esimerkki M C Esimerkki Tarkastellaan lasersäteen sirontaa partikkelikerroksesta Jukka Räbinän pro gradu 2005 Tavoitteena simuloida sirontakuvion tunnuslukuja Monte Carlo

Lisätiedot

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

Vuonohjaus: ikkunamekanismi

Vuonohjaus: ikkunamekanismi J. Virtamo 38.3141 Teleliikenneteoria / Ikkunointiin perustuva vuonohjaus 1 Vuonohjaus: ikkunamekanismi Kuittaamattomina liikkeellä olevien segmenttien (data unit) lkm W (ikkuna) Lähetyslupien kokonaismäärä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

5.3 Ensimmäisen asteen polynomifunktio

5.3 Ensimmäisen asteen polynomifunktio Yllä olevat polynomit P ( x) = 2 x + 1 ja Q ( x) = 2x 1 ovat esimerkkejä 1. asteen polynomifunktioista: muuttujan korkein potenssi on yksi. Yleisessä 1. asteen polynomifunktioissa on lisäksi vakiotermi;

Lisätiedot

VERKON ASETUKSET SEKÄ WINDOWSIN PÄIVITTÄMINEN

VERKON ASETUKSET SEKÄ WINDOWSIN PÄIVITTÄMINEN VERKON ASETUKSET SEKÄ WINDOWSIN PÄIVITTÄMINEN Tämän harjoituksen tarkoituksena on varmistaa verkon asetukset sekä päivittää Windows käyttäen Windows Update -palvelua. Dokumentin lopussa on palautettava

Lisätiedot

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 7. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale

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

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla

Nimittäin, koska s k x a r mod (p 1), saadaan Fermat n pienen lauseen avulla 6. Digitaalinen allekirjoitus Digitaalinen allekirjoitus palvelee samaa tarkoitusta kuin perinteinen käsin kirjotettu allekirjoitus, t.s. Liisa allekirjoittaessaan Pentille lähettämän viestin, hän antaa

Lisätiedot

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Esimerkkejä polynomisista ja ei-polynomisista ongelmista Esimerkkejä polynomisista ja ei-polynomisista ongelmista Ennen yleisempiä teoriatarkasteluja katsotaan joitain tyypillisiä esimerkkejä ongelmista ja niiden vaativuudesta kaikki nämä ongelmat ratkeavia

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

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

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

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0

k=1 b kx k K-kertoimisia polynomeja, P (X)+Q(X) = (a k + b k )X k n+m a i b j X k. i+j=k k=0 1. Polynomit Tässä luvussa tarkastelemme polynomien muodostamia renkaita polynomien ollisuutta käsitteleviä perustuloksia. Teemme luvun alkuun kaksi sopimusta: Tässä luvussa X on muodollinen symboli, jota

Lisätiedot

Eye Pal Solo. Käyttöohje

Eye Pal Solo. Käyttöohje Eye Pal Solo Käyttöohje 1 Eye Pal Solon käyttöönotto Eye Pal Solon pakkauksessa tulee kolme osaa: 1. Peruslaite, joka toimii varsinaisena lukijana ja jonka etureunassa on laitteen ohjainpainikkeet. 2.

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

Tapahtuipa Testaajalle...

Tapahtuipa Testaajalle... Tapahtuipa Testaajalle... - eli testaus tosielämässä 09.10.2007 Juhani Snellman Qentinel Oy 2007 Agenda Minä ja mistä tulen Testauksen konteksti Tapauksia tosielämästä ja työkaluja 2 Minä Juhani Snellman

Lisätiedot

Synco TM 700 säätimen peruskäyttöohjeet

Synco TM 700 säätimen peruskäyttöohjeet Synco TM 700 säätimen peruskäyttöohjeet Nämä ohjeet on tarkoitettu säätimen loppukäyttäjälle ja ne toimivat sellaisenaan säätimen mallista riippumatta. Säätimessä on kolme eri käyttäjätasoa, joista jokaisessa

Lisätiedot

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmiston testaus ja laatu. Testaustasot Ohjelmiston testaus ja laatu Testaustasot Testauksen vaihejako Tarpeet / sopimus Järjestelmätestaus Hyväksymiskoe Määrittely testauksen suunnittelu ja tulosten verifiointi Arkkitehtuurisuunnittelu Moduulisuunnittelu

Lisätiedot

PDF-tiedostojen optimointi hakukoneille

PDF-tiedostojen optimointi hakukoneille PDF-tiedostojen optimointi hakukoneille PDF-tiedostojen optimointi herättää ristiriitaisia tunteita. Jotkut väittävät, että PDF:illä ei ole mitään arvoa hakukoneoptimointimielessä, toiset taas puhuvat

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

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen

Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä Simo Tauriainen www.ponsse.com 25.8.2011 Ponsse-konserni Ponsse Oyj on tavaralajimenetelmän metsäkoneiden myyntiin, tuotantoon, huoltoon ja

Lisätiedot

Ohjelmien automaattisen verifioinnin reunamailla

Ohjelmien automaattisen verifioinnin reunamailla Ohjelmien automaattisen verifioinnin reunamailla Antti Siirtola Tietotekniikan laitos, Perustieteiden korkeakoulu, Aalto-yliopisto, antti.siirtola@aalto.fi Suomalainen Tiedeakatemia, Nuorten akatemiaklubi,

Lisätiedot

Reiluus. Maxmin-reiluus. Tärkeä näkökohta best effort -tyyppisissä palveluissa. Reiluuden maxmin-määritelmä

Reiluus. Maxmin-reiluus. Tärkeä näkökohta best effort -tyyppisissä palveluissa. Reiluuden maxmin-määritelmä J. Virtamo 38.3141 Teleliikenneteoria / Reiluus 1 Reiluus Maxmin-reiluus Tärkeä näkökohta best effort -tyyppisissä palveluissa kenellekään ei anneta kvantitatiivisia QoS-takuita kaikkien pitää saada palvelua

Lisätiedot

2.2 Neliöjuuri ja sitä koskevat laskusäännöt

2.2 Neliöjuuri ja sitä koskevat laskusäännöt . Neliöjuuri ja sitä koskevat laskusäännöt MÄÄRITELMÄ 3: Lukua b sanotaan luvun a neliöjuureksi, merkitään a b, jos b täyttää kaksi ehtoa: 1o b > 0 o b a Esim.1 Määritä a) 64 b) 0 c) 36 a) Luvun 64 neliöjuuri

Lisätiedot