Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Samankaltaiset tiedostot
Rinnakkaisohjelmistot. Liisa Marttinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Kevät 2004

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

/ ta. Osaa kvalitatiivisella tasolla arvioida sovelluksen hajauttamisen hyötyjä ja haittoja.

Ongelmakenttä. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan. Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus

Ongelmakenttä. Yhteenvetoa. Ratkottava. Mekanismit. Lukkomuuttujat. Lukkomuuttujat, Spin Locks. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan

Yhteenvetoa. Ongelmakenttä

Ongelmakenttä. Yhteenvetoa. Mekanismit. Ratkottava. Lukkomuuttujat, Spin Locks. Lukkomuuttujat. Rinnakkaisohjelmistot 2004 / Auvo Häkkinen 9-1

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

Käyttöjärjestelmät: poissulkeminen ja synkronointi

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

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

Rinnakkaistietokoneet luento S

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu. Poissulkeminen moduulin sisällä?

Etäproseduurikutsu. Etäproseduurikutsu, Remote Procedure Call (RPC)

OSA II: Hajautettu ympäristö. Ei yhteistä muistia. Rio 2004 / Auvo Häkkinen

OSA II: Hajautettu ympäristö. Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Sanomanvälitys. Etäproseduurikutsu

Sisältö, osa II. Sanomanvälitys. Kanavat. Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä.

Sovellusarkkitehtuurit

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

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

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

Etäproseduurikutsu. RPC Toteutus Virhesemantiikka. Andrews 8.1, 10.3, Stallings 13.3

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

5. Rinnakkaisuus ja jako prosesseihin

OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1

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. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

2 Konekieli, aliohjelmat, keskeytykset

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu. Poissulkeminen moduulin sisällä?

3. Yhteistilaverkko. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki

Ohjelmoinnin peruskurssien laaja oppimäärä

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

815338A Ohjelmointikielten periaatteet

Ohjelmoinnin peruskurssien laaja oppimäärä

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

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

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

Tavoite. Monitorit. Monitori Hoare Monitori. Minimoi virhemahdollisuuksia. Monitori Synkronointimenetelmiä Esimerkkejä

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

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

812315A Ohjelmiston rakentaminen. Asynkronisuus

Rinnakkaisohjelmointi, Syksy 2006

Monitorit -projekti Rinnakkaisohjelmointi

Ohjelmistojen mallintaminen, sekvenssikaaviot

Johdantoa. Miksi rinnakkaisuutta? Laitteistoarkkitehtuureja. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Johdantoa. Andrews, Ch 1

Johdantoa. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Johdantoa. Miksi rinnakkaisuutta? Keskinäinen kommunikointi. Prosessit voivat häiritä toisiaan! Rinnakkaisuus - Samanaikaisuus

Osaa käyttää työvälineohjelmia, tekstinkäsittelyä taulukkolaskentaa ja esitysgrafiikkaa monipuolisesti asiakasviestintään.

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Jaana Diakite Projekti 1 JAVA-Monitorit 1(13) Rinnakkaisohjelmointi Anu Uusitalo

Rinnakkaistietokoneet luento S

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

Käyttöjärjestelmät II

ohjelman arkkitehtuurista.

Käyttöjärjestelmät II

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

7.4 Sormenjälkitekniikka

AS Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker

Hajautetut algoritmit. seminaari syksyllä 2007 vastuuhenkilö Jyrki Kivinen toinen vetäjä Timo Karvi

MONISÄIKEISTYS PELIMOOTTOREISSA

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

RINNAKKAINEN OHJELMOINTI A,

Palveluperustaiset arkkitehtuurityylit

Integrointi. Ohjelmistotekniikka kevät 2003

Intel Threading Building Blocks

Rinnakkaisuuden hyväksikäyttö tietokonepeleissä

Arkkitehtuurityylejä ja suunnittelutaktiikoita

MITÄ OSAAMISTA ARVIOIDAAN AMMATTIOSAAMISEN NÄYTÖILLÄ

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

HAJAUTETUT JA KESKITETYT RATKAISUT YRITYSTOIMINNASSA

T Harjoitustyöluento

11/20: Konepelti auki

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

58131 Tietorakenteet ja algoritmit (syksy 2015)

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

T Harjoitustyöluento

OSA II: Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Hajautettu ympäristö Ei yhteistä muistia.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

Opintosuunnitelma. Suunta: Tietoliikenneohjelmistot ja -sovellukset Pääaine: Tietoliikenneohjelmistot Sivuaine: Yritysturvallisuus

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

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

Oppilas tunnistaa ympäristöopin eri tiedonalat.

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Virtualisointi Kankaanpään kaupungissa. Tietohallintopäällikkö Jukka Ehto

Ohjelmointi 1 / syksy /20: IDE

Ohjelmistojen mallintaminen, kesä 2010

Rinnakkaistietokoneet luento S

Transkriptio:

17.5.2006 1/5 Oppimistavoitteet kurssilla Rinnakkaisohjelmointi Rinnakkaisuus ja rinnakkaisuuden soveltaminen tietojenkäsittelyjärjestelmissä Kurssin Tietokoneen toiminta perusteella ymmärtää, miten ohjelman suoritus tietokoneessa etenee: miten prosessori suorittaa ohjelman käskyjä miten käyttöjärjestelmä käyttää prosesseja ohjelmien suorituksen ohjaukseen miten prosessien rinnakkainen eteneminen perustuu laitteistokeskeytyksiin ja käyttöjärjestelmän skedulointipäätöksiin. Oleellista: osaa selittää, miten kaksi ohjelmaa voi edetä konekäskytasolla rinnakkain. Tietää, mitkä tekijät johtavat rinnakkaisiin toimintoihin laitteisto- ja ohjelmistotasolla. Tuntee esimerkkejä rinnakkaisuuden esiintymistä laitteisto-, käyttöjärjestelmä-, sovellusohjelma- ja verkkosovellustasoilla. Osaa kuvata esimerkkejä käyttäen rinnakkaiseen suoritukseen liittyvät peruskäsitteet: keskinäinen poissulkeminen ja suorituksen kriittinen vaihe prosessien synkronointi lukkiutuminen Tuntee näiden taustalla olevat tavoitteet ja osaa antaa esimerkkejä ongelmista, joihin näiden virheellinen ratkaisu tai ratkaisematta jääminen voi johtaa. Ymmärtää prosessien suorituksen etenemisen epädeterministisen luonteen ja sen vaikutukset. Osaa selittää, rinnakkaisuuden peruskäsitteiden taustalla olevat tavoitteet. Ymmärtää toiminnallisen synkronoinnin ja ehtosynkronoinnin välisen yhteyden. Osaa selittää prosessien käyttäytymisen perusteella rinnakkaisuuteen liittyvien ongelmien synnyn. Ymmärtää rinnakkaisuusongelmien ratkaisuille asetettavat vaatimukset. Ymmärtää laitteistotason arkkitehtuurin vaikutuksen siihen, mitä voidaan rinnakkaistaa ja mitä hyötyä rinnakkaistamisesta voi olla. Ymmärtää, miten käyttöjärjestelmätasolla rinnakkaisuutta hallitaan. Ymmärtää rinnakkaisuuden erilaisen luonteen laitteisto-, ohjelmisto- ja verkkotasojen toiminnoissa. Tietää, miten hajautus eroaa rinnakkaisuudesta.

17.5.2006 2/5 Rinnakkaisohjelmoinnin peruskäsitteistö ja rakennemallit Osaa selittää, mitä tarkoittavat peruskäsitteet synkroninen / asynkroninen atominen. Tuntee käyttäytymismalllit tuottaja-kuluttaja asiakas-palvelin vertaissolmujen verkko puomisynkronointi Osaa soveltaa kaikkia näitä malleja erilaisissa ongelmanratkaisutilanteissa erilaisia (kurssilla myöhemmin esiteltäviä) ohjelmointikielten käsitteitä Pystyy perustelemaan näitä malleja soveltavissa ratkaisuissa ratkaisun oikeellisuuden. Ymmärtää, miten kussakin mallissa toiminta rinnakkaistuu tai sarjallistuu. Osaa arvioida erilaisten rakennemallien käyttökelpoisuutta erilaisilla laitteisto- ja ohjelmisto-alustoilla. Osaa arvioida, missä määrin tietty sovellus on rinnakkaistettavissa. aktiivipalvelin ja kohtaaminen (rendezvous) lukijat-kirjoittajat (epäsymmetriset luokkamallit) Osaa lukea näitä malleja toteuttavia algoritmeja ja osaa selittää, miten ko. ohjelmat eri tilanteissa toimivat. Tietää, mitkä (kurssilla myöhemmin esiteltävät) ohjelmointikielten käsitteet soveltuvat kommunikointiin, jos prosessit ovat samassa / eri koneessa. Lukkomuuttujat Tuntee käyttöjärjestelmän toiminnan prosessien skeduloinnissa. Osaa toteuttaa poissulkemisen käyttäen lukkoa ja test-and-set käskyä. Tietää, missä eri tilanteissa lukkomuuttujan ja aktiiviodotuksen käyttö on perusteltua. Tietää, että lukkomuuttujan käyttö johtaa aktiiviodotukseen ja tietää, mitä haittaa tästä on.

17.5.2006 3/5 vuorovaikutus: semaforit ja monitorit Tuntee säikeiden yhteisen muistinkäytön. Osaa selittää semaforin ja monitorin rakenteen sekä vastaavien operaatioiden aiheuttaman toiminnallisuuden. Osaa käyttää semaforeja ja monitoreja eri perusmallien ratkaisuun (tuottajat-kuluttajat, asiakas-palvelin, puomisynkronointi). Ymmärtää algoritmeja, joissa on käytetty halkaistuja semaforeja, yksityisiä semaforeja, viestikapulan luovutus tekniikkaa ja ehdon säilytyksen tekniikkaa. Osaa laatia semaforeja ja monitoreja käyttäviä algoritmeja, joissa hyödynnetään aiemmin mainittuja perusmalleja. Osaa toteuttaa näitä Java-ympäristössä. Osaa toteuttaa puomisynkronoinnin. Osaa säädellä resurssien jakelun järjestystä (satunnainen, FIFO, prioriteettipohjainen). Osaa toteuttaa käyttäjäluokkapohjaisen synkronoinnin (lukijatkirjoittajat). Osaa toteuttaa aktiivipalvelimen ( nukkuva parturi ). Osaa toteuttaa semaforin ja monitorin lukkomuuttujia Osaa perustella monimutkaisten rinnakkaisalgoritmien toimivuuden. Osaa suunnitella ja toteuttaa yhdessä koneessa toimivia rinnakkaissovelluksia. Osaa selittää lukijat-kirjoittajat ongelman ratkaisun toiminnan. Osaa perustella ratkaisujen toimivuuden ehtojen säilyvyyttä Ymmärtää keskitettyjen (jakelijapohjaisten) ja hajautettujen (sopimispohjaisten) ratkaisujen samankaltaisuudet ja eroavuudet. Ymmärtää, miksi lukkoja, semaforeja ja resurssikohtaisia varausalgoritmeja käytetään aivan erilaisiin resurssinvaraustarpeisiin.

17.5.2006 4/5 Lukkiutuminen Tuntee käyttöjärjestelmän toiminnan resurssien jakelijana. Osaa kuvata esimerkkejä käyttäen lukkiutumistilanteen synnyn. Osaa selittää välttämättömät ja riittävät ehdot lukkiutumiselle. Osaa kuvata tapoja lukkiutumisen havaitsemiseen (?), estämiseen ja välttämiseen. Tuntee aterioivien filosofien ongelman. Ymmärtää pankkiirin algoritmin toimintaperiaatteen ja osaa kuvata algoritmin toimintaa esimerkkejä Tietää lukkiutumisen käsittelymenetelmien rajalliset mahdollisuudet todellisissa ympäristöissä. Osaa toteuttaa aterioivien filosofien algoritmin sekä keskitettynä (resurssin jakelijaa käyttäen) että hajautettuna. Ymmärtää lukkiutumisen riskin toisaalta käyttöjärjestelmäympäristössä (pieni) ja toisaalta tietokanta- ja hajautetuissa ympäristöissä (suuri). kommunikointi: sanomanvälitys Tietää, että käyttöjärjestelmä voi välittää sanomia prosessilta toiselle. Osaa selittää, miten sanomanvälitys kanavien kautta toimii. Tietää synkronisen ja asynkronisen sanomanvälityksen eron. Osaa käyttää sanomanvälitystä perusmallien ratkaisuun (tuottajakuluttaja, asiakas-palvelin). Huomaa monitoripohjaisen palvelinratkaisun ja sanomanvälitykseen perustuvan palvelinratkaisun samankaltaisuuden. Osaa toteuttaa rinnakkaislaskennan kaikki perusmallit (ml. suodinmalli, yleinen asiakaspalvelin) algoritmitasolla. Osaa toteuttaa vertaiskommunikointiin perustuvia ratkaisuja. Ymmärtää monitoripohjaisen palvelinratkaisun ja sanomanvälitykseen perustuvan palvelinratkaisun samankaltaisuudet ja eroavuudet. Osaa yleistää sanomanvälityksen verkkotasolle. Tuntee CSP:n ja tietää, mihin sitä voidaan käyttää. kommunikointi: etäproseduurikutsu (RPC) ja vartioitu rinnakkaisodotus (input statement) Kurssin Tietokoneen toiminta perusteella tietää, miten aliohjelmia suoritetaan. Tietää etäproseduurikutsun ja vartioidun rinnakkaisodotuksen toimintaperiaatteet. Osaa algoritmitasolla toteuttaa asiakas-palvelimen (RPC) ja aktiivisen palvelimen kohtaamisen (rendezvous). Ymmärtää erillisen rajapintamäärittelyn tarpeen. Osaa selittää, miten etäproseduurikutsu ja vartioitu rinnakkaisodotus toimivat. Tuntee etäproseduureihin liittyvät virhesemantiikat. Osaa toteuttaa algoritmitasolla rinnakkaisen odotuksen sekä käyttäen säikeitä että käyttäen vartioituja odotuslauseita.

17.5.2006 5/5 Rinnakkaisohjelmointi Ohjelmointikursseilla opitut perustiedot ja -taidot Osaa laatia pieniä rinnakkaisuuden hallintaa vaativia algoritmeja käyttäen proseduraalista algoritmien kuvauskieltä. Tietää tavallisimmat rinnakkaisohjelmien virhetyypit. Osaa laatia pieniä rinnakkaisuuden hallintaa vaativia ohjelmia Java-ympäristössä. Osaa päätellä rinnakkaisalgoritmin oikeellisuuden. Tuntee Javan ja C:n rinnakkaisuuden hallinnan menetelmien periaatteet ja osaa toteuttaa näillä kielillä rinnakkaisohjelmia. Osaa testata rinnakkaisohjelmia. Osaa todistaa rinnakkaisalgoritmin oikeellisuuden Termi ymmärtää tarkoittaa sitä, että henkilö pystyy perustellen selittämään asiaa tuntemattomalle, mistä on kysymys, mikä on oleellista ja millaisia erilaisia syy-seuraussuhteita asioiden välillä vallitsee.