M1.F1: Multithreading Flashcards
Vad är multitasking?
När flera program verkar* köras samtidigt
*från engelskans seem to
Vad är multithreading?
En form av multitasking inuti en applikation
Vad är en tråd?
Ett enstaka sekventiellt kontrollflöde inom ett program/oberoende enhet av körning inom en process
Vad kan man också kalla en tråd?
Light-weight process
Vilket av dessa har en tråd och vilket har den inte:
- Egen stack
- Egen adress space
En tråd har egen stack, men inte egen adress space.
Nämn 2 fördelar med multithreading:
- förbättrad prestanda
- förbättrad responsivitet/svarstid
Förklara trådar i relation till concurrently och parallel:
Trådar körs självständigt med concurrently. De kan vara parallela om de körs på olika CPUs.
Vad delar trådar på?
Processresurser, inklusive minne.
Vad har en tråd som sitt eget (dvs inte delat)?
Stack memory där program counter och lokal data lagras
Nämn fyra nackdelar med multithreading:
- Det kan bli komplext
- Svårt att debugga
- Resurskrävande. Många trådar tar upp mycket minne.
- Det tar mycket CPU-tid att skapa, ta bort och ändra kontext (context-switch) för trådar
Ge fyra exempel på typiska tillstånd en tråd kan befinna sig i.
- Ready
- Running/Active
- Blocked/waiting
- Terminated
Varför är det tids- och prestandakrävande för CPUn att växla mellan trådar?
För att den måste lagra tillståndet för en process eller tråd för att kunna återställa och återuppta den igen.
Varför är en thread-switch “billigare” än en process-switch?
För att trådarna delar samma minne
Nämn 5 fördelar med multithreading:
- Många real-world situationer innehåller concurrency
- Man utnyttjar multiprocessor/multikärnehårdvara.
- Förbättrad processorkraft (throughtput)
- Förbättrad svarstid
- Bra för komplexa beräkningar
Nämn 3 situationer där multithreading passar:
- Ordbehandlare (autocorrect samtidigt som man skriver)
- Förbättra svarstiden på en hemsida, requests kan processeras av olika trådar utan att vänta på att tidskonsumerande trådar ska avsluta
- Om man har en tidskrävande beräkning