Tentafrågor - Sant/Falskt Flashcards

(85 cards)

1
Q

En process är en applikation under körning och har minst en tråd från vilken nya trådar kan skapas. En flertrådad applikation har två eller flera trådar.

A

Sant

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

En process är ett enskilt program (eller applikation) medan en tråd är en del i processen. Varje process har ett separat minnesområde men trådar delar processens minne.

A

Sant

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

När man säger att en tråd blockerar menar man att tråden blockerar alla andra trådar för att den ska kunna gå in i en synkroniserad del av koden

A

Falskt

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

En metod är trådsäker om metoden kan köras samtidigt av flera trådar under Mutual Exclusion och utan att delade resureser modifieras på ett okontrollerat sätt.

A

Sant

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

En kritisk sektion (critical section) i ett program är ett kodavsnitt där det är nödvändigt att inte låta flera trådar ha tillgång till delad data samtidigt.

A

Sant

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

För att skydda en kritisk sektion kan man använda sig av en bounded buffer tillsammans med en räknarsemafor (counting semaphore)

A

Falskt

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

Mutual exclusion (ME) innebär att critical section (CS) behöver exekveras utan avbrott och endast av en tråd åt gången

A

Sant

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

“Safety” är en egenskap som betyder att en tråd någon gång kommer att göra framsteg, men vi vet inte när, dvs tråden kommer inte svälta

A

Falskt

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

“Liveness” är en egenskap som betyder att koden aldrig ger fel resultat vilket i sin tur innebär att en delad resurs alltid innehåller rätt värde

A

Falskt

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

Lokala variabler i en metod som körs av flera trådar sparas i trådarnas stackminne och därför har varje tråd sin egen uppsättning av lokala variabler och deras aktuella värden inte delas mellan trådar

A

Sant

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

För att en kodblock skall utföras atomärt (atomic) kan ett lås användas. Låset ger mutual exclusion. Monitorer, mutexer och binära semaforer kan användas som lås.

A

Sant

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

Ett mutex objekt och en binär semafor har minst en gemensam egenskap att båda fungerar som lås och låset kan bara släppas av den tråd som anskaffat det

A

Falskt

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

En tråd som sover för en viss tidsperiod (genom Thread.sleep) måste vänta på CPU att exekvera igen när tiden har gått

A

Sant

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

Asynkronprogrammering är mest lämplig när man har flera oberoende uppgifter (Tasks) då flera uppgifter kan göras samtidigt utan att vänta på att en uppgift är klar innan nästa kan börja

A

Sant

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

Ett av de fyra villkor som samtidigt ska råda för att deadlock ska inträffa är starvation

A

Falskt

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

Asynkronprogrammering kräver inte flertrådning medan vid concurrency är det flera trådar som kör samtidigt

A

Sant

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

“Interleave” innebär att en operation i t. ex. satsen “i++;” kan exekveras i flera steg och därmed kan interference inträffas i en kritisk sektion som inte är synkroniserad

A

Sant

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

Mutual exclusion låter bara en tråd i taget att gå in i en kritisk sektion och därmed förhindra deadlock

A

Falskt

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

Skillnaden mellan förgrunds- och bakgrundstrådar är att bakgrunddstrådar avbryts även om de inte är färdiga med sina uppgifter när huvudtråden är färdigt och stänger av applikationen

A

Sant

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

En “counting” semafor kan ha ett värde som är noll eller större än noll men aldrig negativt

A

Falskt

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

Ett asynkront anrop startar direkt men resultatet blir tillgänglig till den anropade koden när uppgiften (the task) är färdig

A

Sant

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

För att undvika race condition och interference i en operation med delad resurs behöver operationen göras atomärt (atomic). En operation som körs som en sammanhållen enhet eller odelbart kallas atomic (atomära).

A

Sant

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

En bounded buffer kan vara en array av variabler eller en samling (ex. ArrayList) av variabler men den kan bara användas tillsammans med semaforer. Monitorer kan inte användas av en boundedbuffer.

A

Falskt

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

En trådpool sägs vara non-blocking då trådar i poolen alltid är igång och aldrig väntar på att en uppgift ska bli klar.

A

Falskt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Parallelism är en form av concurrency som kan implementeras på såväl en-kärninga som flerkärninga processorer
Falskt
26
Asynkronprogrammering behöver inte trådar (förutom huvudtråden)
Sant
27
När en applikation stängs väntar huvudtråden inte på att bakgrundstrådar avslutar sina uppgifter och exekvera färdigt.
Sant
28
Varje monitor objekt är associerat med ett lås och en condition variabel
Sant
29
En mutex-objekt fungerar som en binär semafor men objektet äger låset vilket innebär att låset inte kan släppas av en annan tråd.
Sant
30
Mutual Exclusion löser problemet med Deadlock men Race Condition kan fortfarande inträffa
Falskt
31
Man kan aldrig vara säker på i vilken ordning trådar får exekveras när flera trådar exekveras samtidigt
Sant
32
En binär semafor, en mutex och en monitor kan alla skapa mutual exclusion
Sant
33
Trådpooler jobbar inte asynkront
Falskt
34
Trådpooler ökar prestandan speciellt när antalet trådar som samtidigt skall exekveras är större än antalet kärnor i en flerkärning processor
Falskt
35
Ett bounded buffer-objekt kan användas när två eller flera trådar som konsumerar data vill kommunicera med andra trådar som producerar data
Sant
36
För att deadlock skall inträffa skall fyra villkor vara uppfyllda samtidigt och dessa är: Fairness, bounded wait, race condition och spinning
Falskt
37
En tråd har ett tråd-ID, en programräknare, ett register och ett stackminne
Sant
38
Synkronisering med condition variabler görs i syfte att skapa mutual exclusion
Falskt
39
Mutual exclusion låter bara en tråd i taget att gå in i en kritisk sektion och därmed förhindra race condition
Sant
40
En metod är trådsäker om metoden kan köras samtidigt av flera trådar under Mutual Exclusion utan att den delade resurser modifieras på ett okontrolleras sätt.
Sant
41
Bounded Buffer kan inte användas med en writer-reader-lösning utan bara med producer-consumer-lösningar
Falskt
42
En semafors värde kan bli negativt vilket innebär att det finns trådar som väntar på att få tillstånd till en resurs
Sant
43
Concurrency (samtidigthet) kan på en enkärnig dator endast göras genom "time slicing". Om en dator har två eller fler kärnor, används det fortfarande bara en kärna för concurrency.
Falskt
44
En applikation med 5 trådar blir 5 gånger snabbare om den körs på en dator som har 5 kärnor, jämför med om applikationen körs på en dator med endast en kärna (eller en CPU med en enda processor).
Falskt
45
När ett program laddas upp från en disk till minnet, exekveras det som en process - en process är en instans av en applikation under körning
Sant
46
En nyckelskillnad mellan processer (obs ej processor) och trådar är att flera trådar delar resurser som kan påverka deras status, medan ingen process direkt kan komma in i en annan process minnesområde.
Sant
47
Varje applikation har en huvudtråd. Trådar som skapas av huvudtråden blir barn (children) till huvudtråden
Sant
48
En sekvens av satser som behöver exekveras utan avbrott och endast av en tråd åt gången kallas för Critical Section eller Critical Region
Sant
49
Indeterminism innebär att en applikation med samma indata kan ge olika värden vid olika körningar
Falskt
50
Safety innebär att inget dåligt kommer att hända i applikationen
Sant
51
Liveness är en egenskap som betyder att en tråd någon gång kommer att göra framsteg men vi vet inte när
Sant
52
Liveness betyder att en tråd alltid gör framsteg utan avbrott
Falskt
53
Safety förhindrar alltid Race Condition medan Liveness förhindrar alltid Livelock
Falskt
54
För en tråd som utför anropet Thread.sleep(1000) gäller följande: När denna tid har gått återupptar tråden alltid sin exekvering omgående
Falskt
55
För en tråd som utför anropet Thread.sleep(1000) gäller följande: När denna tid har gått blir tråden körbar igen och när tråden åter är körbar kan den när som helst få chans att fortsätta exekvera
Sant
56
För en tråd som utför anropet Thread.sleep(1000) gäller följande: Tråden förblir blockerad tills den väcks av en annan tråd genom anrop av metoden notify
Falskt
57
För en tråd som utför anropet Thread.sleep(1000) gäller följande: Tråden gör ett uppehåll under en sekund. Tråden blockerar sig under detta tidsintervall vilket innebär att en annan tråd med lägre prioritet kan få chans att exekvera, om det inte finns någon annan körbar tråd med högre prioritet
Sant
58
wait() gör att en tråd avbryter sin exekvering och placeras i en kö
Falskt
59
notify() kan endast anropas av en tråd som äger monitorn
Sant
60
Metoderna wait(), notify() och notifyAll() måste anropas inifrån ett synkroniserat block av kod
Sant
61
När en tråd anropar notify() väcks en väntande tråd; Om väntekön är tom kommer monitorn ihåg signalen, dvs monitorer sparar signalhistoriken
Falskt
62
När en tråd blockeras betyder det att tråden väntar för att gå in i den kritiska sektionen tills en resurs blir tillgänglig
Sant
63
När en tråd blockeras betyder det att tråden blockerar alla andra trådar för att gå in i kritiska sektionen för ett visst antal millisekunder
Falskt
64
När en tråd blockeras betyder det att tråden låser kritiska sektionen för att skapa Mutual Exclusion
Falskt
65
När en tråd blockeras betyder det att tråden måste vänta tills alla andra trådar nått ett visst ställe i koden
Falskt
66
Anta att vid ett Reader-Writer-problem, har vi multipla reader- och multipla writer-trådar. Vi har en bounded buffer med N antal element: När en writer och en reader vill gå in samtidigt i bufferten för att skriva resp. läsa data används två separata semaforer, en för reader-tråden och en för writer-tråden
Falskt (kommentar: Misstänker att påståendet är falskt för att det inte nämner att man behöver en mutex också)
67
Anta att vid ett Reader-Writer-problem, har vi multipla reader- och multipla writer-trådar. Vi har en bounded buffer med N antal element: För att kontrollera writer-trådar att inte skriva när bufferten är full behöver vi en separat räknarsemafor.
Sant
68
Anta att vid ett Reader-Writer-problem, har vi multipla reader- och multipla writer-trådar. Vi har en bounded buffer med N antal element: För att kontrollera reader-trådar att inte läsa när bufferten är tom behöver vi en separat räknarsemafor
Sant
69
Anta att vid ett Reader-Writer-problem, har vi multipla reader- och multipla writer-trådar. Vi har en bounded buffer med N antal element: Vi behöver ha en mutex för att skapa mutual exclusion
Sant
70
En mutex låter endast en tråd komma åt en resurs
Sant
71
En mutex är egentligen en binär semafor
Falskt (men en binär semafor kan användas för ME)
72
En mutex kan endast släppas av den tråd som äger den
Sant
73
En tråd äger ett lås men inte en mutex
Falskt
74
Trådpooler är användbara för att begränsa antalet trådar som samtidigt körs.
Sant
75
En tråd i en trådpool skapas vid behov och tas bort när den är färdig med sin uppgift
Falskt
76
En trådpool är en samling av trådar som bara exekverar asynkrona uppgifter (tasks) i en applikation
Falskt
77
Trådpooler ger bättre prestanda jämfört med att skapa nya trådar hela tiden då att skapa en ny tråd har overhead och kräver allokering av stackminne
Sant
78
En condition variable är ett boolean uttryck som styr om en tråd skall fortsätta exekvera eller vänta
Falskt
79
Condition Synchronization görs inne i en synkroniserad sektion
Sant
80
Vid en bounded buffer kan en producer-tråd blockera så länge bufferten är full, vilket är ett exempel på condition synkronisering
Sant
81
En condition variabel är inte en boolean typ utan en kö där trådar väntar på att ett vilkor blir sant
Sant
82
En bounded buffer är en buffer av strängar som används för att garantera Mutual Exclusion
Falskt
83
En bounded buffer kan också användas för att säkerställa condition synkronisering
Falskt
84
En bounded buffer kan inte användas med en reader-writer-modell men fungerar bra med producer-consumer
Falskt
85
En bounded buffer kan användas när två eller flera trådar vill kommunicera med andra trådar som producerar data
Sant