5. Rinnakkaisuus ja jako prosesseihin

Koko: px
Aloita esitys sivulta:

Download "5. Rinnakkaisuus ja jako prosesseihin"

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

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

5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen,

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

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

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

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

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

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

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

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

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

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

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

Rinnakkaistietokoneet luento S

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

Lisätiedot

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

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

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 -

Lisätiedot

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

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 -

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

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

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

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

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

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

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

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

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

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

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Lisätiedot

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

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

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

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

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

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

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

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

1. Keskusyksikön rakenne

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.

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

Harjoitustyön testaus. Juha Taina

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

Lisätiedot

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

812315A Ohjelmiston rakentaminen. Asynkronisuus

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ä

Lisätiedot

Transaktiot - kertausta

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:

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

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

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

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

OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

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

Lisätiedot

Sisällys. 16. Lohkot. Lohkot. Lohkot

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

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

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

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

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

Lisätiedot

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

Tutoriaaliläsnäoloista

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

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

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

Luku 8. Aluekyselyt. 8.1 Summataulukko

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

Lisätiedot

Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI

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

Lisätiedot

Kuva 8.7. u Muunnos prosessin sivunumerosta sivutilanumeroksi u Kussakin alkiossa: u Katenoimalla. u MMU:ssa; juuri äsken käytettyjä muunnoksia

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

Lisätiedot

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

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

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

ohjelman arkkitehtuurista.

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

Lisätiedot

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

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

Lisätiedot

1 Määrittelyjä ja aputuloksia

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

Lisätiedot

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

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

A11-02 Infrapunasuodinautomatiikka kameralle

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

Lisätiedot

Käyttöjärjestelmät II

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

Lisätiedot

IT K 1 45 K ä yt t öj ä rj estelmät

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

Lisätiedot

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

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

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

7.4 Sormenjälkitekniikka

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

Lisätiedot

Ohjelmien automaattisen verifioinnin reunamailla

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

Lisätiedot

815338A Ohjelmointikielten periaatteet

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

Lisätiedot

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

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

Lisätiedot

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

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

Lisätiedot

Intel Threading Building Blocks

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

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

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ä

Lisätiedot

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

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

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

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

Lisätiedot

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

Lisätiedot

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

Lisätiedot

OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta

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

Lisätiedot

Algoritmi on periaatteellisella tasolla seuraava:

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

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

Tietokoneen toiminta, K Tavoitteet (4)

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?

Lisätiedot

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

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?

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

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

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

Lisätiedot

Testaajan eettiset periaatteet

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.

Lisätiedot

OSA I: Sisältöä. Atomisuus (atomic action) v Poissulkeminen ja synkronointi. Kriittinen (koodi)alue (critical section)

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

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

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

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

Lisätiedot

Käyttöjärjestelmät II

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

Lisätiedot

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

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

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

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

Lisätiedot

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

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

Lisätiedot

Verkon värittämistä hajautetuilla algoritmeilla

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)

Lisätiedot

Algoritmit 2. Luento 12 To Timo Männikkö

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

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

Määritelmä, alkuluku/yhdistetty luku: Esimerkki . c) Huomautus Määritelmä, alkutekijä: Esimerkki

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

Lisätiedot