5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi



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

5. Rinnakkaisuus ja jako prosesseihin

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

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

OHJ-4301 Sulautettu Ohjelmointi

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

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

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

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

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Ohjelmoinnin peruskurssien laaja oppimäärä

2 Konekieli, aliohjelmat, keskeytykset

Ohjelmoinnin peruskurssien laaja oppimäärä

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

OHJ-4301 Sulautettu Ohjelmointi

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

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

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

812315A Ohjelmiston rakentaminen. Asynkronisuus

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

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

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

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

Rinnakkaistietokoneet luento S

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

Verkon värittämistä hajautetuilla algoritmeilla

815338A Ohjelmointikielten periaatteet

Transaktiot - kertausta

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

Arto Salminen,

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

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

UML -mallinnus TILAKAAVIO

Uuden vieritestin käyttöönotto avoterveydenhuollossa

Käyttöjärjestelmän rakenne

Tietokantarakenteet ja -algoritmit 6. harjoitus

Harjoitustyön testaus. Juha Taina

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

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

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

Intel Threading Building Blocks

Verkkojen verkko - maailmankylä. Hajautetut järjestelmät yhteistyön ongelmallinen maailma. Hajautettuja järjestelmiä. Hajautusta!. miksi oikeastaan?

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Seuraavat Windowsin käyttöjärjestelmäversiot tukevat Novell Filr -työpöytäsovellusta:

Ohjelmiston testaus ja laatu. Testaus käytettävyys

Työn ja tohtoriopintojen yhteensovittaminen

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Turvallisuusseminaari Silja-Line

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

CUDA. Moniydinohjelmointi Mikko Honkonen

Lukkiutuminen. Taustaa Aterioivat Filosofit Ennaltaehkäisy Havaitseminen Välttely. Andrews 4.3 Stallings (tai mikä tahansa KJ-kirja)

Lukkiutuminen. Taustaa

4-13. Ratkaisu 4: OK, mutta... vrt. 2. Ratkaisu 3: OK. Ratkaisu 5: OK? Nälkiintyminen?

Stabilointi. Marja Hassinen. p.1/48

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

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Taustaa. Lukkiutuminen. Seuraukset. Määritelmiä Lukkiuma (deadlock) päättymätön odotus BLOCKED-tilassa. prosessi P. prosessi Q. pyydä A? OK.

Stabilointi. arvosana. arvostelija. Marja Hassinen

Pikaintro käyttöjärjestelmiin

Samanaikaisuuden hallinta

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

Algoritmit 1. Luento 1 Ti Timo Männikkö

Rinnakkaistietokoneet luento S


Graafisen käyttöliittymän ohjelmointi Syksy 2013

Stabiloivat synkronoijat ja nimeäminen

TIE Ohjelmistojen suunnittelu. Luento 2: protot sun muut

Arto Salminen,

T Testitapaukset TC-1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

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

Hans Baumgartner nimi nimi nimi nimi. Reaaliaikakäyttöjärjestelmät

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

LUENTO 3. Toiminnan kehä

MITÄS NYT TEHDÄÄN? Kodin ja koulun yhteistyö & SOME Jaakko Nuotio, Nuorten Palvelu ry

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöjärjestelmät: Virtuaalimuisti

6. Skedulointi eli vuoronnus

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

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

TK Palvelinympäristö

Tässä ei ole tarkoitus kirjata kaikkia yksittäisiä virheitä vaan yleisiä usein kilpailuissa nähtyjä virhesuorituksia.

Ohjelmiston toteutussuunnitelma

COACHTECH Välitön palautejärjestelmä lumilajeissa

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Convergence of messaging

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

T Ohjelmistoprojektien hallinta Tehtävän 3 ratkaisu. Maija Kangas, Kimmo Stålnacke ja Outi Syysjoki

Transkriptio:

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 tehtävän suorittamista samanaikaisesti Mahdollisia hyötyjä: yksinkertaistaa testausta, työnjakoa, ajoitusta, parantaa modulaarisuutta ja suorituksen nopeutta jne

Todellinen Rinnakkaisuus Monisuoritinjärjestelmä / hajautettu järjestelmä Oheislaitteiden itsenäinen toiminta Näennäinen Moniajo Keskeytykset

Prosessien vuorovaikutus Suora vaikutus Yhteiset resurssit Viestinvälitys Epäsuora vaikutus Kilpailu yhteisistä resursseista Johtavat joukkoon hyvin tunnettuja käytännön ongelmia

Perusongelmat Poissulkeminen Synkronointi Lukkiutuminen Nälkiintyminen Testaus

Termejä Kriittinen alue Atominen operaatio Kilpailutilanne (race condition) Lukkiutuminen (deadlock) Nälkiintyminen (starvation)

Poissulkeminen Vain yksi ohjelma kerrallaan voi suorittaa kriittistä aluetta Keskeytyskielto Semaforit Erilaiset muut lukitusrutiinit Poissulkemisen vähentäminen tehtävä harkiten Yleensä ajoituksiin liittyvät syyt voivat pakottaa tähän (dokumentoi!) Toisaalta ylenmääräinen poissulkeminen sarjallistaa ohjelman

Synkronointi Ohjelman osa odottaa toisen ohjelman valmistumista tai oheislaitetta Semaforit Wait, Signal, Notify Pienissä sulautetuissa ohjelmissa harvoin suoraan ohjelmien välistä mutta sitäkin useammin keskeytyksiin liittyvää Synkronoinnin vähentäminen syytä tehdä harkiten Yleensä ajoituksiin liittyvät syyt voivat pakottaa tähän (dokumentoi!) Toisaalta ylenmääräinen poissulkeminen sarjallistaa ohjelman

Lukkiutuminen Ohjelman suoritus pysähtyy odottamatta Lukkiutuminen estyy jos neljästä ehdosta jonkin täyttyminen estetään Poissulkemisehto prosessi varaa resurssin itselleen Varaus-odotusehto prosessi ei vapauta resursseja odotuksen ajaksi Irroittamattomuusehto varatun resurssin vapauttaa vain prosessi itse Silmukkaodotusehto prosessit odottavat toisten varaamia resursseja

Nälkiintyminen Ohjelman suoritus etenee, mutta joku osa ohjelmaa ei saa koskaan suoritusvuoroa Nälkiintyminen voi tapahtua, jos ohjelmassa on poissulkemista Syynä yleensä epäsuora vaikutus, joten löytäminen testaamalla tai muuten perinteisin keinoin voi olla vaikeaa Ei selkeää ehtolistaa kuten lukkiutumiselle

Testaaminen Koska suoritus etenee rinnakkain, voivat eri säikeet/prosessit edetä eri suorituskerroilla eri tahtiin Ongelmia voi tuoda ainoastaan 1 suoritus 1.000.000.000 Eli siis vikaa tulee aina joskus Ei voida toistaa testein Vaikka virhe voitaisiin toistaakin, ei aina olla kuivilla Ongelmat voivat poistua kun testaustuki lisätään Varsinainen ongelma voi olla aivan muualla kuin missä virheen seuraukset havaitaan

Jako prosesseihin Toiminnallisuus Skedulointi Rakenne Tehokkuus Monisuoritinympäristössä Näiden yhdistelmä

Toiminnallinen jako Sovelluksen loogiseen toimintaan perustuva jako Etuja: ongelman ymmärtäminen, toteuttaminen ja testaaminen yksinkertaistuvat Haittoja: poissulkeminen, raskas kommunikaatio, muistinkulutus

Skedulointiin perustuva jako Samanaikaisesti suoritettavat tehtävät samassa prosessissa Etuja: reaaliaikaominaisuuksien laskenta yksinkertaistuu Haittoja: epämodulaarista, ohjelman ymmärtäminen voi vaikeutua

Rakenteeseen perustuva jako Fyysisille toimilohkoille, esim oheislaitteille, oma prosessi Etuja: jos laitteisto muuttuu -> helppo muuttaa myös koodi Haittoja: sovelluksen hallitseminen voi vaikeutua, erilaiset ajastustarpeet törmäävät

Rinnakkaistaminen Algoritmin jakaminen monisuoritinjärjestelmässä Etuja: nopeus Haittoja: vaikea suunnitella, nopeushyöty voi olla kyseenalaista

Erilaisista yhdistelmistä Saattavat helposti sekoittaa ohjelman perusfilosofian Muutosten tekeminen hankaloituu, jos useita mahdollisia paikkoja lisätä uutta toiminnallisuutta Pidä tyylien määrä pienenä! Dokumentoi erityisesti Yleiset suunnitteluperiaatteet Yksittäiset poikkeukset jotka kumminkin unohtuvat

Reaaliaika Tapahtumien ajoittaminen oikeaan (ennustettavaan) aikaan Toisinaan mahdollisimman nopea vasteaika

Reaaliaikajärjestelmät Pehmeä: ajoituksen epäonnistuminen ei ole vakava virhe Kova: ajoitus ei saa epäonnistua Reaktiivisuus: reagoi ärsykkeisiin nopeasti Ennustettavuus: vasteajat voidaan laskea

Yhteenveto Rinnakkaisuuden ongelmat Jakoperusteet Reaaliaikajärjestelmät