Tentin tekstisisältö

TIE-02500 Rinnakkaisuus - 03.10.2016

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
O 084d4aun sw N +

TIE-02500 Rinnakkaisuus

Tentti 3.10.2016

 

 

Tentin vastuuhenkilö: jyke.savia(Ctut.fi

Laskimen käyttö on kiellettyä.

Muista kirjoittaa kaikkiin vastauspapereihin nimesi ja opiskelijanumerosi.

Vastauksessa oleta vastaavasi sellaisen ihmisen esittämää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 — joita yhteen pi

   

5n kaikkea mieleen tulevaa. Muista vastata kaikkiin tehtävän kysymys-
lauseisiin, sillä täysiä pisteitä ei voi saada jos kaikkiin kysyttyihin asioihin ci 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.

 

 

 

 

 

 

 

namespace moduuli (
unsigned int CountDown = 42;

void Vahenna() (
unsigned int TyoKopio =
TyoKopio = TyoKopio — 1;
CountDown = TyoKopio;

CountDown ;

 

 

Ohjelma 1: Vähennysohjelma

+ Ohjelman 1 funktiota Vahenna () kutsuu ohjelman käynnistyksen jälkeen kaksi suoritussäiettä.

Molempien tulisi vähentää muuttujan Count Down arvoa yhdellä, joten odotettu lopputulos on
40. Näin ei ohjelmoijan hämmästykseksi kuitenkaan aina tapahdu.

(a) [3 pistettä] Miksi lopputulos voi ollä väärä? Selosta yksi suoritusketju, jossa odotettu lop-
putulos saadaan ja toinen, joka menee pieleen.

(b) [3 pistettä] Mitä on suoritussäikeiden poissulkeminen? Miten sen avulla ohjelmassa voitaisi-
in varmistaa, että odotettu lopputulos saadaan laskennassa aina? Tee tarvittavat muutokset
ohjelmaan.

sivu 1 /2

Op.
 

2. Kerro lyhyesti mitä seuraavat asiat ovat? 13p.

(a) [1 piste] Miksi rinnakkaisuus on tällä hetkellä ohjelmoinnissa tärkeä aihepiiri (ts. miksi
jokaisen ohjelmoijan tulisi osata rinnakkaista ohjelmointia)?

(b) [1 piste] Suoritussäikeen vuoronnus (scheduling)

(c) [1 piste] Suoritussäikeen nälkiintyminen (starvation)

(d) [1 piste] Mitä on ohjelmointikirjaston säieturvallisuus (thread safety)?

(e) [1 piste] Mikä on aktiivinen olio (active object)?

(£) [1 piste] Minkälainen rinnakkaisuuden hallintamekanismi on futuuri (future) ohjelmointikielis-
sä?

(g) [2 pistettä] Atominen konekäsky. Mihin niitä käytetään? Anna esimerkki tällaisesta käskys-
tä (selosta myös mitä käsky tekee — pelkkä nimi ei riitä)

(h) [2 pistettä] Minkälainen operaatio on Barrier-synkronointi?

(i) [3 pistettä] Semaforilla voi luonnin yhteydessä olla alkuarvona esimerkiksi nolla, yksi tai

viisi. Mihin käyttötarkoitukseen kullakin alkuarvolla alustettua semaforia voi käyttää (mikä
on oletettu käyttötarkoitus arvon perusteella)?

w

. [6 pistettä] Mikä on POSIX säiekirjaston ehtomuuttuja? Mitä oheinen ohjelmakoodi (ohjelma 2)
tekee? Missä koodissa ilmenee synkronoituminen toisen säikeen kanssa? Miksi pthread cond wait ()-
kutsu on while-silmukassa?

 

1 | truct JononKoko (

2 pthread mutex t mutex;

3 pthread cond t cond;

4 int val;

51):

6

7 | JononKoko x = ( PIHREAD MUTEX INITIALIZER,

8 PTHREAD COND INITIALIZER, O );
9

10 | void varaaPaikkaJonossa() (

11 if ( pthread mutex lock( &x.mutex ) != 0 ) (
12 perror("mutex lock");

13 exit (1);

14] )

15 x.val--;

16 while( x.val < 0 )

17 if ( pthread cond wait( &x.cond, &x.mutex ) != 0 ) (
18 perror("cond wait");

19 exit (1);

20 ]

21 | /x* ... muuta koodia ... */

 

 

 

Ohjelma 2: Ehtomuuttuja

TIE-02500 Rinnakkaisuus tentti 3.10.2016 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