Rinnakkaisohjelmointi JVM-ympäristössä
Kottonen, Timo (2015)
Kottonen, Timo
Haaga-Helia ammattikorkeakoulu
2015
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2015052811079
https://urn.fi/URN:NBN:fi:amk-2015052811079
Tiivistelmä
Työn tarkoituksena oli selvittää, miten ohjelmoija voi rinnakkaisohjelmoinnin avulla hyödyntää moniydinprosessorien tehoa. Rinnakkaisohjelmoinnilla tarkoitetaan sellaisten sovellusten ohjelmointia, joissa useita säikeitä suorittaa tehtäviä rinnakkain. Työssä keskityttiin rinnakkaisohjelmoinnin haasteisiin, suunnitteluun ja toteutukseen. Työn taustalla oli idea koostaa rinnakkaisohjelmoinnista helposti ymmärrettävä ja havainnollistava johdatus, jota voisi käyttää esimerkiksi kurssimateriaalina. Työ rajattiin käsittelemään Java virtuaalikonetta (JVM) hyödyntäviä ohjelmointikieliä.
Työ toteutettiin analysoimalla useita sähköisiä ja kirjallisia lähteitä. Työssä käytettiin muutamia pieniä esimerkkisovelluksia, joiden tarkoitus oli havainnollistaa paremmin käsiteltäviä aiheita. Lisäksi työssä on yksi laajempi sovellusvertailu, jossa tutkittiin perinteisen ja rinnakkaisen sovelluksen eroja. Esimerkkisovellusten toteutuksessa käytettiin Java-ohjelmointikieltä.
Työn tulokset osoittivat, että JVM-ympäristössä suoritettavaan rinnakkaisohjelmointiin liittyy useita haasteita, kuten muistin eheyden ylläpitäminen ja säikeiden tehokas koordinointi. Näiden haasteiden taustalla olevien syiden ymmärtäminen vaatii ohjelmoijalta matalan tason komponenttien, kuten muistin, toimintaperiaatteiden ymmärtämistä. Työssä tehdystä sovellusvertailusta kävi ilmi, että rinnakkaisohjelmoinnin avulla sovellusten suorituskykyä voidaan parantaa, mutta vain lähdekoodin monimutkaistumisen kustannuksella.
Työn johtopäätökset osoittivat, että koska rinnakkaisohjelmointiin liittyy niin paljon haasteita, rinnakkaistusta suunniteltaessa pitää osata arvioida, onko suorituskyvyn parantuminen lähdekoodin monimutkaistumisen arvoista. Hyvien työkalujen puute on syy lähdekoodin monimutkaistumiselle ja myös sille, että ohjelmoijan pitää ymmärtää matalan tason logiikkaa. Funktionaalinen ohjelmointi on tällä hetkellä hyvä ratkaisu, koska muuttumattomuus hävittää useimmat ongelmat.
Työ toteutettiin analysoimalla useita sähköisiä ja kirjallisia lähteitä. Työssä käytettiin muutamia pieniä esimerkkisovelluksia, joiden tarkoitus oli havainnollistaa paremmin käsiteltäviä aiheita. Lisäksi työssä on yksi laajempi sovellusvertailu, jossa tutkittiin perinteisen ja rinnakkaisen sovelluksen eroja. Esimerkkisovellusten toteutuksessa käytettiin Java-ohjelmointikieltä.
Työn tulokset osoittivat, että JVM-ympäristössä suoritettavaan rinnakkaisohjelmointiin liittyy useita haasteita, kuten muistin eheyden ylläpitäminen ja säikeiden tehokas koordinointi. Näiden haasteiden taustalla olevien syiden ymmärtäminen vaatii ohjelmoijalta matalan tason komponenttien, kuten muistin, toimintaperiaatteiden ymmärtämistä. Työssä tehdystä sovellusvertailusta kävi ilmi, että rinnakkaisohjelmoinnin avulla sovellusten suorituskykyä voidaan parantaa, mutta vain lähdekoodin monimutkaistumisen kustannuksella.
Työn johtopäätökset osoittivat, että koska rinnakkaisohjelmointiin liittyy niin paljon haasteita, rinnakkaistusta suunniteltaessa pitää osata arvioida, onko suorituskyvyn parantuminen lähdekoodin monimutkaistumisen arvoista. Hyvien työkalujen puute on syy lähdekoodin monimutkaistumiselle ja myös sille, että ohjelmoijan pitää ymmärtää matalan tason logiikkaa. Funktionaalinen ohjelmointi on tällä hetkellä hyvä ratkaisu, koska muuttumattomuus hävittää useimmat ongelmat.