UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

INF3140 Modeller for parallellitet INF3140/4140: Låser og Barrierer

UNIVERSITETET I OSLO

INF4140: Låser og Barrierer (Locks and Barriers)

UNIVERSITETET I OSLO

INF3140 Modeller for parallellitet INF3140/4140: Programanalyse

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

UNIVERSITETET I OSLO

Informasjon Eksamen i IN1000 høsten 2017

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

INF3140 Modeller for parallellitet INF3140/4140: Monitorer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

INF4140 MODELLER FOR PARALLELLITET. PMA-gruppen. Institutt for informatikk Universitetet i Oslo.

UNIVERSITETET I OSLO

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

UNIVERSITETET I OSLO

Informasjon Prøveeksamen i IN1000 høsten 2018

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1 JK-flip-flop (Total vekt 20%)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Finne ut om en løsning er helt riktig og korrigere ved behov

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Faglig kontakt under eksamen: Orestis Gkorgkas

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Kort notat om parallellstyring IN147

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

UNIVERSITETET I OSLO

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

ALGORITMER OG DATASTRUKTURER

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: December 16th. 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 11 sider. Vedlegg: INF3140/4140 Models of Concurrency (Modeller for parall Ingen Tillatte hjelpemidler: Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Først noen generelle råd og bemerkninger: Oppgavesettet består av fire uavhengige deler. Det er mange oppgaver og dermed viktig at du disponerer tiden godt. Poengene angitt på hver del antyder hvor mye vekt de forskjellige delene vil bli tillagt ved sensuren. Totalt kan du oppnå 100 poeng for denne besvarelsen. Merk at ikke alle oppgaver teller like mye. Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre dine egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din. Legg vekt på å gi korte og klare forklaringer. (Fortsettes på side 2.) Lykke til!

Eksamen i INF3140/4140, December 16th. 2005 Side 2 Oppgave 1 Fairness (15 poeng) I denne oppgaven skal vi se på ulike parallell-eksekveringer av følgende setningslister: S1 : <await x == 0> ; b = false; S2 : while(b) < x = x - 1 >; S3 : while(b) { if (x < 0) x = -x; S4 : while(b) {< await (x < 0) >; x = -x; Alle svar skal begrunnes. 1a (10 poeng) Gitt programmet: int x = 1; bool b = true; co S1 S2 oc; 1. Vil eksekveringen av S1 og S2 interferere med hverandre? 2. Kan vi garantere terminering av dette programmet dersom skeduleringsstrategien er svakt fair? Hva hvis strategien er sterkt fair? 1b (5 poeng) 1. Gitt programmet: int x = 1; bool b = true; co S1 S2 S3 oc; Kan vi nå garantere terminering dersom skeduleringsstrategien er svakt fair? Hva hvis strategien er sterkt fair? 2. Vil følgende program terminere dersom skeduleringsstrategien er sterkt fair? int x = 1; bool b = true; co S1 S2 S4 oc; (Fortsettes på side 3.)

Eksamen i INF3140/4140, December 16th. 2005 Side 3 Løsning a 1. Setningene interferer ikke. Kritiske referanser er x i S1 (oppdateres atomisk) og b i S2, men disse tilfredstiller At-Most-Once Property. 2. Vi kan ikke garantere terminering hverken med svak eller sterk fairness. Betingelsen x == 0 blir sann etter en gjennomgang av løkka i S2, men vi har ingen garanti for at S1 evaluerer betingelsen akkurat da. Dersom løkka i S2 får gå en gang til vil ventebetingelsen i S1 forbli usann. Ventebetingelsen i S1 er altså ikke sann og forblir sann helt til S1 ser dette (svakt fair) eller er sann uendelig ofte (sterkt fair). b 1. Her kan vi garantere terminering med sterk fairness, fordi x == 0 er sann uendelig ofte. Svak fariness kan ikke garantere terminering fordi x == 0 ikke nødvendigvis forblir sann frem til S1 utføres. 2. Her kan vi ikke garantere terminering. Det finnes eksekveringer der await-betingelsen i S4 aldri slår til. (En co....oc blokk terminerer ikke før alle grenene har terminert.) Ta følgende eksempel: S4 venter på await (x < 0) Løkka i S2 utføres en gang S1 setter b til false S2 avsluttes S4 vil nå aldri terminere. Programmet kan imidlertid terminere, f.eks. hvis innmaten av løkka i S2 blir utført etter at b er blitt false. (Fortsettes på side 4.)

Eksamen i INF3140/4140, December 16th. 2005 Side 4 Oppgave 2 Parvis synkronisering (20 poeng) Anta at vi ønsker å programmere parvis synkronisering mellom to og to prosesser. Den første prosessen som ankommer en venteplass venter på neste prosess før begge forsetter. Den tredre prosessen som ankommer venter på den fjerde prosessen o.s.v. Anta felles variable: bool lock = true, go = false; int count = 0; Følgende kode eksekveres i hver prosess. Låser benyttes til synkronisering. < await (lock) lock = false; > count = count + 1; if (count == 1) { lock = true; < await (go) go = false; > else { count = 0; go = true; lock = true; 2a Feilsøking (10 poeng) Forklar hva som er feil i koden over og hvorfor det er feil. 2b Endring av kode (10 poeng) Gjør endringer i koden slik at den blir korrekt med henhold på feilen(e) du fant i forrige deloppgave. (Fortsettes på side 5.)

Eksamen i INF3140/4140, December 16th. 2005 Side 5 Løsning Deloppgave a Race condition ved følgende situasjon: prosess 1 venter på setningen await(go). Prosess 2 setter så både go og lock til true. Nå kan en tredje prosess starte eksekvering og gå forbi prosess 1 fordi go er true. Altså er andre og tredje prosess synkronisert, mens prosess 1 henger igjen. Deloppgave b Løsningen er å frigi lock etter < await (go) go = false; > istedenfor sist i else-grenen: < await (lock) lock = false; > count = count + 1; if (count == 1) { lock = true; < await (go) go = false; > lock = true; else { count = 0; go = true; // lock = true; Nå er maksimum én prosess aktiv om gangen, og alle vedlikeholder (lock go). (Fortsettes på side 6.)

Eksamen i INF3140/4140, December 16th. 2005 Side 6 Oppgave 3 Skrivere (35 poeng) Vi skal i denne oppgaven implementere synkronisering av n prosesser P[1 : n] som deler tilgang til to skrivere s1 og s2. Når P[i] ønsker å skrive ut, kalles request(int &i), der returparameteren i identifiserer en ledig skriver (gitt som heltall 1 eller 2). Når utskriftsjobben er ferdig kalles release(int i), der parameteren angir hvilken skriver som blir frigjort. 3a Semafor (10 poeng) Implementer request og release ved hjelp av semaforer. 3b Monitor (20 poeng) Implementer request og release i en monitor. Løsningen skal forhindre sniking. Anta Signal and Continue-disiplin og som vanlig at signal og wait utgjør en FIFO-signalleringsstrategi. 3c Invariant (5 poeng) Formuler en invariant for monitoren i forrige deloppgave. (Fortsettes på side 7.)

Eksamen i INF3140/4140, December 16th. 2005 Side 7 Løsning Det finnes mange alternative løsningsforslag til denne oppgaven. Vi ser på to av dem. Deloppgave a Alternativ 1: sem s = 2; # skrivere sem e = 1; # mutex bool t[1:2] = (true, true); # tilgjengelighet proc request(int &i){ P(s); P(e); if (t[1]) i = 1; else i = 2; t[i] = false; V(e); proc release(int i) { P(e); t[i] = true; V(e); V(s); Alternativ 2: sem s = 2; # skrivere sem e = 1; # mutex bool busy1 = false, busy2 = false; proc request(int &i) { P(s); P(e); if (not busy1) { busy1 = true; i = 1; else { busy2 = true; i = 2; V(e); proc release(int i) { (Fortsettes på side 8.)

Eksamen i INF3140/4140, December 16th. 2005 Side 8 P(e); if (i == 1) { busy1 = false; else { busy2 = false; V(e); V(s); Deloppgave b Alternativ 1: Vi har en array t[1:2] som angir om skriverne kan akseptere jobber fra nye prosesser som ankommer request. I release settes t[i] til sann dersom det ikke finnes noen som venter på monitorkøen. Skriveren gjøres ikke tilgjengelig dersom noen venter (t[i] forblir false), men released[i] settes til true. Dermed blir skriveren overført til den første prosessen som venter på køen. monitor Skrivere { cond s; bool t[1:2] = (true, true); # tilgjengelighet bool released[1:2] = (false, false); procedure request(int &i) { if (!t[1] &&!t[2]) { wait(s); if (released[1]) i = 1; else i = 2; released[i] = false; else { if (t[1]) i = 1; else i = 2; t[i] = false; procedure release(int i) { if (empty(s)) t[i] = true; else { released[i] = true; signal(s) (Fortsettes på side 9.)

Eksamen i INF3140/4140, December 16th. 2005 Side 9 Alternativ 2: Monitorkøen er FIFO, men vi må forhindre at nye prosesser sniker foran prosesser på monitorkøen etter en release-operasjon. I tillegg til busy1 og busy2 som brukt i forrige oppgave bruker vi en variabel delay som angir om nye prosesser må vente eller ei. Signalleringen sikrer at prosesser bare vekkes når de kan forsette. monitor printer { cond queue; bool busy1 = false, busy2 = false, delay = false; procedure request() { int res; if (delay) wait(queue); if (not busy1) { busy1 = true; res = 1; else { busy2 = true; res = 2; if (busy1 and busy2) delay = true; return(res); procedure release(i) { if ( i == 1) busy1 = false; else busy2 = false; if empty(queue) delay = false; else signal(queue); Deloppgave c Invariant: Alternativ 1: ( empty(queue) ( t[1] t[2])) Alternativ 2: (empty(queue) ( released[1] released[2])) (empty(queue) delay = (busy1 busy2)) ( empty(queue) delay) (Fortsettes på side 10.)

Eksamen i INF3140/4140, December 16th. 2005 Side 10 Oppgave 4 CSP (30 poeng) 4a Modellering av hurtigmat-sjappe (15 poeng) Rudolf driver en hurtigmat-sjappe. Han er eneste ansatt og betjener kunder forløpende. Sjappa har kun to retter på menyen: pølse, med ketchup eller uten ketchup pommes frites med Dijon-sennep Begge rettene koster kr 20. For enkelhets skyld antar vi at Rudolf betjener kun én kunde av gangen og at hver enkelt kunde bestiller maksimalt én rett fra menyen. 1. Lag en CSP-prosess RUDOLF som modellerer selve hurtigmat-sjappa. 2. Lag en prosess KUNDER som modellerer en serie av kunder. Hver enkelt kunde bestiller en av rettene og betaler. 3. Lag en prosess SJAPPE som i tillegg til Rudolf også modellerer hans hund Passopp. Passopp gjør ikke noe annet enn å si vov og ingen bryr seg om ham. 4b Sammenlinging av ulike former for parallell (15 poeng) La P 1 og P 2 være vilkårlige CSP-prosesser og definer så følgende tre prosesser Q 1, Q 2 og Q 3 : Q 1 = P 1A B P 2 Q 2 = P 1 P 2 Q 3 = P 1 P 2 C Besvar følgende spørsmål og forsøk å gjøre kravene dine så generelle som mulig. Merk at du ikke kan anta noe om prosessene P 1 og P 2. 1. Finnes det et krav til A og B som gjør at Q 1 og Q 2 oppfører seg likt? 2. Finnes det et krav til A, B og C som gjør at Q 1 og Q 3 oppfører seg likt? 3. Finnes det et krav til C slik at Q 2 og Q 3 oppfører seg likt? (Fortsettes på side 11.)

Eksamen i INF3140/4140, December 16th. 2005 Side 11 Løsning Deloppgave a RUDOLF = pølse R KETCHUP pomfri TA BETALT R KETCHUP = med ketchup TA BETALT uten ketchup TA BETALT TA BETALT = kr20 RUDOLF KUNDER = pølse K KETCHUP pomfri BETAL K KETCHUP = med ketchup BETAL uten ketchup BETAL BETAL = kr20 KUNDER PASSOPP = vov PASSOPP SJAPPE = RUDOLF PASSOPP Deloppgave b 1. Ja, A B =. 2. Ja, A B = C. 3. Ja, C =.