M2.F3: Synkronisering Flashcards

1
Q

Hur kan man implementera concurrency?

A

Med processer eller trådar

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

Vad sparas i heap memory?

A

Ett objekts data

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

Vad sparas i stack memory?

A

Referens till objekt och primitiva datatyper

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

Vad delar trådar på?

A

Globala variabler, statiska objekt och objekt i heapen

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

Vad delar trådar inte på?

A

Lokala variabler.

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

Vad har en tråd eget av?

A

Program counter och egen call stack

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

Var körs trådar?

A

I en process adress space

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

När kan ett problem uppstå?

A

När två trådar försöker ändra värdet på en delad resurs samtidigt

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

Hur kan trådar kommunicera med varandra?

A

Genom delade variabler eller objekt och genom att skicka/ta emot trådar med metodkall.

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

Varför är det komplicerat för trådar att kommunicera med varandra?

A

För de körs endast inom tiden de får av CPUn och en tråd kanske inte hinner klart en operation innan CPUn byter till en annan tråd.

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

Hur lagras en lokal variabel av objekttyp?

A

Referensen sparas i stacken och objektdatan sparas i heapen.

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

Varför är en metod trådsäker om den endast skapar nya objekt (istället för att använda befintliga)?

A

För att varje tråd skapar en ny instans av objektet och referensen till det sparas på trådens lokala stack (som inga andra trådar kommer åt)

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

Vad kan man säga om två trådar som startas direkt efter varandra?

A

Man kan inte säkerställa vilken som kommer starta eller avsluta först.

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

Hur fungerar context switch?

A
  • En tråd får en förbestämd tidsperiod av processorn

- När tiden gått ut sparas trådens kontext och processorn går vidare till nästa tråd

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

Väntar processorn på att en tråd ska bli klar med sin operation innan den context switchar? (by default)

A

Nej.

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

Vad är interleave?

A

Det innebär att en operation kan bestå av flera steg och interleave sker när två trådars steg överlappar varandra.

17
Q

Vad är thread interference?

A

Ett tillstånd som uppstår när mer än en tråd körs simultant och försöker komma åt samma data

18
Q

När sker thread interference?

A

När två operationer i två olika trådar men som använder samma data överlappar (intereleave)

19
Q

Vad är anledningen till att interference uppstår?

A

Koden är inte skriven trådsäkert

20
Q

Vad kan hända med data om två eller flera trådar har tillgång till den?

A

Den kan bli korrumpterad

21
Q

Vad garanterar non-interference som safety property?

A

Att en atomisk handling i en tråd inte ändrar en delad resurs som är tillgänglig för en annan tråd som befinner sig i sin kritiska sektion

22
Q

Hur kan man undvika interference? (4st)

A
  • Genom att deklarera en metod syncronized i java eller använda lås i C#
  • Deklarera variabler som final eller volatile i java (const, readonly i C#)
  • använda trådlokala variabler
  • Använda atomiska operationer (mutual exclusion)
23
Q

Vad är en atomisk operation?

A

En operation som körs av en enda enhet av arbete utan iblandning från andra trådar (begränsa tillgängligheten för multipla trådar)

24
Q

Vad är race condition?

A

När trådar kan nå samma resurser kan reading och writing ske i fel ordning och orsaka felaktig output och korrupt data

25
Q

Hur kan starvation och deadlock upstå?

A

När en tråd försöker komma åt en delad resurs och en annan tråd “håller” resursen utan att släppa den.

26
Q

Vad är synkronisering?

A

Processen för att se till att trådar fungerar på ett sätt där delade resurser och data används säkert.

27
Q

Vad kan man säga om en atomic action i förhållande till interleaving?

A

Den körs helt utan interleaving/överlappning (och därmed utan interference)

28
Q

Kan en atomisk operation stanna mitt i?

A

Nej. Antingen händer den helt eller inte alls.

29
Q

Hur uppnår vi en atomic action?

A

Genom att säkerställa att bara en tråd i taget har tillgång till det kodblocket

30
Q

Hur kan man implementera en atomic action?

A

Genom att använda Critical Sections Protocols (ex. locks eller semaforer)