RINNAKKAINEN OHJELMOINTI A,

Samankaltaiset tiedostot
812336A C++ -kielen perusteet,

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

C++11 seminaari, kevät Johannes Koskinen

Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi, Syksy 2006

Javan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Capacity Utilization

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

Olio-ohjelmointi Javalla

815338A Ohjelmointikielten periaatteet

812315A Ohjelmiston rakentaminen. Asynkronisuus

Metodien tekeminen Javalla

MUSEOT KULTTUURIPALVELUINA

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

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

Rajapinta (interface)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmointi 2 / 2010 Välikoe / 26.3

Encapsulation. Imperative programming abstraction via subprograms Modular programming data abstraction. TTY Ohjelmistotekniikka

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Luokan sisällä on lista

Mikä yhteyssuhde on?

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Monitorit -projekti Rinnakkaisohjelmointi

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

LYTH-CONS CONSISTENCY TRANSMITTER

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

Semaforit Javassa. Mari Kononow, Eveliina Mattila, Sindi Poikolainen HELSINGIN YLIOPISTO

11. Javan valintarakenteet 11.1

Ohjelmointi 1 C#, kevät 2013, 2. tentti

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

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

The CCR Model and Production Correspondence

FIS IMATRAN KYLPYLÄHIIHDOT Team captains meeting

Harjoitus 4 (viikko 47)

Harjoitus 5 (viikko 48)

16. Allocation Models

16. Javan omat luokat 16.1

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

1. Olio-ohjelmointi 1.1

10 Lock Lock-lause

make and make and make ThinkMath 2017

15. Ohjelmoinnin tekniikkaa 15.1

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Ohjelmoinnin peruskurssien laaja oppimäärä

Java-kielen perusteet

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

anna minun kertoa let me tell you

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

Rinnakkaisuus (.NET) Juha Järvensivu 2007

Listarakenne (ArrayList-luokka)

Java-kielen perusteita

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

Java-API, rajapinnat, poikkeukset, UML,...

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Graafisen käyttöliittymän ohjelmointi Syksy 2013

9. Periytyminen Javassa 9.1

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Tietorakenteet ja algoritmit

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Periytyminen (inheritance)

Ajettavat luokat: SM: S1 (25 aika-ajon nopeinta)

14. Poikkeukset 14.1

Java kahdessa tunnissa. Jyry Suvilehto

1. Mitä tehdään ensiksi?

Luokan muodostimet (Constructors)

11. Javan toistorakenteet 11.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

The Viking Battle - Part Version: Finnish

Sisältö. 22. Taulukot. Yleistä. Yleistä

Toppila/Kivistö Vastaa kaikkin neljään tehtävään, jotka kukin arvostellaan asteikolla 0-6 pistettä.

13. Loogiset operaatiot 13.1

Luokat ja oliot. Ville Sundberg

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

12. Javan toistorakenteet 12.1

11. Javan valintarakenteet 11.1

Ohjelmointi 2, välikoe

Java UI-komponentit (JTable) Juha Järvensivu 2007

T Henkilökohtainen harjoitus: FASTAXON

Salasanan vaihto uuteen / How to change password

13. Loogiset operaatiot 13.1

Olio-ohjelmointi Virhetilanteiden käsittely

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

12. Javan toistorakenteet 12.1

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

KOHDELUOKAN MÄÄRITTELY

Java-kielen perusteet

Transkriptio:

RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen ja laajennettu kohtaaminen? 2. Petersonin algoritmi poissulkevuusongelman ratkaisuksi kahden säikeen S0 ja S1 tapauksessa on pseudokoodilla kuvattuna seuraava: int last = 0; boolean Critical0 = false; boolean Critical1 = false; S0: Critical0 = true; last = 0; while(critical1 && last == 0) Critical0 = false; S1: Critical1 = true; last = 1; while(critical0 && last == 1) Critical1 = false; Osoita, että algoritmi on poissulkevuusongelman ratkaisu. Jatkuu toisella puolella ->

3. Kirjoita seuraava Java-ohjelma: Ohjelmassa toimii pääohjelmasäikeen lisäksi toinen säie, joka tulostaa konsolille alenevassa järjestyksessä luvut 10:stä nollaan sekunnin välein. Tulostettuaan nollan säie päättyy. Pääohjelma ei saa päättyä ennen säikeen päättymistä; pääohjelman loppuessa tulostetaan konsolille ilmoitus Laskenta loppui. 4. Vertaile semaforia ja monitoria rinnakkaisuuden kontrollirakenteina. 5. Liitteenä olevassa Java -ohjelmassa ProgTest on määritelty luokka ArrayCopy, jonka oliot sisältävät jäsenmuuttujanaan kokonaislukutaulukon. Luokassa on metodi copyto, jonka avulla taulukon arvot voidaan kopioida parametrina annettuun kokonaislukutaulukkoon. Lisäksi luokan metodi copymet kopioi toisen ArrayCopy -olion taulukon arvot olion taulukkoon. Ohjelmassa luodaan kaksi luokan oliota, joiden taulukkojen arvot kopioidaan toisiinsa kahdessa eri säikeessä. Ohjelmassa on kuitenkin eräs tyypillinen rinnakkaisuuteen liittyvä virhe. Minkälainen virhetilanne tästä voi ohjelmaa suoritettaessa aiheutua? Kuvaa yksityiskohtaisesti virhetilanteen synty. Tentin tulokset julkistetaan viimeistään 31.8.2005.

LIITE. Tehtävän 5 Java ohjelma: class ArrayCopy int[] myarray; public ArrayCopy(int[] array) myarray = array; synchronized public void copymet(arraycopy another) another.copyto(myarray); synchronized public void copyto(int[] destarray) for(int i = 0; i < myarray.length; i++) if(i < destarray.length) destarray[i] = myarray[i]; // class ArrayCopy public class ProgTest public static void main(string [] argv ) int[] firstarray = 1,2,3,4,5; int[] secondarray = 8,7,6,5,4,3,2,1; final ArrayCopy firstcopier = new ArrayCopy(firstArray); final ArrayCopy secondcopier = new ArrayCopy(secondArray); Runnable ri = new Runnable() firstcopier.copymet(secondcopier); ; Runnable rii = new Runnable() secondcopier.copymet(firstcopier); ; Thread T1 = new Thread(rI); Thread T2 = new Thread(rII); T1.start(); T2.start();

PARALLEL PROGRAMMING (RINNAKKAINEN OHJELMOINTI, ENGLISH) 815301A, 18.6.2005 1. Give short answers (2p each): a) What are the two main criteria for parallel program correctness? b) What does lazy thread creation mean in parallel programming? c) What do rendezvous and extended rendezvous mean in parallel programming? 2. Peterson s algorithm for the solution of the mutual exclusion problem, in the case of two threads S0 and S1, is in pseudo code: int last = 0; boolean Critical0 = false; boolean Critical1 = false; S0: Critical0 = true; last = 0; while(critical1 && last == 0) Critical0 = false; S1: Critical1 = true; last = 1; while(critical0 && last == 1) Critical1 = false; Prove that the algorithm indeed is a solution to the problem. Continued on the other side ->

3. Write a Java program that, in addition to the main program thread, includes one additional thread printing numbers from 10 to 0 in descending order on the console. Numbers are printed with one second interval, until zero is printed, after which the thread ends. The main program thread is not allowed to end before the other thread ends, and, when stopping, the main thread prints Countdown finished. 4. Compare monitor and semaphore as control structures of concurrency. 5. Attached is Java program ProgTest, defining a class ArrayCopy, whose objects include an integer array as a class variable. The class contains the method copyto that can be used to copy values from the integer array to an array that is given as a parameter to the method. Also, the class contains the method copymet that copies the values from the array of another ArrayCopy object to object s array. Program creates two ArrayCopy objects, whose arrays are copied in two separate threads. The program, however, contains a typical mistake relating to concurrency. What kind of error situation can this cause, when program is executed? Describe in detail, how the error can occur. Results are available not later than 31.8.2005.

ATTACHMENT. Java program for problem number 5: class ArrayCopy int[] myarray; public ArrayCopy(int[] array) myarray = array; synchronized public void copymet(arraycopy another) another.copyto(myarray); synchronized public void copyto(int[] destarray) for(int i = 0; i < myarray.length; i++) if(i < destarray.length) destarray[i] = myarray[i]; // class ArrayCopy public class ProgTest public static void main(string [] argv ) int[] firstarray = 1,2,3,4,5; int[] secondarray = 8,7,6,5,4,3,2,1; final ArrayCopy firstcopier = new ArrayCopy(firstArray); final ArrayCopy secondcopier = new ArrayCopy(secondArray); Runnable ri = new Runnable() firstcopier.copymet(secondcopier); ; Runnable rii = new Runnable() secondcopier.copymet(firstcopier); ; Thread T1 = new Thread(rI); Thread T2 = new Thread(rII); T1.start(); T2.start();