M1.F1: Concurrency & Parallelism Flashcards
Vad är concurrency?
När två eller flera saker till synes (nästan) händer samtidigt
Vad är concurrency programming?
När man får två eller flera tasks att köras samtidigt, delandes på datorns CPU
Vad är en task?
En enhet av program som kan köras concurrently med andra enheter av programmet
Vad är parallel programming?
När två eller flera tasks körs exakt samtidigt - delar inte samma CPU
Vad händer när ett program startas?
Operativsystemet skapar en process och får ett ID och ett memory space
Vad består en process av? (5 punkter)
- Programinstruktioner i maskinspråket
- Stack memory (call stack) - för att hålla koll på aktiva metoder
- Ett heap memory
- En program counter (register)
- Andra resurser, säkerhetsinformation, information om processtillstånd
Hur isoleras en process i OS?
Genom att tilldelas sin egna address space
Delar olika processer åtkomst till varandras memory space?
Nej
Hur kommunicerar processer med varandra?
Genom att skicka meddelanden, Inter-Process Communication (IPC)
Vad hanterar IPC?
Operativsystemet
Vad delar alla trådar inom samma process?
Address space och samma programkod och data (global)
Vad kan man säga om både processer och trådar?
Båda är enheter av körning (execution)
Vad är en process?
Körning av ett program, isolerat från andra processer, dvs körs i sitt egna memory space
Hur hör en tråd samman med en process?
Den körs inom address space:en för en process och kör hela eller delar av ett program och delar processens memory space.
Hur kan man bryta ner en process till mindre units av execution?
Genom att använda flera trådar i en applikation
Vad är en task?
En enhet av arbete/uppgifter som ska schemaläggas/utföras.
Hur kan man implementera concurrency?
Både via processer och trådar.
Vad kan man ge som exempel på concurrency?
Köra flera program samtidigt på en dator.
Hur kan man dela upp processerna i en applikation?
I sub-processer.
Vilka processorer kan concurrency användas på?
Enkärniga och flerkärniga.
Hur uppnår man concurrency på en enkärning processor?
Genom time-slicing
Ge 2 exempel på typer av concurrency
Multithreading och parallel programming
Vad innehåller en concurrent application?
Två eller flera processer/trådar som jobbar tillsammans för att utföra en task
Vad kan man kalla en enskild process i en concurrent application?
Sequential application
Vad är en sequential application och hur många trådar har den?
En sekvens av uttryck som exekveras en efter en. Den har en tråd.
Vad hur många trådar har en concurrent application?
2 eller fler.
Hur sker kommunikation mellan processer?
Genom delade variabler eller genom att skicka meddelanden.
Hur kan man uppnå parallelism i en applikation?
Genom att dela upp applikationen i mindre tasks som kan exekveras parallellt.
Vad behöver man för att kunna uppnå parallelism?
Flera processenheter, flera kärnor eller flera CPUs.
Vad är skillnaden på ett parallelism och ett concurrency?
Parallelism: Två eller flera tasks utförs simultant, dvs två applikationer körs helt parallellt i separata processorer
Concurrency: Två eller flera tasks gör framsteg samtidigt. Processorn delar sin tid för programmen med så korta intervaller att upplevs att köras samtidigt.
Kan man uppnå både concurrency och paralellism i en enkärnig CPU?
Concurrency: Ja Parallelism: Nej
När uppstår concurrency, inom datavetenskap?
När processer (program) och trådar (delar av en applikation) körs samtidigt.
Kan parallelism anses vara en form av concurrency?
Ja
Vad är poängen med concurrency?
- Att hantera flera saker som händer samtidigt.
- Skapa strukturer som gör flera saker samtidigt, men inte nödvändigtvis simultant
Är målet med concurrency parallelism?
Nej