Tentafrågor - Teoridelarna (WIP) Flashcards

1
Q

Vad är asynchronous programming?

A

En form av parallellprogrammering som låter en uppgift köras separat från maintråden. När uppgiften är färdig notifieras den kallande tråden om huruvida uppgiften avslutades eller misslyckades.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Är asynchronous programming beroende av trådar?

A

Nej, asynchronous programming kan användas med en single-threaded-modell. Då utförs den asynkrona uppgiften interleaved (överlappande).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vad är race condition?

A

När trådar har okontrollerad åtkomst till delade resurser, vilket orsakar felaktik output och korrupt data. Till exempel writing och reading händer i fel ordning.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad är livelock?

A

Livelock uppstår när två eller flera trådar kontinuerligt upprepar samma interaktion som svar på förändringar i andra trådar utan att göra framsteg.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vad är en atomic (atomär) operation?

A

En operation som utförs som en enhet av arbete utan interference från andra trådar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vad är mutual exclusion?

A

Att bara en tråd får vara i sin kritiska sektion åt gången

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad är busy waiting?

A

När en process eller tråd upprepat testar ett villkor tills det blir sant

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Vad är en trådpool och varför är den bra att använda?

A

En trådpool använder en “pool” av trådar som kan återanvändas för flera tasks. Det är bra att använda eftersom att det tar CPU-kraft att skapa och hantera nya trådar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vilka fyra villkor måste vara uppfyllda för att deadlock ska kunna uppträda?

A
  1. Mutual Exclusion: Två eller fler resurser kräver mutual exclusion.
  2. Hold and wait: En tråd håller minst en resurs åt gången och väntar på att införskaffa fler resurser som hålls av andra trådar
  3. No preemption: Resursen kan endast släppas frivilligt av tråden efter körning
  4. Circular wait: Ett set av trådar väntar på varandra på ett cirkulärt sett, ex T1 är beroende av T2 som är beroende av T3 som är beroende av T1, vilket skapar en cirkulär relation mellan trådarna och de kommer behöva vänta för alltid för att få köras
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Producer-Consumer-modellen följer ett antal regler som ligger till grund för synkronisering mellan trådarna. Lista minst tre regler som skall betraktas vid synkronisering i en sådan modell.

A
  1. Producern och Consumern skall inte vara i buffern samtidigt
  2. Producern ska inte stoppa in något i buffern om den är full
  3. Consumern ska inte hämta något ur buffern om den är tom
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vad är deadlock?

A

En situation där två eller fler trådar blockeras eftersom att varje tråd håller i en delad resurs och väntar på en annan delad resurs som hålls av en annan tråd.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

En semafor har två attribut, ett värde s och en kö, samt tre metoder; initialize, p() och v():
Beskriv vad värdet s används för; vad händer när s > 0, s == 0, s < 0.

A

s > 0: Det finns nycklar att hämta i semaforen
s == 0: Det finns inga nycklar att hämta i semaforen, om en tråd försöker hämta en nyckel kommer den att placeras i signalkön
s < 0: Det finns trådar i signalkön som väntar på att få hämta en nyckel

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

En semafor har två attribut, ett värde s och en kö, samt tre metoder; initialize, p() och v():
Beskriv vad som händer när p() anropas och vad som då händer med s.

A

När p() anropas (aqquire i java) hämtar en tråd en nyckel och värdet för s dekrementeras; det finns nu en mindre nyckel tillgänglig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

En semafor har två attribut, ett värde s och en kö, samt tre metoder; initialize, p() och v():
Beskriv vad som händer när v() anropas och vad som då händer med s.

A

s() anropas (release i java) när en tråd ska släppa en nyckel. Värdet för s inkrementeras; det finns nu en (till) nyckel tillgänglig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Beskriv vad syftet med en binär semafor är och vilket värde den skall initieras till om en resurs är tillgänglig redan från början

A

Syftet är att kunna skapa mutual exclusion och den skall initieras med värde 1 om en resurs är tillgänglig från början.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vad händer om en semafor initieras med värde 0 och ge ett praktiskt exempel där den kan användas?

A

Om en semafor initieras med värde 0 finns inga nycklar tillgängliga och en tråd som försöker tillskansa sig en nyckel sätts i kön tills en annan tråd har släppt en nyckel. Ett exempel på detta är en consumer som väntar på att en producer ska producera och sedan släppa en consumernyckel.

17
Q

Vad händer om en semafor initieras med värde 1 och ge ett praktiskt exempel där den kan användas?

A

Om en semafor initieras med värde 1 finns det en nyckel tillgänglig för en tråd direkt efter initiering. En semafor som initieras med värde 1 är vanligtvis en binär semafor som kan användas för att uppnå mutual exclusion.

18
Q

Vad kan man använda för att ett kodblock skall exekveras atomärt?

A

Göra metoden syncronized, lägga kodblocket i ett synchronizedblock med ett mutexobjekt, använda reentrantlock (en klass) eller använda en binär semafor.

19
Q

Vilka attribut har en semafor och vad är syftet med dem?

A

ett värde s och en kö. s håller värdet för antalet tillgängliga nycklar eller antalet trådar i kön. Kön håller blockerade trådar som väntar på att få tillgång till en nyckel.

20
Q

Vilken eller vilka metoder hos en semafor måste köras atomärt?

A

p() och v()

21
Q

Monitorer: Vad är en condition variable?

A

En mekanism som tillåter en tråd att fortsätta sin exekvering först när ett villkor är sant.

22
Q

Vilka metoder av vilket objekt kan användas för att utnyttja condition variables i java?

A

wait(), notify(), notifyAll() kan användas och kallas på genom låsobjektet/mutexobjektet.

23
Q

Monitorer är mer strukturerade en semaforer för de inkapslar tre saker, vilka och hur?

A
  1. Data. Monitoren kräver privata variabler som bara är tillgängliga i monitoren
  2. Metoder, som har tillgång till delade resurser är också i monitoren.
  3. Synkronisering - vilket görs genom condition variables samt wait() och signal()-funktionerna.
24
Q

En Writer-Reader-modell följer ett antal policyregler för synkronisering mellan trådar. Lista minst tre viktiga regler som skall bemötas vid synkronisering.

A
  • Flera readers kan få tillgång till resursen simultant
  • Writer och reader kan inte få tillgång till resursen samtidigt.
  • Writers kan både skriva och läsa data
  • Readers kan bara få tillgång till den delade datan i read-only mode.
  • Bara en writer åt gången får skriva.
  • Om en tråd skriver, får ingen annan tråd läsa resursen.
  • Om minst en tråd läser får ingen writer skriva