Tentafrågor - Teoridelarna (WIP) Flashcards
Vad är asynchronous programming?
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.
Är asynchronous programming beroende av trådar?
Nej, asynchronous programming kan användas med en single-threaded-modell. Då utförs den asynkrona uppgiften interleaved (överlappande).
Vad är race condition?
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.
Vad är livelock?
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.
Vad är en atomic (atomär) operation?
En operation som utförs som en enhet av arbete utan interference från andra trådar.
Vad är mutual exclusion?
Att bara en tråd får vara i sin kritiska sektion åt gången
Vad är busy waiting?
När en process eller tråd upprepat testar ett villkor tills det blir sant
Vad är en trådpool och varför är den bra att använda?
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.
Vilka fyra villkor måste vara uppfyllda för att deadlock ska kunna uppträda?
- Mutual Exclusion: Två eller fler resurser kräver mutual exclusion.
- 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
- No preemption: Resursen kan endast släppas frivilligt av tråden efter körning
- 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
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.
- Producern och Consumern skall inte vara i buffern samtidigt
- Producern ska inte stoppa in något i buffern om den är full
- Consumern ska inte hämta något ur buffern om den är tom
Vad är deadlock?
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.
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.
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
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.
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.
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.
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.
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
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.