Tentin tekstisisältö

TIE-02500 Rinnakkaisuus - 12.05.2017 (Tentti, Savia)

Tentin tekstisisältö

Teksti on luotu tekstintunnistuksella alkuperäisestä tenttitiedostosta, joten se voi sisältää virheellistä tai puutteellista tietoa. Esimerkiksi matemaattisia merkkejä ei voida esitää oikein. Tekstiä käytetään pääasiassa hakutulosten luomiseen.

Alkuperäinen tentti
TIE-02500 Rinnakkaisuus

Tentti 12.5.2017

 

 

Tentin vastuuhenkilö: jyke.savialtut.fi
Laskimen käyttö on kiellettyä.
Muista kirjoittaa kaikkiin vastauspapereihin nimesi ja opiskelijanumerosi.

Vastauksessa oleta vastaavasi sellaisen ihmisen esittä

 

ään kysymykseen, joka tuntee kohtalaisen hyvin ohjelmistotekniikan
aihealuetta muutoin paitsi juuri tämän kysymyksen osalta. Mieti etukäteen vastauksesi pääkohdat ja lajittele ne johdon-
mukaiseen järjestykseen — älä kirjoita yhteen pötköön kaikkea mieleen tulevaa. Muista vastata kaikkiin tehtävän kysymys-
lauseisiin, sillä täysiä pisteitä ei voi saada jos kaikkiin kysyttyihin asioihin ei ole vastattu. Jos vastaus vaatii ohjelmakoodin

kirjoitamista, sen ei tarvitse olla pilkulleen syntaksiltaan oikein. Mikä tahansa johdonmukaisesti käytetty ja yleisessä käytössä

 

 

olevia ohjelmointirakenteita sisältävä koodin esitysmuoto käy.

 

 

 

 

1. Termi Data Race on määritelty: Op.
e kaksi tai useampi säiettä yhden prosessin sisällä käsittelee samaa muistipaikkaa
e vähintää yksi käsittelyoperaatioista on muistiin kirjoitus

e säikeet eivät koordinoi toimintaansa mitenkään (esim. lukoilla)

 

(a) [2 pistettä] Mitä säie ja prosessi tarkoittavat määrittelyssä?

(b) [2 pistettä] Anna esimerkki tilanteesta, jossa säikeet voivat toimia väärin Data Race:n takia
(koodi ja selostus virheestä)

(c) [2 pistettä] Mikä on säieohjelmoinnin lukko ja miksi se ratkaisee Data Race -tilanteen?

2. Barrier-synkronointi. Op.
(a) [2 pistettä] Mikä on Barrier-rakenteen käyttötarkoitus rinnakkaisessa ohjelmoinnissa?

(b) [1 piste] Anna käytännön esimerkki tilanteesta, jossa Barrieria voi/kannattaa käyttää rin-
nakkaisessa ohjelmassa

(c) [3 pistettä] Määrittele C++-luokka, joka toteuttaa Barrierin. Hahmottele luokan rajapinta
(metodit), toteutus ja anna myös esimerkki siitä miten Barrier-luokkaasi käytetään. (Keskity
luokkaan ja siitä tehdyn instanssin eli olion käyttämiseen. Säikeiden luontia tms. EI tarvitse
olla vastauksessasi mukana.)

 

sivu 1 /2

 
 

3. Ovatko seuraavat väittämät oikein vai väärin?
Jos väärin, niin kerro mitä väittämässä on pielessä (vaikka kohdan väite olisi väärin, niin siitä ei
saa pisteitä jos perustelua ei ole olemassa). Sp.
(a) [1 piste] Ohjelma 1 toteuttaa poissulkemisen kunhan säikeet muistavat aina ennen kriittistä
aluetta kutsua rutiinia enter () ja poistuessaan rutiinia exit ().

 

 

1 | bool varattuna = false;
2
3 | void enter()
41(
5 while( varattuna == true )
6 5
7 varattuna = true;
8 |)
9
10 | void exit()
11 | €
12 varattuna = false;
13 | )
Ohjelma 1: Poissulkeminen
(b) [1 piste] Ohjelmoija ei voi mitenkään tietää ohjelman 2 muuttujista ovatko ne säikeille yhteistä

muistia vai pelkästään säikeen omassa käytössä.

 

namespace (
int A = 42;

void funktio( double param ) (
int i = O;
N

 

0 d4Aau s WD —

 

 

Ohjelma 2: Muisti

(c

[1 piste] Säieturvallinen ohjelmakirjasto lupaa, että kirjaston rutiineja (funktioita) voi kutsua
useammasta säikeestä ilman lukituksia (kirjasto itse pitää huolen siitä, että rutiinit toimivat
luvatulla tavalla riippumatta yhtäaikaisten kutsujen määrästä).

(d) [1 piste] Säikeitä käyttävässä ohjelmassa voi olla käytössä vain yksi lukko (mutex).
(e) [1 piste] Rinnakkaisessa ohjelmoinnissa monitori on rakenne, joka tutkii ovatko säikeet men-
neet jumiin (deadlock).
4. Kerro lyhyesti mitä seuraavat asiat ovat? Ap.

(a) [2 pistettä] Mitä on GPU (Graphics Processing Unit) laskenta? Miksi sen voidaan sanoa
olevan massivisen rinnakkaista?

(b) [2 pistettä] rw-lukko (read-write lock). Miten toimii? Missä tilanteissa sitä tyypillisesti voi
käyttää rinnakkaisessa ohjelmassa?

TIE-02500 Rinnakkaisuus tentti 12.5.2017 sivu2 /2


Käytämme evästeitä

Tämä sivusto käyttää evästeitä, mukaanlukien kolmansien puolten evästeitä, vain sivuston toiminnan kannalta välttämättömiin tarkoituksiin, kuten asetusten tallentamiseen käyttäjän laitteelle, käyttäjäistuntojen ylläpitoon ja palvelujen toiminnan mahdollistamiseen. Sivusto kerää käyttäjästä myös muuta tietoa, kuten käyttäjän IP-osoitteen ja selaimen tyypin. Tätä tietoa käytetään sivuston toiminnan ja tietoturvallisuuden varmistamiseen. Kerättyä tietoa voi päätyä myös kolmansien osapuolten käsiteltäväksi sivuston palvelujen tavanomaisen toiminnan seurauksena.

FI / EN