Tentafrågor - Sant/Falskt Flashcards
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.
Sant
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.
Sant
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
Falskt
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.
Sant
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.
Sant
För att skydda en kritisk sektion kan man använda sig av en bounded buffer tillsammans med en räknarsemafor (counting semaphore)
Falskt
Mutual exclusion (ME) innebär att critical section (CS) behöver exekveras utan avbrott och endast av en tråd åt gången
Sant
“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
Falskt
“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
Falskt
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
Sant
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.
Sant
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
Falskt
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
Sant
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
Sant
Ett av de fyra villkor som samtidigt ska råda för att deadlock ska inträffa är starvation
Falskt
Asynkronprogrammering kräver inte flertrådning medan vid concurrency är det flera trådar som kör samtidigt
Sant
“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
Sant
Mutual exclusion låter bara en tråd i taget att gå in i en kritisk sektion och därmed förhindra deadlock
Falskt
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
Sant
En “counting” semafor kan ha ett värde som är noll eller större än noll men aldrig negativt
Falskt
Ett asynkront anrop startar direkt men resultatet blir tillgänglig till den anropade koden när uppgiften (the task) är färdig
Sant
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).
Sant
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.
Falskt
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.
Falskt
Parallelism är en form av concurrency som kan implementeras på såväl en-kärninga som flerkärninga processorer
Falskt
Asynkronprogrammering behöver inte trådar (förutom huvudtråden)
Sant
När en applikation stängs väntar huvudtråden inte på att bakgrundstrådar avslutar sina uppgifter och exekvera färdigt.
Sant
Varje monitor objekt är associerat med ett lås och en condition variabel
Sant
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
Mutual Exclusion löser problemet med Deadlock men Race Condition kan fortfarande inträffa
Falskt
Man kan aldrig vara säker på i vilken ordning trådar får exekveras när flera trådar exekveras samtidigt
Sant
En binär semafor, en mutex och en monitor kan alla skapa mutual exclusion
Sant
Trådpooler jobbar inte asynkront
Falskt
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