7. Ytimet. 7.1 Ytimen roolista

Koko: px
Aloita esitys sivulta:

Download "7. Ytimet. 7.1 Ytimen roolista"

Transkriptio

1 Ytimet Ytimet Sulautettujen järjestelmien toteuttaminen erilaisten käyttöjärjestelmän ytimien avulla lienee nykyisin tavanomaisin toteutustekniikka. Seuraavassa esittelemme joitakin käyttöjärjestelmän ytimen toteutukseen ja valintaan liittyviä seikkoja. 7.1 Ytimen roolista Pienten reaaliaikajärjestelmien ytimet toteutetaan usein täysin ilman käyttöjärjestelmän apua. Tällöin sovelluksen toiminnat ja tavallisesti käyttöjärjestelmätasolla toteuttavat tehtävät sekoittuvat toisiinsa, ja ohjelmoijan on huolehdittava itse kaikesta laitteiston ohjauksesta kuten keskeytysten käsittelystä, prosessien hallinnasta (jos niitä edes on) ja muistin hallinnasta. Toisaalta tämä lähestymistapa myös tarjoaa ohjelmoijalle kaikkein parhaat mahdollisuudet hallita järjestelmän resursseja, sillä mukana on harvoin ohjelmakoodia, joka ei olisi ohjelmoijan muokattavissa osana projektia. Yleiskäyttöisten käyttöjärjestelmien puolella käytetään termiä prosessi tarkoittamaan yhtä muistinhallinnan kokonaisuutta, jonka sisällä voi olla prosessia kevyempiä prosessimaisia olioita, säikeitä. Tämä tekniikka siis saman muistiavaruuden käyttö useammalle prosessille tai oikeastaan säikeelle on melko tyypillinen pienen sulautetun järjestelmän toteutusratkaisu. Kyse ei kuitenkaan ole yleensä ohjelmistoteknisestä suunnitteluratkaisusta, vaan yksinkertaisesti siitä, että laitteiston tarjoamat mahdollisuudet ovat siinä määrin rajallisia, että muut ratkaisut ovat käytännössä mahdottomia erilaisista syistä, esimerkiksi siitä, että laitteisto ei tue prosessirajoihin liittyvää muistinhallintaa lainkaan. Yleiskäyttöisen käyttöjärjestelmän ytimen päätehtävät ovat seuraavat:

2 122 Sulautettu ohjelmointi keskeytysten käsittely: mahdollinen ympäristön talletus ja oikean keskeytyskäsittelijän valinta, prosessien hallinta: luominen, lopetus, skedulointi, ajastus ja prosessien keskinäinen kommunikointi, ja oheislaitteiden ohjaus: siirrännän käynnistäminen ja keskeytyksen käsittely. Nämä kaikki on siis tarvittaessa oltava valmis toteuttamaan itse, tai vaihtoehtoisesti järjestelmää on pyrittävä yksinkertaistamaan siinä määrin, että osa toiminnoista muuttuu tarpeettomaksi. Kun ollaan toteuttamassa sulautettuihin järjestelmiin tarkoitettua ydintä, pitää huomioida, että tavoitteena on yleensä rakentaa järjestelmä, jonka toiminnan varmentaminen on olennaista. Tästä syystä suunnittelussa kannattaa pyrkiä suoraviivaisuuteen ja yksinkertaisuuteen, mikä puolestaan saattaa yksinkertaistaa toteutusta joidenkin ominaisuuksien osalta jopa siinä määrin, että osa ominaisuuksista jätetään kokonaan toteuttamatta. Joskus on tehtävä myös erilaisia kompromisseja ennustettavuuden ja joustavuuden välillä. Esimerkiksi voidaan pyrkiä yhdistämään pienytimen reaaliaikaan ja sen skeduloitavuuteen kiinteästi liittyvät ominaisuudet sekä yleiskäyttöisen käyttöjärjestelmän tarjoama dynaamisuus käyttämällä kahta ydintä. Näistä yksinkertaisempi, reaaliaikaominaisuudet takaava ydin, vastaa siitä, että ne tehtävät, joihin liittyy kovia reaaliaikavaatimuksia, tulevat ajallaan suoritettua. Yleiskäyttöinen käyttöjärjestelmä puolestaan suorittaa niitä tehtäviä, joiden suoritus voi olla dynaamista ja jossa ohjelmistosuunnittelulla on enemmän vapausasteita. Koska eri ytimet joutuvat kommunikoimaan, on myös tähän löydettävä sopiva ratkaisu. Reaaliaikaytimen kannalta yleiskäyttöinen käyttöjärjestelmä voi näyttäytyä yhtenä prosessina, esimerkiksi vaikkapa järjestelmän taustaprosessina, jota suoritetaan, kun mitään varsinaista reaaliaikaista tehtävää ei ole suoritettavana. Yleiskäyttöinen käyttöjärjestelmä saattaa puolestaan pitää reaaliaikakäyttöjärjestelmää laiteajurina, joka kuluttaa kohtuuttoman paljon laskentatehoa keskeytyksiensä käsittelyyn. 7.2 Perusydintyypit Pienytimillä on kolme eri päätyyppiä: pollaava (silmukka), keskeytysohjattu, ja

3 Ytimet 123 prosessiydin. Valittava ratkaisu riippuu suorittimesta ja toteutettavan ohjelmiston koosta ja monimutkaisuudesta. Silmukka- ja keskeytysydin ovat yleensä mahdollisia kaikilla suorittimilla, mutta niihin liittyy kiinteästi ohjelmistosuunnittelua tarpeettomasti monimutkaistavia ja rajoittavia tekijöitä. Prosessiydin ei ole mahdollinen kaikissa tapauksissa, sillä aivan pienimmillä suorittimilla ympäristön talletusta ei välttämättä voi tehdä. Syy voi olla esimerkiksi se, että pino-osoittimen arvoa ei voi muuttaa. Sen sijaan prosessiydin tarjoaa yleensä enemmän liikkumavaraa ohjelmistoa suunniteltaessa kuin mitä pollaava ja keskeytysohjattu ydin Pollaavat ytimet Pollaava ydin on yksinkertaisin ydin, joissa tavallisesti ei ole alustuksen lisäksi keskeytyspalveluja lainkaan, tai jos on niin vain yksi keskeytyslähde, esimerkiksi kello, on käytettävissä. Ytimen rakenne on silmukka, joka testaa oheispiirien tilarekistereitä. Mikäli tila on muuttunut, tehdään tilamuutoksessa tarvittava toimenpide. Pollaava ydin on yksinkertainen, kyseessähän on itse asiassa vain ikuinen silmukka. Rakenne ja sen toiminnot ovat yksinkertaisuudessaan seuraavat: int main () { alusta laitteet; while (1) { testaa ja käsittele laite 1; testaa ja käsittele laite 2; testaa ja käsittele laite n; Kun alustus ohjataan aliohjelmaan, joka alustaa pino-osoittimen, voidaan tästä aliohjelmasta kutsua yllä esitetty pääohjelmaa main, jolloin koko ydin onkin sitten jo toteutettu. Niinpä pollaavan ytimen hyviin puoliin kuuluu kiistatta se, että se on yksinkertainen ja nopea tehdä. Rakenne sopii pieniin sovelluksiin, ja keskeytysten puutteen takia siinä ei voi esiintyä poissulkemisongelmaa. Täydellinen tämä ratkaisu ei ole. Ongelmia tuottaa mm se, että kaikki toiminnot on ehdittävä tehdä silmukan kierroksen aikana, mikä rajoittaa ohjelmien kokoa. Tämä vaatimus aiheuttaa myös sen, että järjestelmä on mitoitettava pahimman mahdollisen tilanteen mukaan,

4 124 Sulautettu ohjelmointi void palvele() { static int tilamuuttuja = 0; switch (tilamuuttuja) { case 0: if (laitteella töitä) { aloita työt tilamuuttuja = 1; break; case 1: jatka käsittelyä; tilamuuttuja = 2; break; case 2: tee työt loppuun; tilamuuttuja = 0; break; default: virhe; Kuva 7.1 Paloissa tapahtuva laskenta. Huomaa määre static, joka tarkoittaa sitä, että muuttujaa ei alusteta kuin kerran ja että sen arvo ei muutu kutsukertojen välillä. eli sen, että jokainen oheislaite tarvitsee palvelua saman kierroksen aikana. Tämä johtaa siihen, että tavallisella kierroksella on luppoaikaa runsaasti. Mikäli oheislaitteen palvelu kestää kauan, voidaan se jakaa osiin. Eri ytimen kierroksilla voidaan laskennan eteneminen tunnistaa tilamuuttujasta. Tämä ratkaisu edellyttää tietenkin sitä, että sama laite ei kaipaa palvelua kovin usein muuten sen palvelemiseen ei voida käyttää monta kierrosta. Ohjelmassa 7.1 on hahmoteltu yksinkertainen, kolmessa eri palassa suoritettavan palvelun rakenne. Ratkaisun ydin on luoda tilakone (kuvassa muuttuja tilamuuttuja), jonka tilasiirtymiä suoritettavat toiminnot ovat. Tilakone ilmaisee tilan, johon asti suoritus on edennyt, minkä perusteella voidaan jatkaa toimintaa oikeasta kohdasta. Tässä tavassa on olennaista huomata, että laitteen käsittely, siis kaikki laitteistotason ohjaukset, ja tiedon käsittely tehdään yhtä aikaa. Mikäli kumpikaan ei tarvitse muita laitteita, rakenne on mahdollista säilyttää suhteellisen selkeänä. Ongelmia kuitenkin syntyy heti, kun laskennan tulos pitää toimittaa toiselle laitteelle, sillä kohdelaitteen toimintoja ohjaa sen oma ohjausohjelma. Koska järjestelmässä ei ole viestinvälitystä, tarkoittaa tämä käytännössä sitä, että tiedon tuottanut

5 Ytimet 125 ohjelma kirjoittaa tulostiedot suoraan kohdelaitteen ohjausohjelman muistiin. Koska järjestelmä on niin yksinkertainen, että keskeytyksiä ei ole, tämä ei onneksi johda poissulkemisongelmiin, mutta sen sijaan virheiden jäljittäminen tai ohjelmalogiikan seuraaminen voivat osoittautua monimutkaisiksi. Esimerkiksi tämäntyyppisestä laitteesta voisi käydä lämpömittari, joka mittaa sekä sisä- että ulkoilman lämpötilaa. Toiminta voisi tällöin olla seuraavanlainen: alusta laitteet; while (1) { lue sisälämpötila ja laita se muistiin; lue ulkolämpötila ja laita se muistiin; näytä lämpötilat jos min-näppäin alhaalla, näytä minimit, jos max-näppäin alhaalla, näytä maksimit muuten tuorein arvo; lue nollauspainike ja nollaa minimi- ja maksitiedot, jos painettu; Keskeytysohjatut ytimet Keskeytysohjatun ytimen rakenne on ikuinen odotussilmukka, jonka keskeytyspalvelut keskeyttävät ajoittain. Ikuisen odotuksen tilalla voi olla myös jotain hyödyllistä tehtävää ja usein onkin, joten tätä rakennetta kutsutaan myös taustaprosessiytimeksi, vaikka varsinaista prosessikäsitettä ei järjestelmässä olekaan. Järjestelmän rakenne on nyt seuraavaa muistuttava int main () { alusta laitteet; while (1) { taustatoiminnon tekemistä; keskeytys 1 () { laitteen palvelu; tiedon käsittely; keskeytys n () { laitteen palvelu; tiedon käsittely;

6 126 Sulautettu ohjelmointi Nyt keskeytykset tulee sitoa vastaaviin keskeytyspalveluihin. Tämä tapahtuu aiemmin esitetyllä tavalla joko laitteistolla tai ohjelmistolla. Pääohjelma sidotaan edelleen reset-toimintoon. Kuten pollaavakin ydin, on myös keskeytysohjattu ydin nopea ja helppo kirjoittaa tarvittaessa, sillä tämäkään järjestelmä ei ole kovin monimutkainen. Tässäkään ytimessä ei esiinny poissulkemisongelmaa laitteita käsittelevien ohjelmien kesken, mikäli keskeytyspalvelut aina kieltävät keskeytykset. Taustatoiminnon ja keskeytysten välille voi syntyä kriittinen alue saman muuttujan käsittelystä. Poissulkemisen voi hoitaa kieltämällä hetkeksi keskeytykset taustatoiminnon suorittaessa kriittistä aluetta. Tätä ei pidä tehdä pitkäksi aikaa kerrallaan, sillä muuten koko järjestelmän toimivuus on uhattuna. Mikäli eri prioriteettiset keskeytykset ovat mahdollisia, tulee ohjelmoinnissa huomioida, että suuriprioriteettinen keskeytys pystyy keskeyttämään matalaprioriteettiset keskeytykset. Tällöin mahdollinen poissulkeminen on otettava huomioon myös keskeytysten välillä. Tämä voi osoittautua vaikeaksi käytännössä esimerkiksi käänteisprioriteettiongelman vuoksi. Keskeytyspalveluissa ei voi käyttää kuvassa 7.1 esitettyä ohjelmaa, koska palvelurutiinia ei kutsuta kuin keskeytyksen tullessa. Sen sijaan taustaprosessissa voidaan käyttää vastaavaa tekniikkaa, jossa tilamuuttujilla ohjataan toimintoja. Tosin tilamuutokset eivät aina johdu laskennan etenemisestä kuten kuvassa 7.1, vaan keskeytyspalvelut voivat muuttaa suoraan tilamuuttujia, ja vaikuttaa näin taustatoiminnon käyttäytymiseen. Vastaavasti taustatoiminto voi käsitellä suoraan laiterekistereitä ja käynnistää tiedonsiirto-operaatioita. Tästä kaikesta seuraa usein se, että sovelluksen logiikka on hajautettuna keskeytysten ja taustaprosessin välillä. Tämä rikkoo ohjelman sisäisen rakenteen, ja kokonaisuus voi pahimmillaan olla hyvin sekava. Edellisen kohdan lämpömittariesimerkkiin sopii hyvin pollaava ydin, koska lämpötilaa mittaava laite (A/D-muunnin) ei tavallisesti ole keskeyttävä. Näytölle kirjoitus ei myöskään ole tavallisesti keskeyttävä, joten lämpömittaria ei kannattane esittää keskeytysohjatulla ytimellä. Keskeytysohjattuna järjestelmänä toimii tyypillisesti jokin ulkoinen oheislaite, vaikkapa kirjoitin. Kirjoittimille tulee viestejä sarjatai rinnakkaisliityntälinjaa pitkin, ja jokainen merkki aiheuttaa keskeytyksen. Merkki siirretään palveltavien merkkien jonoon, ja taustaprosessi käsittelee merkit merkkiähän ei aina tulosteta, vaan se voi olla osa ohjauskoodia. Kun taustaprosessi on saanut tulkattua koko rivin, se aloittaa rivin kirjoittamisen. Rivin kirjoittamisen aikana voidaan kellokeskeytyksillä huolehtia siitä, että kirjoittaminen edistyy oikeaa

7 Ytimet 127 int main() { alusta laitteet(); while (1) { if (uusia merkkejä) { tulkitse niin pitkälle kuin mahdollista; if (kirjoitettava rivi valmis) { aloita rivin kirjoitus sallimalla kellokeskeytykset; void sarjaliitynta() { siirrä merkki käsiteltävien puskuriin; void kellokeskeytys() { kirjoita seuraava merkki; siirrä kirjoituspäätä (mahdollisesti vaihda riviä); Kuva 7.2 Keskeytysohjattu yksinkertainen ohjelma. vauhtia, eli merkin kirjoittamisen jälkeen odotetaan hetki kirjoituspään siirtymistä. Samalla luetaan jo seuraavaa riviä koneelle, ja tulkataan sitä. Pseudokoodina ohjelma näyttäisi siis kuvan 7.2 mukaiselta. Kuvan esimerkki on esitetty todella pelkistetyssä muodossa, mutta antaa hahmon siitä, miten järjestelmä voisi toimia. Yksityiskohtia, joita koodista ei näe on useita: Koska kuvattu laite tulkitsee rivin kerrallaan, se voi kirjoittaa joka toisen rivin vasemmalta oikealle ja joka toisen oikealta vasemmalle. Myöskään kaikki liikkeet eivät välttämättä ole yhtä nopeita, vaan niiden vaatima aika voi vaihdella melkoisesti (rivinvaihto, merkki eteenpäin, telanpalautus) Prosessiytimet Prosessiydin on yksinkertaisenakin edellä esitettyjä ytimiä selvästi monimutkaisempi. Itse sovellus on toteutettu prosesseissa, ja keskeytyspalvelut (laiteajurit) huolehtivat tiedonsiirrosta fyysisen laitteen kanssa. Prosessiydin soveltuu melko pieniinkin ongelmiin, joskin aivan pienimmissä se on turhan raskas. Ylärajaa sovelluksen koolle ei ole, sillä kaikki yleiskäyttöiset käyttöjärjestelmät ovat prosessiytimiä. Edellisiin ytimiin verrattuna suurin rakenteellinen ero on laitteiden ohjauksen ja sovelluksen logiikan erottaminen toisistaan. Tämä

8 128 Sulautettu ohjelmointi selkeyttää ohjelmaa ja mahdollistaa laitteita ohjaavien ajureiden käytön muissakin sovelluksissa. Prosessikäsite antaa siten mahdollisuuden käsitellä tietoa hyvinkin monipuolisilla algoritmeilla, jolloin käyttöjärjestelmän tietorakenteet toimivat laitteilta tulevien tietojen puskureina. Näin laite voidaan mitoittaa keskimääräisen kuorman mukaan huippukuorman asemesta. Lisäksi loogisia toimintoja voi olla ajossa useita toisistaan (lähes) täysin riippumatta; vain niiden keskinäisen prioriteetin avulla päätetään, mille niistä annetaan ensisijaisesti aikaa. Erilaiset poissulkemistilanteet kuitenkin saattavat mutkistaa suoritusta. Kaikesta yllä olevasta hyvästä saadaan myös maksaa: Ydin on monimutkaisempi kuin muut vaihtoehdot ja tarvitsee myös enemmän muistia. Lisäksi rinnakkaisuuden ongelmat tulevat voimakkaasti esiin, erityisesti poissulkeminen. Myös reaaliaikakäyttäytymisen laskeminen etukäteen tulee vaikeammaksi. Kaikki nämä ominaisuudet ovat luonteeltaan sellaisia, että ne vaikeuttavat oikean toiminnan varmentamista ja mahdollisten ongelmatilanteiden selvittämistä. Toisaalta prosessiytimen tarjoamat edut ovat niin merkittäviä, että jo varsin yksinkertaisten järjestelmien toteuttamisessa sellaisen käyttö on usein perusteltua. Prosessiytimet voidaan edelleen jakaa kahteen kategoriaan sillä perusteella, miten eri oheislaitteita hallitaan. Kategoriat ovat monoliittinen ja mikroydin. Monoliittisessa ytimessä oikeastaan kaikki käyttöjärjestelmän vastuulle vähänkin ajateltavat toiminnot on sisällytetty ytimeen, kun taas mikroytimen tapauksessa tavoitteena on siirtää suuri osa toiminnoista omiin prosesseihinsa, ja pitää ytimessä vain olennaisimmat tehtävät, kuten prosessinhallinta ja skedulointi. Koska kummallakin ydintyypillä on omat vahvuutensa monoliittisessa ytimessä voidaan esimerkiksi jakaa tietoa eri toimintojen välillä melko helposti, kun taas mikroydin tarjoaa paremman vikasietoisuuden estämällä tilanne, jossa yksi vikaantunut toiminto rikkoo myös kaikki muut käyttöjärjestelmän osat monet käytännön toteutukset sisältävät piirteitä molemman tyyppisistä ytimistä. Prosessiytimessä on tavallisesti yksi prosessi, joka ei tee mitään. Tämän prosessin tehtävä on yksinkertaistaa skeduleria, ja sillä on pienin mahdollinen prioriteetti. Usein prosessia käytetään myös keräämään tietoa siitä, mikä järjestelmän tila on, kun prosessi saa suoritusvuoron. Tällöin on mahdollista kerätä tietoa järjestelmän toiminnasta tavalla, joka ei häiritse varsinaista toimintaa. Ongelmaksi saattaa muodostua yhtäältä se, että tietoa ei ole saatavissa silloin, kun sitä eniten tarvittaisiin, esimerkiksi ylikuormituksen yhteydessä, ja toisaalta se, että taustap-

9 Ytimet 129 rosessin toiminnot monimutkaistuvat, ja sillä alkaa olla todellinen rooli järjestelmän kokonaisuuden kannalta. Tällöin voidaan luoda toinen, prioriteetiltaan vähän korkeampi prosessi, joka ottaa hoitaakseen joitakin tehtäviä taustaprosessilta. Näin järjestelmän kokonaisrakenne muistuttaa seuraavaa: int main () { alusta laitteet; luo prosessit; while (1) { odota, että joku keskeyttää niin sanottu idle-prosessi prosessi 1 { prosessin 1 käskyt; prosessi n { prosessin n käskyt; Järjestelmässä on yhä keskeytysrutiinit, mutta niiden tehtävä on suorittaa siirräntä ja ilmoittaa siirräntää odottavalle prosessille siirrännän päättymisestä. Oikeastaan ytimessäkään ei ole mitään loogiseen toimintaan liittyvää, joten jäljelle jäävät vain prosessit ja niihin liittyvä toiminnallisuus Yhteenveto perusytimistä Eri ratkaisut toteuttavat saman ongelman kovin eri tavalla. Pollaavassa ratkaisussa ytimen toiminnot ja itse sovelluksen logiikka ovat kietoutuneet toisiinsa siten, että niitä ei voi erottaa toisistaan. Pollaavan ytimen laitteistotarpeet ovat yksinkertaisia: se ei tarvitse suorittimen ja välittömästi tarvittavien oheislaitteiden lisäksi kuin muistia. Tästä yksinkertaisuudesta maksetaan ohjelmien huonolla rakenteella. Keskeytysohjatussa ratkaisussa on paljon pollaavan ytimen piirteitä. Suurin ero on toiminnan perusideassa, mutta sekä hyvät että huonot puolet muistuttavat toisiaan, eli laitteistoratkaisu on yksinkertainen joskin vaatii keskeytyslinjojen kytkennän mutta ohjelmat ovat rakenteellisesti heikkoja. Prosessiydin vaatii mahdollisuuden ympäristön tallettamiseen ja vaihtamiseen verrattuna keskeyttävään ytimeen. Tämän lisäksi voidaan tarvita kellolaite. Varjopuolena on, että monen prosessin järjestelmässä alkaa laitteistokin monimutkaistua: käyttöön voi tulla DMA, muistin-

10 130 Sulautettu ohjelmointi hallintajärjestelmä ja niin edelleen. Koska jokaisella prosessilla tulee olla oma muistinsa ja erityisesti pinonsa, on muistin tarve prosessiytimellä myös suurempi kuin keskeyttävällä ytimellä. Ohjelmistopuolella ydin monimutkaistuu selvästi. Erityisesti ytimen toiminnot ja sovellus erotetaan toisistaan. Mikäli ydin on saatavissa valmiina, on itse sovellus huomattavasti helpompi kirjoittaa kuin edellisissä vaihtoehdoissa. 7.3 Valmiina saatavat ytimet Valmiina saatavat ytimet ovat käytännössä kaikki edellä mainittuja prosessiytimiä. Tyypillisesti sulautettuihin järjestelmiin saatavat ytimet ovat reaaliaikaisia. Niille on tyypillistä vaan ei välttämätöntä: Pieni koko. Prioriteetteihin perustuva irrottava skedulointi. Niissä ajetaan vain valmiiksi testattuja ohjelmia, joten suojauksia ei välttämättä tarvita, mikä nopeuttaa ympäristön vaihtoa ja prosessien välistä kommunikointia. Sovellusohjelmat ovat usein etuoikeutetussa tilassa, joten käyttöjärjestelmäkutsut, jotka eivät vaihda prosessia, voidaan toteuttaa aliohjelmakutsuilla ohjelmoitujen keskeytysten asemesta. Mikroydintyyppinen ratkaisu, jossa ydin sisältää vain prosessien hallinnan ja kommunikoinnin tarvitsemat palvelut. Kunkin laitteen ohjauksesta huolehtii jokin sovellusprosessi. Kaupallisten ytimien tarjoamat palvelut vaihtelevat hyvin yksinkertaisista (esimerkiksi C Executive, joka on lähinnä aliohjelmakirjasto) POSIXin (a portable operating system interface) mukaiseen käyttöjärjestelmään (muun muassa LynxOs, PDOS, psos+ ja UniFLEX). Skedulointimenetelmiä on valittavana oikeastaan vain kiinteäprioriteettinen irrottava skedulointi, joskin Linuxin mukana on tullut mukaan myös perinteinen vaihtuvaprioriteettinen Unix-skedulointi. Aiemmin ytimet olivat pieniä ja reaaliaikaisia, lähes askeettisia. Kannettaviin kuluttajalaitteisiin on kuitenkin saatavilla ytimiä, jotka tarjoavat palveluja käyttöliittymän tekemiseen ja jättävät perinteisen reaaliaikaisuuden sivuosaan. Esimerkkejä tällaisista ytimistä ovat Symbian ja jotkut Linux-pohjaiset toteutukset (lähinnä Android ja Meego).

11 Ytimet Skaalattavuus Monet ytimet ovat skaalattavia. Pienimmässä kokoonpanossaan ne ovat vain muutamia kilotavuja, ja suurimmillaan ne ovat reaaliaikapiirteillä höystettyjä versioita Unixista. Skaalattavuus on edullista, jos yritys tekee hyvin erilaisia sovelluksia, koska henkilökunnan ei tarvitse opetella erilaisia ympäristöjä projektin vaihtuessa. Skaalattavuus voi kuitenkin johtaa tehottomuuteen, kun ytimessä on tarkistuksia sen varalle, onko jokin ominaisuus mukana vai ei. Ratkaisuna voidaan ajatella sitä, että räätälöinti tehdään kokonaan osana kehitystyötä, jolloin käytettävä ydin kyetään optimoimaan toteutettavan järjestelmän tarpeita varten. Samaten muistinkulutus vaihtelee merkittävästi sen mukaan, miten kehittynyt ydin on kyseessä lukuunottamatta erityisesti alhainen muistinkulutus mielessä kehitettyjä järjestelmiä Laitteistovalikoima Ytimet voidaan luokitella myös sen mukaan, miten suurta joukkoa suorittimia ne tukevat. Joitakin ytimiä saa käytännöllisesti katsoen mille suorittimelle tahansa, jolloin ydin ei rajoita suoritinvalikoimaa. Toisaalta jotkin suorittimet ovat sellaisia, että niihin saa lähes minkä ytimen tahansa esimerkiksi Intelin 80x86 ja Pentium muodostavat tällaisen suoritinperheen. Mobiililaitteiden puolella vastaavassa asemassa on ARM-suoritin, jota käytetään monissa mobiililaitteissa. Varsinaista suoritinta tärkeämmäksi onkin varsinkin monimutkaisimpien laitteiden tapauksessa nousemassa se, minkälaista tukea käyttöjärjestelmä ja laitteisto yhdessä tarjoavat sovelluskehitykselle. Tällöin esimerkiksi mahdollisuus tukea laitteistolla kiihdytettyä grafiikkaa voi olla merkittävä etu, sillä tällöin sovelluksista voidaan tehdä muita vastaavia ympäristöjä näyttävämpiä. Samaan tapaan myös muut kirjastot, joiden avustaminen laitteistolla on mahdollista, voivat vaikuttaa laitteiston valintaan. Suorittimien ja muun laitteiston tiukempi nivoutuminen onkin johtanut siihen, että useita suorittimia sisältäviä järjestelmiä on saatavilla. Esimerkkinä mainittakoon Texas Instrumentsin OMAP3, joka sisältää ARM-suorittimen, 2D/3D-grafiikkakiihdyttimen, kuvankäsittelyyn erikoistuneen signaalisuorittimen, yhden lisäkiihdyttimen, sekä suuren määrän erilaisia liityntöjä.

12 132 Sulautettu ohjelmointi Kommunikointi- ja poissulkemismenetelmät Yleisimmät prosessien väliseen kommunikointiin tarkoitetut mekanismit ovat semaforit ja sanomat. Vaikka vain toisen olemassaolo on lähes välttämätöntä, monista ytimistä löytyvät molemmat. Myös signaalit, jotka eivät yleensä välitä muuta tietoa kuin tapahtumanumeron, ovat suhteellisen tavallisia. Kaikkien näiden käyttö on lähes aina yksinkertaista C- ja C++-ympäristöissä. Korkeamman tason mekanismit kuten monitorit ja Adan kohtaamismekanismi ovat harvinaisia. Ne tosin ovat enemmänkin ohjelmointikielen kuin ytimen rakenteita, mutta tarvitsevat ytimen tukea tehokkaalle toteutukselle. Lisäksi näitä rutiineja ei yleensä käytetä C- tai C++-kielistä, joilla monet sulautetut järjestelmät on toteutettu. Sen sijaan monitorit ovat käytössä Javassa, missä ne on tyypillisesti toteutettu osana Java-virtuaalikonetta, ei käyttöjärjestelmän palveluina suoraan. Tietysti virtuaalikone voi periaatteessa hyödyntää käyttöjärjestelmän palveluita, mutta siirrettävyyssyistä näin ei yleensä tehdä. Yhä suurempi osuus sulautetuista järjestelmistä liitetään myös verkkoon. Saatavissa on muun muassa digitaalikameroita, jotka voidaan liittää suoraan verkkoon. Aivan pienimmissä ytimissä ei ole mukana verkko-ominaisuuksia, mutta vähänkin monimutkaisemmissa käyttöjärjestelmissä hyvin yleisiä ovat TCP/IP- ja UDP/IP -perheiden protokollat. Vaikka jopa NFS (lähinnä asiakaspää) ja X-ikkunointi ovat perinteisesti olleet jonkin verran käytettyjä, nykyään monessa ympäristössä yleisemmin mukana on myös web-palvelin. Niinpä vaikkapa esimerkkinä mainittu digitaalikamera pystyy vastaamaan selainten kyselyihin ilman edustakonettakin Kehitysympäristö Kehitysympäristö tarkoittaa niitä laitteita ja ohjelmistoja, joilla ytimelle tehdään ohjelmat. Ytimien toteutuskielenä on useimmiten C- tai konekieli. Nämä ovat myös yleisesti saatavissa olevia kieliä sovellusten tekemiseen näihin ympäristöihin. Muita käytettävissä olevia kieliä ovat muun muassa PL/M, Ada ja Fortran, mutta prosentuaalisesti näiden käyttö on vähäisiä. Oliokielistä lähinnä C++ ja Java tulevat kysymykseen, mutta niiden soveltuvuus sulautettuun ohjelmointiin ei aina ole selvää. Java on alunperin tarkoitettukin sulautettuun järjestelmään, mutta käytännössä sen sovelluskohteet ovat olleet muualla. Myös C++ voi olla su-

13 Ytimet 133 lautetussa käytössä aika vaarallinen, ellei ongelmallisimpia olio-ominaisuuksia jätetä käyttämättä. Yleensä sulautetuissa järjestelmissä yleisin toteutuskieli on C (noin 80 %), toisena on symbolinen konekieli (n. 10 %) ja loppu 10 prosenttia jakaantuu C++:n, Javan ja muiden ohjelmointikielten kesken. Monille ytimille tehdään ohjelmat eri koneella kuin missä ohjelmistoa tullaan ajamaan (ristikehitys). Suurehkoille ytimille on mahdollista kohdekehitys, jossa tekoympäristö ja käyttöympäristö ovat samat. Kohdekehitys ei välttämättä ole ristikehitystä parempi vaihtoehto, koska kehitysympäristön ja kohdeympäristön vaatimukset voivat erota paljon toisistaan. Kehitysympäristön pitää tukea ohjelmointityötä, kohdeympäristössä taas reaaliaikaominaisuudet ja pieni koko ovat usein tärkeämpiä. Varsinaisen kehitystyön kannalta tärkeää on myös käytettyjen työkalujen hyvä laatu ja laaja käyttö, mikäli suinkin mahdollista. Monet sulautettujen järjestelmien tekoon tarkoitetut työkalut on tarkoitettu hyvin tarkkaan rajattuun ympäristöön, ja joskus voi olla niin, että samaa ympäristöä ei käytä kukaan toinen kehittäjä koko maailmassa. Tällaisessa tilanteessa esimerkiksi kääntäjän versiosta toiseen siirtyminen voi aiheuttaa merkittäviä ongelmia kehitystyölle, sillä uudessa versiossa kääntäjästä osa vanhoista, tunnetuista ongelmista on ehkä korjattu, mutta mukana saattaa olla uusia, kehittäjälle tuntemattomia ongelmia. Tästä syystä kovin erikoinen työympäristö kannattaa mahdollisuuksien mukaan jäädyttää joksikin sopivaksi ajaksi, ja tarvittaessa vaikka ostaa kehitysympäristön kehittäjältä tukipalveluita, jotta mahdollisesti kehitystyössä vastaan tulevat kriittiset ongelmat saadaan ratkaistua mahdollisimman nopeasti ja vaivattomasti. Sen sijaan laajasti käytössä olevien ympäristöjen kanssa ongelmia on perinteisesti ollut vähemmän, sillä laaja käyttäjäkunta auttaa löytämään (ja joskus esimerkiksi avoimen lähdekoodin kääntäjien tapauksessa myös ratkaisemaan) ongelmat nopeammin Kustannukset Ytimeen liittyvät kustannukset voidaan jakaa kolmeen kategoriaan: laitteiston aiheuttamat kustannukset, ytimen itsensä aiheuttamat kustannukset, ja kehitys- ja testausympäristön aiheuttamat kustannukset. Varsinkin massalevitykseen tarkoitettujen laitteiden tapauksessa tärkeä kustannustekijä on tietenkin suorittimen hinta. Erityisesti, jos lämpötila-alue on hyvin vaativa ( C), voivat suorittimien hinnat

14 134 Sulautettu ohjelmointi nousta korkealle. Pienimmät suorittimet maksavat noin 10 euroa ja kalleimmat noin 500 euroa, jos ei oteta huomioon kaikkein erikoistuneimpia laitteita. Hintaan vaikuttavat monet tekijät, kuten tehokkuus, virrankulutus, ja valmistusmäärä, sillä suurissa erissä hinnat ovat neuvottelukysymys. Suoritinvalikoimaa ei myöskään kannata laajentaa yhden tuotteen takia, joten yrityksen muissa tuotteissa käytetty suoritin tai suoritinperhe vaikuttaa valintaan. Tämä pyrkimys pitää erilaisten suorittimien määrä pienenä voi johtaa siihen, että joudutaan tekemään töitä huonosti asiaan sopivalla suorittimella. Ytimen tapauksessa oma toteutus on yleensä mahdollinen vaihtoehto, mutta se vaatii jonkin verran alkuinvestointia. Siksi ainakin aivan pienten tuotantoerien tapauksessa kannattaa usein käyttää jotain valmista ydintä. Sen sijaan massatuotteelle voi ongelmaksi muodostua lisenssimaksu, joka on maksettava jokaisesta reaaliaikaytimen sisältävästä tuotteesta. Vaikka tämäkään ei olisi kovin suuri yhtä konetta kohti, niin tuontantosarjojen ollessa satoja tuhansia vuodessa voi hyvinkin tulla halvemmaksi tehdä itse oma ydin tai käyttää jotain avoimen lähdekoodin ratkaisua. Kehitysympäristön suhteen tilanne on usein yksinkertainen, sillä niiden hinta ei yleensä ole kovin korkea ja silloin kun hinta on korkea, kyseessä saattaa olla ainoa mahdollinen tapa tuottaa ohjelmia valitulle laitteistolle ja ytimelle. Vaikka hintaa jonkin verran kertyisikin, se ei silti välttämättä muodostu ongelmaksi, koska kyseessä on yleensä kertaluontoinen maksu. 7.4 Esimerkki: Linux-ydin Vaikka Linux-ydin ehkä useimmiten yhdistetäänkin pöytäkoneen käyttöjärjestelmän ytimeen, on se yhä yleisemmin käytössä myös sulautetuissa ympäristössä. Koska ydin on alunperin rakennettu PC-käyttöön, sitä voidaan pitää jokseenkin raskaana sulautettuun ympäristöön, mutta toisaalta ytimen moduulaarinen rakenne mahdollistaa ytimen räätälöinnin melko helposti. Linux-ytimen rakenne on esitetty kuvassa 7.3. Sen tärkeimmät käsitteet ovat varsinainen ydin ja siihen ladattavat lisäosat. Varsinainen ydin sisältää yleensä seuraavat toiminnat: suorittimen ja välimuistijärjestelmän hallinta muistinhallinta prosessien hallinta liityntä tiedostojärjestelmiin,

15 Ytimet 135 Laiteajuri 1 Suorittimen ja välimuistin hallinta Laiteajuri 2 Muistinhallinta Laiteajuri 3 Laiteajuri 4 Prosessien hallinta Tiedostojärjestelmärajapinta Ytimen tilatiedot Tietoliikenneprotokollat Laajennos 1 Laajennos 2 Laite- ja I/O-rajapinnat Tietoturvaominaisuudet Kuva 7.3 Linux-ytimen osat tietoliikenneprotokollat laite- ja I/O-rajapinnat tietoturvaominaisuudet ytimen tilatieto. Ytimeen ladattavia lisäosia puolestaan ovat laiteajurit ja erilaiset ytimen laajennokset ja lisämoduulit. Räätälöimällä ydintä sopivasti voidaan rakentaa juuri kohdejärjestelmään sopiva ydin. Esimerkiksi jos ollaan rakentamassa Linuxpohjaista järjestelmää, jossa tietoliikenneyhteyksiä ei lainkaan käytetä, lienee lopputuloksen kannalta turhaa säilyttää tietoliikenneprotokollat toteuttava moduuli ytimessä olettaen, että siitä ei ole hyötyä kehitysvaiheessa, minkä seikan merkitystä ei tule väheksyä. Toinen syy säilyttää tietoliikenneprotokolliin liittyvä moduuli on, että käytettävät sovellukset luottavat siihen, että tietoliikenneominaisuudet ovat aina käytettävissä vähintään degeneroituneessa muodossa, jolloin niiden

16 136 Sulautettu ohjelmointi poistaminen voi johtaa suureen määrään toteutustyötä sovellusten yhteydessä. Kehitysympäristönä Linuxin yhteydessä käytetään melko yleisesti erilaisia virtualisoituja kehitysympäristöjä. Esimerkkinä voidaan mainita vaikkapa Nokian Maemo-ympäristön virtualisointiin käytetty Scratchbox ( joka mahdollistaa Maemoympäristöön tarkoitettujen ohjelmien kääntämisen ympäristössä, joka muistuttaa laitetta itseään. Erojakin kuitenkin on, kuten esimerkiksi käytettävissä oleva muistin määrä, joka on yleensä laitteessa huomattavasti pienempi kuin virtualisoidussa ympäristössä. Toinen joskus ongelmia aiheuttava ero on käytettävissä olevan tiedostojärjestelmän koko: virtualisoidussa ympäristössä tiedostojärjestelmän täyttyminen on harvoin ongelma, kun taas sulautetussa ympäristössä tähän ongelmaan voi törmätä helposti. Lisäksi suorituskyky sekä käyttökokemus kokonaisuudessaan ovat usein melko tavalla erilaisia virtualisoidussa ja kohdeympäristössä. 7.5 Yhteenveto Ytimien erot kulminoituvat siihen, miten ytimen ja sovelluksen toiminnot erotetaan: 1. Pollava ydin: Ydin ja sovelluslogiikka kietoutuneet toisiinsa; ohjausrakenne ikuinen silmukka. 2. Keskeyttävä ydin: Ydin ja sovelluslogiikka kietoutuneet toisiinsa; ohjausrakenne keskeytykset. 3. Prosessiydin: Ydin ja sovelluslogiikka erotettu toisistaan; laiteohjaus ytimessä, sovelluslogiikka prosesseissa. Prosessiydin voi olla monoliittinen tai mikroydin; monoliittisessa ytimessä lähes kaikki käyttöjärjestelmän mahdolliset toiminnot on upotettu ytimeen, kun taas mikroytimessä oheistoiminnot kuten esimerkiksi tiedostojärjestelmä pyritään toteuttamaan omina prosesseinaan. Useita valmiina saatavia ytimiä, joiden koko ja ominaisuudet vaihtelevat. Lähes aina kyse kuitenkin prosessiytimestä, johon on sisällytetty tukea reaaliaikaominaisuuksien toteuttamista varten.

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

Arto Salminen

Arto Salminen 7. Luento: Ytimet Arto Salminen arto.salminen@tut.fi Agenda Johdanto Perusydintyypit Pollaavat Keskeyttävät Prosessiydin Esimerkki: Linux-ydin Valmiina saatavista ytimistä Lyhyesti virtualisoinnista Yhteenveto

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

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

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

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

OHJ-4301 Sulautettu Ohjelmointi

OHJ-4301 Sulautettu Ohjelmointi OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) /~sulo/) 5op, to 12-14, 14, TB 109 Tommi Mikkonen, tommi.mikkonen@tut.fi Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti

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

7. Luento: Ytimet. Tommi Mikkonen,

7. Luento: Ytimet. Tommi Mikkonen, 7. Luento: Ytimet Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Perusydintyypit Pollaavat Keskeyttävät Prosessiydin Valmiina saatavista ytimistä Esimerkki: Linux-ydin Yhteenveto Johdanto Käyttöjärjestelmän

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

11. Javan toistorakenteet 11.1

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

Lisätiedot

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

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

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

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

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut järjestelmät Luku 2 Sivu 1 (??) Kiertokysely Perinteiset ohjelmointikielet kuten C tukevat hyvin sekventiaalista ohjelmointia, jossa herätteisiin reagointi on helppoa toteuttaa pollauksella

Lisätiedot

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

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

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta? OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, 14, TB 109 Arto Salminen, arto.salminen@tut.fi Agenda Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali

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

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

Lisätiedot

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä? Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää

Lisätiedot

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi 17.5.2006 1/5 Oppimistavoitteet kurssilla Rinnakkaisohjelmointi Rinnakkaisuus ja rinnakkaisuuden soveltaminen tietojenkäsittelyjärjestelmissä Kurssin Tietokoneen toiminta perusteella ymmärtää, miten ohjelman

Lisätiedot

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

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

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

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Käyttöjärjestelmät 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 Kurssin sisältö Johdanto, historiaa

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

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

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

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest). 1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.

Lisätiedot

Älypuhelimet. Sisällysluettelo

Älypuhelimet. Sisällysluettelo Älypuhelimet Jussi Huhtala Sisällysluettelo Älypuhelimen määritelmä Historia Laitteistoarkkitehtuuri Käyttöjörjestelmät Android Symbian ios Yhteenveto 1 Älypuhelin Puhelin joka sisältää normaalit puhelimen

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

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2009 p.1/15 HSMT (Java-kielellä) Aineopintotasoinen kurssi, 5op. Luennot:

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

Arto Salminen,

Arto Salminen, 4. Luento: Prosessit ja säikeet Arto Salminen, arto.salminen@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 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

811120P Diskreetit rakenteet

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

Lisätiedot

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

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

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

811120P Diskreetit rakenteet

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

Lisätiedot

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi Business is evolving, you should too. MeeGo ulkona vai myöhässä? Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi Helsinki, Tampere, Turku, Stockholm, Göteborg www.tieturi.fi MeeGo YALMP (Yet

Lisätiedot

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013 Virtualisointi Pertti Pennanen DOKUMENTTI 1 (5) SISÄLLYSLUETTELO Virtualisointi... 2 Virtualisointiohjelmia... 2 Virtualisointitapoja... 2 Verkkovirtualisointi... 2 Pertti Pennanen DOKUMENTTI 2 (5) Virtualisointi

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

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

OHJELMISTOKEHITYS -suuntautumisvaihtoehto OHJELMISTOKEHITYS -suuntautumisvaihtoehto Suuntautumisvaihtoehdon esittely 1. vuoden opiskelijoille Kari Laitinen www.oamk.fi/~karil/opetus.html Ohjelmistokehitys -opintosuunnan valitsevista henkilöistä

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden

Lisätiedot

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

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

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä Jakso 8 Ohjelman toteutus järjestelmässä Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla kertaa

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä Linux 00 Keskeiset piirteet Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Mikä Linux on? 2. Kuinka Linux syntyi ja kehittyy? 3. Mitkä ovat Linuxin vahvuudet? 2 1 Linux on

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux rakenne Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux ydin Ytimen (kernel) päätehtävä on tarjota rajapinta

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin Ohjelmistot tietokonejärjestelmissä Jaana Holvikivi Ohjelmistojen tehtävät Sovellusohjelmat tekstinkäsittely ja muut toimistosovellukset kirjanpito, tuotannonohjaus selaimet, mediaohjelmat

Lisätiedot

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

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

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä Jakso 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit Jakso 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009

Tähtitieteen käytännön menetelmiä Kevät 2009 Tähtitieteen käytännön menetelmiä Kevät 2009 2009-01-12 Yleistä Luennot Luennoija hannu.p.parviainen@helsinki.fi Aikataulu Observatoriolla Maanantaisin 10.00-12.00 Ohjattua harjoittelua maanantaisin 9.00-10.00

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Avoimen lähdekoodin kehitysmallit

Avoimen lähdekoodin kehitysmallit Avoimen lähdekoodin kehitysmallit Arto Teräs Avoimen lähdekoodin ohjelmistot teknisessä laskennassa -työpaja CSC, 25.5.2009 Avoimen lähdekoodin kehitysmallit / Arto Teräs 2009-05-25

Lisätiedot

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...

Lisätiedot

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen

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

Käyttöjärjestelmän rakenne

Käyttöjärjestelmän rakenne Käyttöjärjestelmän rakenne Tietokonejärjestelmä = Laitteisto + ohjelmisto Sovellus saa laitteiston käyttöönsä kj:n avustuksella CPU ja muisti Oheislaitteet KJ tarjoaa laitteiston käytössä tarvittavat palvelunsa

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

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

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit

Lisätiedot

Qt kaikkialla? 9.4.2010

Qt kaikkialla? 9.4.2010 Qt kaikkialla? Helsinki Tammasaarenkatu 5, 00180 Helsinki, Tel. 09 431 551 Tampere Satakunnankatu 18, 33210 Tampere, Tel. 03 315 861 Turku Lemminkäisenkatu 32 A, 20520 Turku, Tel. 02 263 571 Qt Qton C++

Lisätiedot

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu

Lisätiedot

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4)

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Luento 8 Ohjelman toteutus järjestelmässä rosessi rosessin esitysmuoto järjestelmässä Käyttöjärjestelmä -prosessit rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Luento 8 Ohjelman toteutus järjestelmässä

Luento 8 Ohjelman toteutus järjestelmässä Luento 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla

Lisätiedot

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit Luento 8 Ohjelman toteutus järjestelmässä Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla

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

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9)

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9) Jakso 8 Ohjelman toteutus järjestelmässä rosessi rosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla

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

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo

Lisätiedot

Simulaattorin asennus- ja käyttöohje

Simulaattorin asennus- ja käyttöohje Linux ja Windows XP Versio Päiväys Muokkaaja Kuvaus 0.2 16.2.2006 Mikko Halttunen Katselmoinin jälkeen 0.1 13.2.2006 Mikko Halttunen Alustava versio Sisällysluettelo 1 Johdanto... 3 2 Simulaattorin asennus...

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

Oppimistavoitteet kurssilla Tietokoneen toiminta

Oppimistavoitteet kurssilla Tietokoneen toiminta Oppimistavoitteet kurssilla Tietokoneen toiminta (Oppimistavoitteita tullaan muokkaamaan keväällä 2007 opiskelijoilta jo saatujen kommenttien pohjalta. Lisää kommentteja ja mielipiteitä oppimistavoitteiden

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

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

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento

Lisätiedot