5. Rinnakkaisuus ja jako prosesseihin
|
|
- Outi Alanen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Rinnakkaisuus ja jako prosesseihin Rinnakkaisuus ja jako prosesseihin Tietokoneen oheislaitteet toimivat toisistaan riippumatta. Ne edustavat todellista rinnakkaisuutta, sillä niiden toimintojen ei tarvitse olla millään tavalla sidoksissa toisiinsa. Tämä rinnakkaisuus aiheuttaa vaatimuksia myös suorittimelle: sille voi tulla keskeytyspyyntöjä, jotka käsittelevät juuri sitä tietorakennetta, jota suoritin on juuri käsittelemässä. Teemme tässä yhteydessä nopean kertauksen rinnakkaisuuden hallintaan. 5.1 Johdanto Rinnakkaisuus näyttäytyy ohjelmoijille joko todellisena tai näennäisenä. Todellista rinnakkaisuutta on muun muassa monisuoritinjärjestelmissä ja hajautetuissa järjestelmissä. Todellista rinnakkaisuutta on myös yksisuoritinkoneissa, kun oheislaitteet toteuttavat itsenäisesti suorittimen antamia käskyjä. Näennäinen rinnakkaisuus esiintyy moniajon (eli monta prosesessia tai säiettä yhtä aikaa aktiivisena) ja keskeytysten kautta. Ohjelmoijan kannalta on hyvin vähän eroa siinä, onko kyseessä todellinen vai näennäinen rinnakkaisuus, sillä ratkaistavat ongelmat ovat samat, ainakin, jos käytössä on irrottava skedulointi (skedulointiin palataan luvussa 6). Rinnakkaisuus vaikuttaa joko suoraan tai epäsuorasti. Suoraa vaikutusta prosessien välillä on yhteisten tietorakenteiden ja sanomien välityksen kautta. Erityisen voimakasta suoraa vaikuttamista on toisen prosessin luonti tai tuhoaminen. Epäsuora vaikutus tulee kilpailemisesta yhteisistä resursseista, joita ovat muun muassa oheislaitteet, suoritin ja ytimen tietorakenteet. Ohjelmoinnin kannalta perusongelma on suoran vaikutuksen hallinta, mutta reaaliaikaympäristössä epäsuora kilpailu voi nousta tärkeään osaan.
2 90 Sulautettu ohjelmointi Toinen tärkeä tekijä sulautetun järjestelmän toiminnassa on sen toiminnan oikea ajoitus. Tärkeintä ole se, että kyselyyn, keskeytykseen tai muu sellainen vastataan mahdollisimman nopeasti, vaan että vastaukseen kuluvan ajan vaihteluväli voidaan laskea etukäteen 15. Jotta ajanlaskenta voidaan tehdä, pitää tietää, kuinka kauan suorittimelta menee vastauksen laskemiseen. Tämä ei tietenkään riitä, mikäli vastauksen laskeva prosessi kilpailee suoritinajasta muiden prosessien kanssa. Laskennan mahdollistamiseksi on tunnettava käytössä olevan skedulerin ominaisuudet. Asiaa sivutaan tässä yhteydessä, mutta tarkempaan käsittelyyn ei ryhdytä. 5.2 Perusongelmat Rinnakkaisuuden mukanaan tuomia ongelmia ovat poissulkeminen, synkronointi, lukkiutuminen ja nälkiintyminen. Lisäksi rinnakkaisen ohjelman testaus on hankalaa, sulautetuissa järjestelmissä erityisen hankalaa. Näitä perusongelmia käsitellään tarkemmin omalla kurssillaan, mutta tähän on koottu lyhyt yhteenveto asiasta Kriittinen alue Jos kaksi (tai useampia) ohjelmaa käsittelee yhteistä muuttujaa, sanotaan muuttujaa käsittelevää ohjelman osaa kriittiseksi alueeksi. Niin yksinkertaista ohjelman osaa ei käytännössä olekaan, etteikö kriittinen alue aiheuttaisi ongelmia. Esimerkiksi muuttujan kasvattaminen yhdellä a++; generoi nykyaikaisessa koneessa usein kolme konekäskyä, esimerkiksi seuraavasti: ld [a],%1 // Lue a:n arvo rekisteriin 1 (merkitty %1) add %1,1,%1 // Kasvata rekisterin 1 arvoa yhdellä st %1,[a]. // Talleta rekisterin 1 arvo muuttujaan a Mikäli suoritin keskeytetään kesken tämän kolmen käskyn sekvenssin, ja keskeytyspalvelu muuttaa a:n arvoa, palaaminen tähän ohjelmaan kirjoittaa keskeytyspalvelun tekemien muutosten päälle alkuperäisen a:n arvon kasvatettuna yhdellä. 15. Tarkoitus ei ole vähätellä nopeuden merkitystä, vaan korostaa sitä, että se yksinään ei ole riittävä ominaisuus.
3 Rinnakkaisuus ja jako prosesseihin 91 Tässä siis muuttuja a edusti yhteistä muistia ja lause a++ krittiistä aluetta. Sekä yhteinen muisti että kriittinen alue voivat tietenkin olla paljonkin suurempia ja yleensä ovatkin; tässä lähestyttiin minimiä Poissulkeminen Poissulkeminen tarkoittaa sitä, että yhteistä muistialuetta käyttävälle kriittiselle alueelle päästetään vain yksi ohjelma kerrallaan. Helpoimmillaan tämä tapahtuu yksisuoritinkoneissa siten, että ennen kriittistä aluetta kielletään keskeytykset ja kriittisen alueen jälkeen sallitaan ne. Sulautetuissa järjestelmissä tämä on usein käytännössäkin mahdollista, sillä sovelluksia ajetaan usein käyttöjärjestelmän tilassa, mikä sallii keskeytyskiellot. Keskeytyskielto estää mitään keskeyttämästä ohjelman suoritusta kesken kriittisen alueen. Näin voidaan olla varmoja, että päivitys tietorakenteeseen tapahtuu halutulla tavalla. Keskeytyskiellolla on myös ongelmansa: pitkä kielto voi aiheuttaa jonkin oheislaitteen virheellisen toiminnan tai viivästyttää sitä niin, että toiminta ei ole paras mahdollinen. Toisaalta, jos laite on kytketty sellaiseen keskeytyslinjaan, jolta tulevaa keskeytystä ei voi kieltää (NMI), ei millään kriittisellä alueella voida käsitellä laitteen tietoja turvallisesti. Tämän takia NMI:tä ei pidä kytkeä normaalin laitteen keskeytysrutiiniin, vaan sitä kannattaa käyttää ainoastaan poikkeuksellisen "hätätilanteen" signalointiin. Poissulkemista varten voi ytimestä löytyä niin sanotut semaforit, joiden avulla poissulkeminen saadaan tehtyä. Ehkä yleisempi ratkaisu on kuitenkin se, että järjestelmästä löytyvät kutsut reserve ja release (tai jotain vastaavaa), joilla ensimmäisellä varataan alue ja toisella vapautetaan se. Poissulkemisesta on enemmän rinnakkaisuus- ja käyttöjärjestelmäkirjoissa Synkronointi Synkronointi tarkoittaa sitä, että ohjelma odottaa joko toisen ohjelman pääsemistä tiettyyn vaiheeseen tai oheislaitteen työn valmistumista. Usein pienimmissä järjestelmissä ohjelmat harvoin odottavat toisiaan tällä tasolla, mutta sitäkin useammin keskeytyksiä. Jos järjestelmässä ei ole prosessikäsitettä, keskeytys toimii synkronointiprimitiivinä. Prosesseja käytettäessä synkronointia odottava prosessi (tai säie) pysäytetään, ja sen annetaan edetä vasta sitten, kun odotettava tapahtuma on tullut.
4 92 Sulautettu ohjelmointi Synkronointiinkin voidaan käyttää edellisessä kohdassa mainittua semaforia. Usein tarjolla on erityiset kutsut wait ja signal, joista ensimmäisellä voidaan odottaa tapahtumaa ja toisella ilmoittaa tapahtuman tapahtuneen. Myös synkronointia käsitellään enemmän rinnakkaisuus- ja käyttöjärjestelmäkirjoissa Poissulkemisen ja synkronoinnin vähentäminen Kuten yllä on esitetty, poissulkemiseen liittyy aina kriittisen alueen käsite. Alue on kriittinen, jos sen käyttämiä muuttujia voi käsitellä useampi prosessi yhtä aikaa mahdollisesti muuttaen niiden arvoja. Yhtäaikainen luku ei yleensä häiritse, mutta yhtäaikainen kirjoittaminen ja lukeminen voi johtaa ongelmiin ei tosin aina, mutta sopivalla tietorakenteella tämä voi tietyissä sovelluksissa olla mahdollinen. Kriittinen alue tulee aina ympäröidä kutsuilla, jotka varaavat ja vapauttavat kriittisen alueen. Tietyissä tilanteissa poissulkeminen ei kuitenkaan ole välttämätöntä, varsinkin, jos prosesseja on vain kaksi. Tällaisia erikoistapauksia ovat jotkin jonot, kuten rengaspuskurit, sillä jonon ensimmäistä alkiota osoittavaa muuttujaa käsittelee vain jonoa purkava prosessi, ja jonon viimeistä alkiota osoittavaa muuttujaa päivittää vain jonoon kirjoittava prosessi. Koska jonon viimeinen paikka ei koskaan ole ensimmäinen, lukitusta ei tarvita. Tällainen ratkaisu tosin luottaa siihen, että puskuri ei ikinä täyty. Yleisesti ottaen on syytä aina huolehtia siitä, että poissulkemisen toteuttavat kutsut ovat paikallaan. Vain jos ajoituksen kanssa tulee ongelmia, kannattaa yrittää poissulkemisen vähentämistä. Joka tapauksessa järjestelmä on parasta laittaa ensin toimimaan ja vasta sitten tutkia, voiko poissulkemista vähentää. Synkronointi tapahtuu esimerkiksi silloin, kun odotetaan toisen prosessin varaamaa resurssia. Synkronointiakin voidaan vähentää, mikäli ollaan aivan varma siitä, että sen poistaminen ei aiheuta ajoitusongelmia. Kuten poissulkemisen vähentämisessä, tämäkin tulisi tehdä vasta sitten, kun looginen toiminta on muuten kunnossa, mutta ohjelma käyttää liikaa aikaa. Erityisesti on huomioitava, että vaikka poissulkemista ja synkronointia voidaan erityistapauksissa vähentää, tämä voi aiheuttaa myöhemmin pahoja ongelmia, mikäli järjestelmää ylläpitävät henkilöt eivät ole tietoisia tällaisesta optimoinnista. Vähintäänkin operaatioiden
5 Rinnakkaisuus ja jako prosesseihin 93 kutsut tulisi aina jättää ohjelmaan kommentteina myöhempää ylläpitoa varten Lukkiutuminen ja nälkiintyminen Poissulkemisen ja synkronoinnin lisäksi rinnakkaisuuden aiheuttamia ongelmia ovat lukkiutuminen, jossa ohjelman suoritus estyy joiltain osin resurssien jatkuvan varaamisen vuoksi, ja nälkiintyminen, jossa periaatteessa suoritus olisi mahdollista, mutta muiden prosessien suoritus kollektiivisesti estää jonkin ohjelman osan suorittamisen. Lukkiutumiseen ja nälkiintymiseen liittyvät ongelmat heräävät oikeastaan vasta sitten, kun poissulkemisrutiineita ruvetaan käyttämään. Näistä nälkiintyminen on hankalampi hallita, koska lukkiutumisen estämiseen riittää yhden lukkiutumisen välttämättömän ehdon säännönmukainen rikkominen. Lukkiutumisen välttämättömät ja riittävät ehdot ovat: 1. Poissulkemisehto: prosessi varaa resurssin yksityiseen käyttöön. 2. Varaus-odotusehto: prosessi ei vapauta resursseja odotuksen ajaksi. 3. Irrottamattomuusehto: varatun resurssin vapauttaa vain prosessi itse. 4. Silmukkaodotusehto: prosessit odottavat toisten varaamia resursseja. Nälkiintymiselle välttämätön mutta ei riittävä ehto on poissulkeminen. Usein tätä ei vain huomata, sillä monissa tapauksissa poissulkeminen ei ole nähtävissä ohjelmakoodista, vaan se on alussa mainittua epäsuoraa vaikutusta. Näin nälkiintymiselle ei ole vastaavaa helppoa tapaa sen kiertämiseksi kuin lukkiutumiselle. Sitä voidaan estää paitsi ohjelman rakenteella myös sopivalla skedulerilla. Ohjelman rakenne on aina turvallisempi ratkaisu, koska silloin mahdollinen ympäristön ja samalla skedulerin vaihdos ei aiheuta myöhemmin yllätyksiä Testaamisesta Rinnakkaisuutta sisältävän ohjelman testaaminen on monimutkaisempaa kuin peräkkäisohjelman. Koska ohjelman säikeet etenevät omaa tahtiaan, muodostuu mahdollisista suorituksista lähes aina niin suuri joukko testattavia polkuja ettei niiden kaikkien testaaminen olisi mahdollista edes periaatteessa. Käytännössä näin voitaisiin menetellä harvoin jo senkin takia, että tietyn suoritusjärjestyksen pakottaminen on
6 94 Sulautettu ohjelmointi harvoin mahdollista tämä tarkoittaisi ohjelman suorituksen täydellistä sarjallistamista esimerkiksi synkronoinnin avulla. Koska suorituspolkuja on niin paljon, voidaan yleensä testata vain pieni osajoukko kaikista mahdollisista. Siksi ohjelmiin jää usein virheitä, jotka johtavat ongelmiin vain tietyissä tilanteissa, kun joku todennäköisyydeltään alhainen suorituspolku päätyy suoritukseen. Usein ongelmat raportoidaan vasta kun järjestelmä on käytössä, mutta vaikka ongelmaan törmättäisiin jo testausvaiheessakin sen toistaminen voisi olla mahdotonta. Varsinaisen testaamisen lisäksi myös löydettyjen virheiden korjaaminen on usein vaikeaa. Syynä tähän on, että rinnakkaiset suoritukset voivat ehtiä edetä kauas varsinaisesta virheestä ennen kuin ongelmat ovat niin pahoja, että ne huomataan. Siksi testaustarkoituksia varten kannattaa mahdollisuuksien mukaan lisätä apukoodia, joka auttaa virheiden jäljityksessä. Tämäkään ei kuitenkaan aina riitä, sillä joskus ongelmat poistuvat kun virheiden jäljittämistä varten lisätty apukoodi aktivoidaan. 5.3 Aktiivisen lukituksen toteutus Kuten edellä jo mainittiin, yksisuoritinympäristössä lukitus voidaan toteuttaa keskeytyskielloilla. Monisuoritinympäristössä tämä ei ole mahdollista (yhden suorittimen keskeytyskielto ei estä toista suoritinta tekemästä mitä huvittaa), jonka takia tässä kohdassa käydään läpi poissulkemisen toteuttamista yhteisen muistin koneilla, joissa keskeytyskieltoa ei voi käyttää. Mikäli suorittimilla on yhteistä muistia, voidaan aktiivinen odotus voidaan toteuttaa laitteiston tukemilla erikoiskäskyillä. Tällainen erikoiskäsky on esimerkiksi swap, joka vaihtaa rekisterin ja muistipaikan arvot keskenään ja varaa väylän koko toiminnon ajaksi, jotta toinen suoritin ei pääse väliin. Tämän käskyn avulla lukitus voidaan toteuttaa helposti esimerkiksi seuraavaan tapaan (muistipaikassa lukko on nolla, jos alue on vapaa, ja yksi, jos alue on varattu): lock: mov #1, %1 // Varausvakio 1 rekisteriin yksi. s1: swap %1,lukko // Vaihdetaan varattutieto lukkoon brpos s1 // Mikäli lukossa oli 1, // yritetään uudestaan. ret // Lukitus onnistui
7 Rinnakkaisuus ja jako prosesseihin 95 Lukon avaus onkin paljon helpompaa, sillä riittää, että kirjoitetaan nolla lukkomuuttujaan: unlock: mov #0, lukko ret Swap ei ole ainoa tällainen käsky. Toinen suhteellisen yleinen vastaavaan tarkoitukseen tehty käsky on btset (bit test and set) tai vastaava: testaa onko bitti nolla ja jos on, niin älä hyppää ja aseta bitti, muuten hyppää (tässäkin vapaa on siis nolla ja varattu ykkönen): lock: btset lukko, lock // Jos bitti asetettu, // testaa uudelleen. ret // Lukitus onnistui Vapautus tapahtuu vastaavasti unlock: bclr lukko // Nollaa bitti ret Mikäli lukitusta varten ei ole käytettävissä erityiskäskyjä, täytyy käyttää jotakin tähän tarkoitukseen suunniteltua algoritmia. Käyttökelpoisia algoritmeja ovat muun muassa Dekkerin, Petterssonin, Eisenberg & McGuiren ja Fischerin algoritmit. Näitä algoritmeja ei esitetä tässä; ne on esitetty monissa rinnakkaisuus- tai käyttöjärjestelmäkirjoissa. On syytä huomata, että näissä niin kuin kaikissa lukitusohjelmissa tarvitaan yhteistä muistia, jonka takia mahdollinen välimuisti (data cache) pitää olla kiellettynä, eikä kääntäjäkään saa optimoida sijoituskäskyjä liikaa. C:n ja C++:n määre volatile tarkoittaa sitä, että muuttujan arvo voi muuttua kyseessä olevan rutiinin ulkopuolella, joten sitä ei saa optimoida rekisteriin. Tämän takia kaikkien yhteisten muuttujien ja lukkomuuttujien tulee olla volatile-määreellä suojattuja. Muissa kielissä määre voi olla shared tai muu sellainen. 5.4 Jako prosesseihin Algoritmien rinnakkaistaminen on vaikeaa. Sama pätee myös suuremmille kokonaisuuksille. Rinnakkaistamiseen lähdetään joko ongelman hallitsemiseksi (kustannukset! 16 ) tai sitten tehokkuuden saavuttamiseksi. Silti jakaminen perustuu usein tekijän kokemukseen asioista, ja kriteereitä on vaikea formalisoida. Tehtävänä on siis jakaa yksi sovellusongelma monelle prosessille.
8 96 Sulautettu ohjelmointi Jakoperusteena voi olla järjestelmän toiminnallisuus, skedulointi, rakenne tai tehokkuuden saavuttaminen. Toiminnallisessa jaossa yhteen loogiseen asiaan (sovelluksen toiminnalliseen osaan) liittyvät asiat ovat yhdessä prosessissa. Skedulointiin perustuvassa jaossa asiat, jotka suoritetaan aina yhtä aikaa ovat samassa prosessissa. Rakenteeseen perustuvassa jaossa kutakin rakenneosaa (ohjattavaa oheislaitetta tai muuta sellaista) ohjaa oma prosessinsa. Tehokkuuden saavuttamiseksi tehdään jakoa silloin, kun käytettävissä on monisuoritinympäristön tarjoamaa todellista rinnakkaisuutta. Periaatteessa samoilla tavoilla jaetaan monisuoritinjärjestelmässä tai hajautetussa järjestelmässä tehtävät eri suorittimille. Vaikka prosesseihin jako voi tuottaa lisätehoa, tärkein syy jakamiseen on yleensä modulaarisuuteen pyrkiminen ja kustannusten hallinta. Toisaalta liiallinen prosesseihin jako synnyttää turhaa viestiliikennettä ja voi näin hidastaa kokonaisjärjestelmää kohtuuttomasti Toiminnallinen jako Toiminnallisen jaon perustana ovat prosessien tehtävät sovelluksen loogisen toiminnan kannalta. Toiminnot sijoitetaan kukin omaan prosessiinsa. Toiminnallisen jaon etuja: Toimintojen ohjelmointi helpohkoa, jos tarvittavat tiedot ovat lokaaleja. Modulaarinen: testaus ja virheen etsintä helpottuu. Koko prosessin toiminta helppo ymmärtää. Toiminnallisen jaon haittoja: Mikäli tarvittavat tiedot ovat globaaleja, syntyy paljon potentiaalisia poissulkemisongelmia. Jos tiedot pitää kerätä toisilta prosesseilta, syntyy paljon suhteellisen raskaita kommunikaatiokutsuja. 16. Ohjelmistoprojektin kustannukset nousevat lineaarista nopeammin projektin koon kasvaessa. Tämän takia projektin jakaminen osaprojekteihin on kannattavaa, vaikka siitä jouduttaisiin hieman maksamaankin. Eli kustannusfunktiolla f ilmaistuna: f(kaikki) > n*f(kaikki/n)+n*vakio.
9 Rinnakkaisuus ja jako prosesseihin 97 Jokainen prosessi rasittaa järjestelmää ainakin keskusmuistin kulutuksella (pino!) ja skedulerin hidastumisena; ongelmaksi tämä tulee, jos loogisia toimintoja on paljon. Järjestelmän staattinen rakenne voi hämärtyä Skedulointiin perustuva jako Skedulointiin perustuvassa jaossa yhteen prosessiin kootaan ne asiat, jotka tehdään aina yhtä aikaa. Tyypillisesti kyseessä ovat tällöin periodiset tehtävät eli tehtävät, jotka toistuvat säännöllisesti ja kestävät aina suurin piirtein yhtä kauan. Esimerkiksi mittaustaajuus voi olla sama kuin säätötaajuus, jolloin nämä prosessit voidaan yhdistää, vaikka ne toiminnallisesti ovatkin jossain määrin erillään. Käänteisesti ajatellen jakoperuste on velvoittava: eri aikaan tehtävät asiat sijoitetaan eri prosesseihin. Skedulointiin perustuvan jaon etuja: Vähentää skedulerin työtaakkaa ja pinoihin tarvittavaa tilaa, mistä seuraa edelleen, että reaaliaikaominaisuuksien laskenta helpottuu. Skedulointiin perustuvan jaon haittoja: Jonkin verran ristiriidassa modulaarisuuden kanssa, joskin haitta on pienennettävissä hyvällä ohjelmointityylillä. Voi syntyä suuria kokonaisuuksia, jolloin eri toimintojen rooli voi hämärtyä. Periaate voi liittää toisiinsa toimintoja, joilla ei ole mitään loogista yhteyttä toisiinsa paitsi sama periodi Rakenteeseen perustuva jako Rakenteeseen perustuvassa jaossa kutakin (fyysistä) toimilohkoa ohjaa oma prosessinsa. Rakenteeseen perustuvan jaon etuja Toimilohkot voivat olla myös loogisesti toiminnallisia kokonaisuuksia, jolloin jako lähenee toiminnallista jakoa.
10 98 Sulautettu ohjelmointi Toimilohkon vaihto heijastuu vain yhteen osaan ohjelmistoa. Rakenteeseen perustuvan jaon haittoja Toimilohko voi kattaa monta eri toiminnallista osaa, jolloin toiminnallinen rakenne hämärtyy. Yhdestä prosessista voi tulla hyvin suuri. Toimintojen sisällä voi olla erilaisia ajastustarpeita Rinnakkaistaminen Algoritmit rinnakkaistetaan, jotta laskenta voidaan jakaa monille suorittimille. Rinnakkaistamiseen perustuvan jaon etuja Laskenta nopeutuu, mikäli eri osien välillä ei ole (liikaa) riippuvuutta. Rinnakkaistamiseen perustuvan jaon haittoja Algoritmit äärimmäisen vaikeita suunnitella, testata tai edes ymmärtää. Hajautus ei aina onnistu. Onnistunutkaan hajautus ei aina ole tehokas, jos tiedonsiirtoa suorittimien välillä on runsaasti. Hyötyä vain silloin, jos suorittimia on monta. Yksisuoritinkoneessa vaikutus on päinvastainen kuin haluttu Yhteenveto Niin kuin yleensäkin reaalimaailmassa, tulee eri periaatteita käytännössä yhdistellä. Esimerkiksi skedulointi vaatii käytännössä sen, että eri aikavaatimuksilla varustetut toiminnat ovat eri prosesseissa, mutta ei pakota yhdistämään samaan aikaan ajettuja prosesseja. Näihin voidaan soveltaa muita periaatteita, esimerkiksi modulaarisuuden mukaista jakoa. Jos kyseessä on hajautettu järjestelmä, rakenteellinen jako on tyypillisesti ensimmäinen jakomalli. Päätetään siis siitä, mikä hajaute-
11 Rinnakkaisuus ja jako prosesseihin 99 tun järjestelmän osa tekee minkin toiminnon. Kunkin osan sisällä voidaan sitten tehdä yksityiskohtaisempia jakoja muilla menetelmillä. Prosessijako voi olla ilmiselvä jo heti suunnitteluvaiheesta lähtien; toisaalta monissa suunnittelumenetelmissä prosesseja käytetään hyvin eri tavalla kuin mikä on järkevää "luonnossa". Tämän takia prosessijako voi muuttua suunnitteluvaiheen jaosta paljonkin siirryttäessä toteutukseen. Rinnakkaistaminen ja jako monelle prosessille voi vaikuttaa vaikealta asialta. Kuitenkin sitä käytetään paljon ratkaisun yksinkertaistamiseksi. Vaikka se tuo mukanaan omia ongelmiaan, niistä tuleva haitta on usein pienempi kuin saavutettava hyöty. 5.5 Yhteenveto Rinnakkaisuuden mukanaan tuomia ongelmia ovat: 1. poissulkeminen 2. synkronointi 3. lukkiutuminen 4. nälkiintyminen. Lisäksi monet muut tehtävät, kuten esimerkiksi testaaminen, monimutkaistuvat. Yleensä kannattaa pyrkiä suunnittelemaan ajoitukseen liittyvät tehtävät ensin, sillä niihin liittyvien ongelmien löytäminen myöhemmin on vaikeaa. Useita erilaisia strategioita ohjelman jakamiseksi rinnakkaisiin prosesseihin: 1. toiminnallinen jako 2. skedulointiin perustuva jako 3. rakenteeseen perustuva jako 4. laskennan rinnakkaistaminen (erityisesti monisuoritinympäristössä).
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
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
5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen,
5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen, arto.salminen@tut.fi Agenda Rinnakkaisuus käsitteenä Perusongelmat Jako prosesseihin Reaaliaika Yhteenveto Rinnakkaisuus
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
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...
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
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,
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
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ä
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
Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
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
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
Rinnakkaistietokoneet luento S
Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa
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
Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5
Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -
Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia
Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
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
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ää
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
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.
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
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
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
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
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
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
Ohjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Rinnakkaisuus Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 4. 2012 Sisältö 1 Rinnakkaisuusmalleja: säie ja prosessi 2
Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen
Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue
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
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
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ä
812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
1. Keskusyksikön rakenne
1. Keskusyksikön rakenne Kuvassa on esitelty TTK-91 esimerkkikoneen keskusyksikkö. Oikeiden tietokoneiden keskusyksiköt ovat luonnollisesti monimutkaisempia, mutta tämä riittää oikein mainiosti asian havainnollistamiseen.
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
Harjoitustyön testaus. Juha Taina
Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida
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
812315A Ohjelmiston rakentaminen. Asynkronisuus
812315A Ohjelmiston rakentaminen. Asynkronisuus Ari Vesanen ari.vesanen (at) oulu.fi Yleistä moduulista Tällä kertaa sisältää Java-kielistä monisäieohjelmointia Suoritustapa: Neljästä ohjelmointitehtävästä
Transaktiot - kertausta
Hajautettujen järjestelmien perusteet Transaktiot - kertausta Distributed Systems, Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg Addison-Wesley 1988,1994. Pearson Education 2001 ISBN:
Ohjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 19: Rinnakkaisuus Riku Saikkonen (merkityt ei-laajan kurssin kalvot: Otto Seppälä) 24. 3. 2011 Sisältö 1 Säikeet 2 Lukot 3 Monitorit 4 Muuta säikeisiin
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
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
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot
Sisältöä OSA I: Poissulkeminen ja nti Semaforit ja rinnakkaisuuden hallinta Yhteisten muuttujien käyttö Prosessit samassa koneessa Lukkiutuminen Monitorit 2-1 2-2 Poissulkeminen ja nti Rinnakkaiset, atomiset
Sisällys. 16. Lohkot. Lohkot. Lohkot
Sisällys 16. ohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.1 16.2 ohkot aarisulut
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
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
Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007
Jaetun muistin muuntaminen viestin välitykseksi Otto Räsänen 15. lokakuuta 2007 1 Motivaatio 2 Valtuuden välitys Peruskäsitteitä 3 Kolme algoritmia Valtuuden välitys käyttäen laskuria ilman ylärajaa Valtuuden
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
Tutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
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
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ää
Luku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI
Käyttöjärjestelmät t I Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI Stallings, Luku 8.1 KJ-I S2005 / Tiina Niklander; kalvot Auvo Häkkinen 7-1 Sisält ltö Käänteinen sivutaulu Segmentointi Segmentointi
Kuva 8.7. u Muunnos prosessin sivunumerosta sivutilanumeroksi u Kussakin alkiossa: u Katenoimalla. u MMU:ssa; juuri äsken käytettyjä muunnoksia
Käyttöjärjestelmät t I Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI Stallings, Luku 8.1 Sisält ltö Käänteinen sivutaulu Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä KJ-I S2005
Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka
Rinnakkaisuus parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa Rinnakkaisuuden etuja: laskennan nopeutuminen (sarjoittuvat operaatiojonot) ilmaisuvoima (ongelman
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
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ä
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
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
1 Määrittelyjä ja aputuloksia
1 Määrittelyjä ja aputuloksia 1.1 Supremum ja infimum Aluksi kerrataan pienimmän ylärajan (supremum) ja suurimman alarajan (infimum) perusominaisuuksia ja esitetään muutamia myöhemmissä todistuksissa tarvittavia
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
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
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
Käyttöjärjestelmät II
LUENTO 1 Käyttöjärjestelmät II Kertaus: KJ-I ja RIO (KJ2 n osalta) Ch 1-8, 11-12 [Stal05] Kustakin luvusta enemmän tai vähemmän alkuosa Jos jokin asiat tässä tuntuvat hatarilta, niin (a) kysykää ja/tai
IT K 1 45 K ä yt t öj ä rj estelmät
IT K 1 45 K ä yt t öj ä rj estelmät Tenttikysymyksiä ja vastauksia Aliohjelman suoritusperiaate, ts. selvitä pinon käyttö ja paluuarvon välittäminen (3p) 1. Ennen aliohjelman aloittamista kutsuja tallettaa
TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit
TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen
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
7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
Ohjelmien automaattisen verifioinnin reunamailla
Ohjelmien automaattisen verifioinnin reunamailla Antti Siirtola Tietotekniikan laitos, Perustieteiden korkeakoulu, Aalto-yliopisto, antti.siirtola@aalto.fi Suomalainen Tiedeakatemia, Nuorten akatemiaklubi,
815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 IX Rinnakkainen ohjelmointi Sisältö 1. Yleistä rinnakkaisuudesta 2. Prosesseista ja säikeistä 3. Rinnakkaisen ohjelman oikeellisuudesta 4. Rinnakkaisuuden
Itsestabilointi: perusmääritelmiä ja klassisia tuloksia
Itsestabilointi: perusmääritelmiä ja klassisia tuloksia Jukka Suomela Hajautettujen algoritmien seminaari 12.10.2007 Hajautetut järjestelmät Ei enää voida lähteä oletuksesta, että kaikki toimii ja mikään
Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä
Tietokoneen rakenne Luento 1 Tietokonejärjestelmä Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista John von Neumann ja EDVAC, 1949 Luento 1-1 Sisältöä Tietokonejärjestelmä KJ:n näkökulma laitteistoon
Intel Threading Building Blocks
Intel Threading Building Blocks Markku Vajaranta Esko Pekkarinen TBB Pähkinänkuoressa C++ luokkamallinen rinnakkaisuus Abstrahoi rinnakkaisuutta korkean tason tehtävät (tasks) ja niiden skedulointi suuri
JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
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
Graafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi
Kilpailemaan valmentaminen - Huipputaidot Osa 3: Vireys- ja suoritustilan hallinta. Harjoite 15: Keskittyminen ja sen hallinta
Kilpailemaan valmentaminen - Huipputaidot Osa 3: Vireys- ja suoritustilan hallinta Harjoite 15: Keskittyminen ja sen hallinta Harjoitteen tavoitteet ja hyödyt Harjoitteen tavoitteena on varmistaa, että
OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa 2-1 Sisältöä Poissulkeminen ja synkronointi Semaforit ja rinnakkaisuuden hallinta Lukkiutuminen Monitorit 2-2 Poissulkeminen ja synkronointi
OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa 2-1 Sisältöä Poissulkeminen ja synkronointi Semaforit ja rinnakkaisuuden hallinta Lukkiutuminen Monitorit 2-2 Poissulkeminen ja synkronointi
Algoritmi on periaatteellisella tasolla seuraava:
Algoritmi on periaatteellisella tasolla seuraava: Dijkstra(V, E, l, v 0 ): S := { v 0 } D[v 0 ] := 0 for v V S do D[v] := l(v 0, v) end for while S V do valitse v V S jolle D[v] on minimaalinen S := S
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
Tietokoneen toiminta, K Tavoitteet (4)
Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?
Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000
Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?
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?
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
Sisällys. 15. Lohkot. Lohkot. Lohkot
Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet
Testaajan eettiset periaatteet
Testaajan eettiset periaatteet Eettiset periaatteet ovat nousseet esille monien ammattiryhmien toiminnan yhteydessä. Tämä kalvosarja esittelee 2010-luvun testaajan työssä sovellettavia eettisiä periaatteita.
OSA I: Sisältöä. Atomisuus (atomic action) v Poissulkeminen ja synkronointi. Kriittinen (koodi)alue (critical section)
Sisältöä OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa Poissulkeminen ja nti Semaforit ja rinnakkaisuuden hallinta Lukkiutuminen Monitorit 2-1 2-2 Atomisuus (atomic action) v Poissulkeminen
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
dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant
AgilElephant Testausraportti I1 Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: Testausraportti Sivu 1 / 5 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision
Käyttöjärjestelmät II
LUENTO 1 Käyttöjärjestelmät II Kertaus: : KJ-I ja RIO (KJ2 n osalta) Ch 1-8, 11-12 12 [Stal05] Kustakin luvusta enemmän n tai vähemmv hemmän n alkuosa Jos jokin asiat tässt ssä tuntuvat hatarilta, niin
Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.
Tietokoneen rakenne Luento 1 Tietokonejärjestelmä Ch 1 - Ch 8 [Sta06] Valikoituja paloja John von Neumann ja EDVAC, 1949 TITO-kurssista Luento 1-1 Sisältöä Tietokonejärjestelmä KJ:n näkökulma laitteistoon
Toinen harjoitustyö. ASCII-grafiikkaa
Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita
Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.
Vaihto-ominaisuudella on seuraava intuition kannalta keskeinen seuraus: Olkoot A I ja B I samankokoisia riippumattomia joukkoja: A = B = m jollain m > 0. Olkoon vielä n = m A B, jolloin A B = B A = n.
Verkon värittämistä hajautetuilla algoritmeilla
Verkon värittämistä hajautetuilla algoritmeilla 5 12 30 19 72 34 Jukka Suomela 15 77 18 4 9. tammikuuta 2012 19 2 68 Verkko 2 Verkko solmu 3 Verkko solmu kaari 4 Hajautettu järjestelmä solmu (tietokone)
Algoritmit 2. Luento 12 To Timo Männikkö
Algoritmit 2 Luento 12 To 3.5.2018 Timo Männikkö Luento 12 Geneettiset algoritmit Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Algoritmit 2 Kevät 2018 Luento 12 To 3.5.2018 2/35 Algoritmien
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,
Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki
Alkuluvut LUKUTEORIA JA TODISTAMINEN, MAA11 Jokainen luku 0 on jaollinen ainakin itsellään, vastaluvullaan ja luvuilla ±1. Kun muita eri ole, niin kyseinen luku on alkuluku. Määritelmä, alkuluku/yhdistetty