Samanaikaisuuden hallinta

Samankaltaiset tiedostot
TIES542 kevät 2009 Yhteismuistisamanaikaisuus

Rekursiiviset tyypit

Oliot ja tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Geneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Alityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Ohjelmoinnin peruskurssien laaja oppimäärä

Yksinkertaiset tyypit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Ohjelmallinen transaktiomuisti

jäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

815338A Ohjelmointikielten periaatteet

11/20: Konepelti auki

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

5/20: Algoritmirakenteita III

MS-A0402 Diskreetin matematiikan perusteet

Ohjelmoinnin peruskurssien laaja oppimäärä

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

Tietojenkäsittelyteorian alkeet, osa 2

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Muita rekisteriallokaatiomenetelmiä

Loogiset konnektiivit

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Tietotekniikan valintakoe

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2.

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015

HELIA 1 (14) Outi Virkki Tiedonhallinta

Java-kielen perusteita

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Harjoitus 3 -- Ratkaisut

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

Ydin-Haskell Tiivismoniste

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

4. Luokan testaus ja käyttö olion kautta 4.1

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus

1. Omat operaatiot 1.1

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Insinöörimatematiikka A

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

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

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

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

Yhteenvetoa. Ongelmakenttä

Ohjelmien automaattisen verifioinnin reunamailla

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

DFA:n käyttäytyminen ja säännölliset kielet

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Java-kielen perusteet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Javan perusteita. Janne Käki

11.4. Context-free kielet 1 / 17

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

Metodien tekeminen Javalla

y = 3x2 y 2 + sin(2x). x = ex y + e y2 y = ex y + 2xye y2

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

Ohjelmointi 1 / syksy /20: IDE

automaattisen tietotyypin tunnistamisen osalta, minkä Smith koki olevan avaintekijä onnistuneen rinnakkaisen ohjelmointikielen toteuttamisessa.

=p(x) + p(y), joten ehto (N1) on voimassa. Jos lisäksi λ on skalaari, niin

812315A Ohjelmiston rakentaminen. Asynkronisuus

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

Lisää pysähtymisaiheisia ongelmia

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

7/20: Paketti kasassa ensimmäistä kertaa

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

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

TIES542 kevät 2009 Aliohjelmien formalisointia lambda-kieli

7. Oliot ja viitteet 7.1

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

Johdanto II. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Transkriptio:

Samanaikaisuuden hallinta TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 20. maaliskuuta 2007

Samanaikaisuus engl. concurrency useampaa ohjelmaa suoritetaan samanaikaisesti ongelmana näiden ohjelmien välinen... kommunikointi resurssienhallinta jaottelu: jaetun muistin samanaikaisuus (shared-memory concurrency) viestinvälityssamanaikaisuus (message-passing concurrency)

Keskeiset ongelmat lukkiutuminen (engl. deadlock) vauhkoontuminen (engl. livelock) nälkiintyminen (engl. resource starvation) toiminnallinen oikeellisuus

viestinvälitys π-laskento (Milner 1992) join-laskento jaettu muisti monitorit transaktiomuisti Tarkasteltavia malleja

π-laskento: abstrakti syntaksi E ::= 0 veltto prosessi I 1 (I 2 ).E vastaanottoetuliite I 1 I 2.E lähetysetuliite E 1 E 2 rinnakkainen yhdistäminen (νi )E rajoitus!e monistus Vastaanottoetuliite x(y).e sitoo muuttujan y ja rajoitus (νx)e sitoo muuttujan x. Muuten esiintyvät muuttujat ovat vapaita.

π-laskento: tulkinta lausekkeet ovat prosesseja muuttujat edustavat kommunikointikanavia viestit ovat myös kommunikointikanavia 0 on prosessi, joka ei tee mitään I 1 (I 2 ).E on prosessi, joka odottaa viestiä kanavalta I 1 ja sitoo viestin muuttujaan I 2 ; sitten se toimii kuten E I 1 I 2.E on prosessi, joka lähettää viestin I 2 kanavalle I 1 (ja odottaa, että joku ottaa sen vastaan); sitten se toimii kuten E (νi )E luo uuden kanavan ja sitoo sen I :hin; sitten se toimii kuten E E 1 E 2 suorittaa prosessit E 1 ja E 2 samanaikaisesti!e luo rajattomasti kopioita prosessista E

π-laskento: rakennekongruenssi E 1 E 2 E 2 E 1 (E 1 E 2 ) E 3 E 1 (E 2 E 3 ) ((νi )E 1 ) E 2 (νi )(E 1 E 2 )!P P!P E 0 E (νi )0 0 jos I ei vapaa E 2 :ssa

π-laskento: operationaalinen semantiikka I 1I 2.E 1 I 1(I 3).E 2 E 1 E 2[I 3 := I 2] E 1 E 1 E 1 E 2 E 1 E 2 E E (νi )E (νi )E E 1 E 1 E 1 E 2 E 2 E 2 E 1 E 2

Esimerkkejä 1. Voidaan määritellä usean viestin yhtäaikainen lähettäminen ja vastaanottaminen: I I 1,..., I n.e = (νi )I I.I I 1..I I n.e I (I 1,..., I n ).E = I (I ).I (I 1 )..I (I n ).E 2. Voidaan myös määritellä totuusarvot: True(b) =!b(t, f ).t False(b) =!b(t, f ).f Tällöin jos halutaan prosessin E 1 tulevan suoritettua, jos kanava b on tosi (eli rinnalla suoritetaan prosessia True(b)) ja E 2 :n tulevan suoritettua, jos kanava b on epätosi, niin tämä saadaan aikaan prosessilla (νt)(νf )b t, f.(t().e 1 f ().E 2 )

Esimerkki Voidaan määritellä myös muistikas : Ref(r, w, i) = (νl)l i ReadServer(l, r) WriteServer(l, w) ReadServer(l, r) =!r(c).l(v).(c v l v ) WriteServer(l, w) =!w(c, v ).l(v).(c l v ) Prosessi Ref(r, w, i) luo muistikkaan, jonka alkuarvo on l. Muistikkaan nykyinen arvo on luettavissa lähettämällä jokin viesti c kanavalle r; arvon voi lukea kanavalta c. Muistikkaan arvon voi vaihtaa arvoksi v lähettämällä pari c, v viestinä kanavalle w; kun kanavalle c tulee tyhjä viesti, on muistikkaan arvo päivittynyt.

Esimerkki Voidaan määritellä kuvaus puhtaan tyypittömän λ-lausekkeen lausekkeilta π-laskennon lausekkeiksi. Kuvaus ottaa parametrina myös kanavanimen. λx.e (p) = p(x, q). E (q) x (p) = x p E 1 E 2 (p) = (νq) E 1 (q) ((νy)q y, p!y(r). E 2 (r))

π-laskennon merkitys suosittu formalismi viestinvälityksen semantiikan tutkimiseen voidaan käyttää samanaikaisuutta tukevan viestinvälityspohjaisen ohjelmointikielen perustana (kuten λ-laskento on funktiokielen perusta) esim. Pict ei kuitenkaan ainoa mahdollinen viestinvälityksen teoria

Join-laskento Fournet ja Gonthier 1996 π-laskennossa viestinvälitys on synkronoivaa erityisesti synkronointi on globaali tapahtuma hankalaa hajautetussa järjestelmässä Join-laskento synkronoi lokaalisti tarkemmin taululla Polyphonic C#, C ω

Monitorit Per Brinch Hansen 1972 rakenteinen lukitus jaetun muistin järjestelmässä olennaisesti: monitori on Java-luokka, jonka jokainen metodi on synchronized ja jokainen attribuutti on private Per Brinch Hansen: Java s Insecure Parallelism. SIGPLAN Notices 34(4): 38-45 (1999)

Muistitransaktiot Software Transactional Memory (STM) atomic {... } joko koko atomic-lause suoritetaan kokonaan tai sitä ei suoriteta lainkaan optimistinen strategia: oletetaan, että kaikki käy hyvin, ja atomic-lauseen lopussa katsotaan, onnistuiko onnistui, jos mikään muu säie ei atomicin aikana kirjoittanut muuttujiin, joita tämä säie luki atomicin sisällä; tällöin kaikki on hyvin (commit) jos epäonnistui, perutaan tehdyt muutokset muuttujien arvoihin ja aloitetaan atomic-lohko alusta (rollback-retry) retry jos retry suoritetaan, pakotetaan nykyisen atomicin rollback-retry {... } orelse orelse {... } jos lohko tekee rollbackin, älä jää odottamaan vaan kokeile seuraavaa lohkoa