Esame: Programmazione concorrente thread
Questo insieme di flashcard copre i concetti fondamentali della programmazione concorrente utilizzando i thread, utile per gli studenti di informatica che si preparano all'esame sulla programmazione concorrente.
Quiz(80 domande)
1. Cosa caratterizza un thread rispetto a un processo?
Termini in questo set(80)
Fondamenti dei thread(20)
Cosa sono i thread?
I thread sono unità di esecuzione leggera che condividono lo stesso spazio di memoria in un programma.
Vantaggi dei thread
- Maggiore efficienza - Risposta rapida - Utilizzo migliore delle risorse
Cosa significa programmazione concorrente?
La programmazione concorrente è un paradigma che consente l'esecuzione di più thread contemporaneamente.
Cosa sono i processi?
I processi sono programmi in esecuzione che hanno il proprio spazio di memoria, distinto dai thread.
Thread vs Processo
I thread condividono la stessa memoria, mentre i processi hanno memorie isolate.
Cosa è un thread principale?
Il thread principale è il primo thread creato all'avvio di un programma.
Obiettivo della programmazione concorrente
Ottimizzare l'uso delle risorse di sistema e migliorare le prestazioni delle applicazioni.
Vero o Falso: I thread sono pesanti.
Falso. I thread sono leggeri rispetto ai processi e condividono risorse.
Cosa è il contesto di un thread?
Il contesto di un thread comprende lo stato del thread, inclusi registri e stack.
Esempio di creazione di un thread
In Java: Thread t = new Thread(); t.start();
Cosa è la modalità di esecuzione concorrente?
Consente a più thread di essere eseguiti simultaneamente, migliorando l'efficienza.
Cosa sono le risorse condivise?
Le risorse condivise sono dati o oggetti che più thread possono utilizzare simultaneamente.
Cosa sono i thread daemon?
Thread che eseguono operazioni in background e terminano quando non ci sono più thread attivi.
Cosa è la creazione di un thread?
Il processo di avvio di un nuovo thread nella memoria del programma.
Cosa è il ciclo di vita di un thread?
Include stati come 'nuovo', 'attivo', 'in attesa' e 'terminato'.
Cosa è un thread bloccato?
Un thread è bloccato se è in attesa di una risorsa o di un evento.
Esempio di utilizzo dei thread
Scaricare file e aggiornare l'interfaccia utente simultaneamente.
Cosa è la memoria condivisa?
Spazio di memoria accessibile a più thread in modo simultaneo.
Cosa è l'overhead dei thread?
Il tempo e le risorse necessarie per gestire la creazione e il mantenimento dei thread.
Cosa è la concorrenza?
La capacità di eseguire più operazioni in parallelo, migliorando l'efficienza generale.
Gestione dei thread(20)
Thread
Un thread è il più piccolo insieme di istruzioni che può essere gestito in modo indipendente dal sistema operativo.
Creazione di un thread
Un thread può essere creato utilizzando classi come Thread in Java o librerie come pthread in C.
Domanda: Come si avvia un thread?
Un thread si avvia chiamando il metodo start() sull'oggetto thread.
Terminazione di un thread
Un thread può terminare naturalmente quando completa la sua esecuzione o può essere interrotto.
True o False: I thread possono condividere la memoria.
Vero. I thread condividono lo stesso spazio di memoria del processo padre.
Join
Il metodo join() consente a un thread principale di attendere il completamento di un thread secondario.
Differenza tra processi e thread
I processi hanno spazi di memoria separati, mentre i thread condividono lo stesso spazio di memoria.
Esempio di creazione di un thread in Java
public class MyThread extends Thread { public void run() { // codice } }
Thread pool
Un thread pool è un insieme di thread riciclati per eseguire compiti, migliorando l'efficienza.
Domanda: Cosa fa il metodo sleep()?
Il metodo sleep() sospende l'esecuzione di un thread per un certo periodo di tempo.
Interruzione di un thread
Un thread può essere interrotto utilizzando il metodo interrupt(), che segnala che il thread dovrebbe fermarsi.
Concorrenza
La concorrenza permette a più thread di eseguire simultaneamente, migliorando le prestazioni.
Deadlock
Il deadlock è una situazione in cui due o più thread attendono l'uno per l'altro, bloccando l'esecuzione.
Esempio di uso di synchronized
public synchronized void metodo() { // codice protetto }
Runnable
Un'interfaccia che deve essere implementata per definire il codice di esecuzione di un thread.
Wait e Notify
wait() sospende un thread, notify() risveglia un thread in attesa su un oggetto.
Thread locali
Variabili locali per ogni thread, utili per mantenere dati privati senza conflitto.
Fork/Join framework
Un framework per gestire la parallelizzazione in modo efficiente dividendo i compiti.
Executor framework
Gestisce i thread e offre un'astrazione per l'esecuzione di compiti in parallelo.
Domanda: Che cosa fa il metodo yield()?
yield() suggerisce al sistema operativo di passare a un altro thread di pari priorità.
Sincronizzazione(20)
Sincronizzazione
Tecnica per coordinare l'accesso a risorse condivise tra più thread.
Mutex
Mutual exclusion: strumento che blocca l'accesso a risorse condivise da più thread.
Vero o Falso: I mutex possono essere ricorsivi.
Vero. Alcuni mutex supportano il locking ricorsivo, permettendo allo stesso thread di acquisirli più volte.
Sezione critica
Parte di codice dove si accede a risorse condivise. Solo un thread alla volta deve entrarci.
Semaphore
Strumento di sincronizzazione che controlla l'accesso a risorse limitate attraverso contatori.
Differenza tra Mutex e Semaphore
Mutex: uno alla volta. Semaphore: più thread in base al conteggio.
Condizione di attesa
Situazione in cui un thread si ferma in attesa che una condizione diventi vera.
Variabile di condizione
Meccanismo per segnalare a un thread che una certa condizione è cambiata.
Come si usa un mutex?
1. Acquisire il mutex. 2. Eseguire codice nella sezione critica. 3. Rilasciare il mutex.
Race condition
Situazione in cui il comportamento del programma dipende dall'ordine di esecuzione dei thread.
Deadlock
Condizione in cui due o più thread sono bloccati in attesa l'uno dell'altro.
Prevenzione del deadlock
1. Ordinare le risorse. 2. Timeout. 3. Evitare il blocco circolare.
Monitor
Costrutto che combina mutex e variabili di condizione per la sincronizzazione.
Barrier
Tecnica di sincronizzazione che blocca i thread finché un certo numero di essi non raggiunge un punto comune.
Thread starvation
Situazione in cui un thread non riesce mai a ottenere accesso alla risorsa.
Fill in the blank: Un ___ è utilizzato per garantire l'accesso esclusivo a risorse condivise.
mutex
Spinlock
Tipo di mutex che occupa il thread in un ciclo di attesa attiva fino al rilascio.
True or False: I semafori possono avere un valore negativo.
Vero. Un semaforo può diventare negativo indicando thread in attesa.
Esempio di variabile di condizione
Thread A aspetta che il valore di una variabile arrivi a un certo limite.
Resource allocation graph
Grafico usato per analizzare e prevenire il deadlock nei sistemi di threading.
Problemi comuni(20)
Condizione di gara
Situazione in cui due o più thread accedono a risorse condivise. Risultato imprevedibile.
Come evitare una condizione di gara?
Utilizzare meccanismi di sincronizzazione come mutex o semafori.
Vero o falso: I thread possono corrompere i dati.
Vero. Senza sincronizzazione, i thread possono modificare dati condivisi in modo indesiderato.
Starvation
Un thread non ottiene mai accesso alle risorse. Può succedere in presenza di priorità elevate.
Deadlock
Situazione in cui due o più thread sono bloccati in attesa di risorse l'uno dall'altro.
Come risolvere un deadlock?
Utilizzare timeout, ordinamento delle risorse o algoritmi di prevenzione.
Vero o falso: Un thread può terminare un altro thread.
Falso. Un thread non può forzare la terminazione di un altro; deve usare segnali.
Thread non responsivo
Un thread che non risponde causa blocco dell'applicazione. Usare timer o watchdog.
Come si verifica un starvation?
Monitorare il tempo di esecuzione dei thread e le loro priorità.
Mutex vs Semaforo
Mutex: accesso esclusivo. Semaforo: conta risorse disponibili.
Vero o falso: I mutex possono essere utilizzati da più thread simultaneamente.
Falso. I mutex consentono l'accesso solo a un thread alla volta.
Vantaggi della programmazione concorrente
Migliore utilizzo delle CPU, risposte più veloci e maggiore efficienza.
Fill in the blank: La ____ è una situazione in cui i thread aspettano l'uno per l'altro.
deadlock
Meccanismi di sincronizzazione
Mutex, semafori, barriere, variabili di condizione.
Che cosa provoca un deadlock?
Risorse circolari, mancanza di timeout.
Esempio di deadlock
Thread A blocca risorsa 1, Thread B blocca risorsa 2. Attesa reciproca.
Come prevenire starvation?
Rotazione delle priorità dei thread, garantire accesso equo.
Tuning delle prestazioni dei thread
Regolare il numero di thread, gestire le priorità.
Vero o falso: Il polling è un metodo efficace per la sincronizzazione.
Falso. Il polling è inefficiente e consuma risorse.
Esempio di sincronizzazione con mutex
pthread_mutex_lock(&mutex); // codice critico; pthread_mutex_unlock(&mutex);
Domande in questo set(80)
1. Cosa caratterizza un thread rispetto a un processo?
2. Qual è la funzione principale di un mutex?
3. Quale delle seguenti affermazioni descrive meglio un thread?
4. Quale delle seguenti situazioni descrive una condizione di gara?
5. Qual è il principale vantaggio della programmazione concorrente?
6. Quale delle seguenti affermazioni sui semafori è vera?
7. Come si crea un thread in Java?
8. Come si può evitare una condizione di gara?
9. Qual è uno stato del ciclo di vita di un thread?
10. Cosa rappresenta una 'sezione critica' in programmazione concorrente?
11. Cosa deve essere fatto per avviare un thread?
12. Vero o falso: I thread possono modificare dati condivisi in modo non sicuro.
13. Cosa sono le risorse condivise in un contesto di thread?
14. Qual è la differenza principale tra mutex e semaforo?
15. Un thread può terminare in quali dei seguenti modi?
16. Cos'è lo starvation in un contesto di threading?
17. Cosa significa che un thread è bloccato?
18. Cosa si intende per 'deadlock'?
19. I thread possono condividere la memoria?
20. Quale dei seguenti è un esempio di deadlock?
21. Quale delle seguenti affermazioni sui thread daemon è falsa?
22. Qual è uno dei metodi per prevenire il deadlock?
23. Qual è la funzione del metodo join() in un thread?
24. Come si può risolvere un deadlock?
25. Qual è la differenza tra thread e processo?
26. Cosa fa una variabile di condizione?
27. Qual è la principale differenza tra processi e thread?
28. Vero o falso: Un thread può terminare forzatamente un altro thread.
29. Qual è una caratteristica della modalità di esecuzione concorrente?
30. Quale dei seguenti esempi rappresenta una 'race condition'?
31. Quale delle seguenti opzioni è un esempio di creazione di un thread in Java?
32. Cosa significa un thread non responsivo?
33. Cosa rappresenta il contesto di un thread?
34. Cosa significa 'thread starvation'?
35. Cosa rappresenta un thread pool?
36. Come si può monitorare lo starvation?
37. Quale dei seguenti non è un vantaggio dei thread?
38. Come si usa un mutex in modo corretto?
39. Cosa fa il metodo sleep() in un thread?
40. Qual è la differenza principale tra mutex e semaforo?
41. Cosa implica l'overhead dei thread?
42. Qual è una funzione di un monitor?
43. Come si può interrompere un thread in esecuzione?
44. Vero o falso: I mutex possono essere utilizzati da più thread contemporaneamente.
45. Quale dei seguenti è un esempio di utilizzo dei thread?
46. Cosa fa uno spinlock?
47. Cos'è la concorrenza in programmazione?
48. Quali sono alcuni vantaggi della programmazione concorrente?
49. Cosa rappresenta la concorrenza nella programmazione?
50. Quale delle seguenti affermazioni è falsa riguardo ai mutex?
51. Che cos'è un deadlock?
52. Compila il vuoto: La ____ è una situazione in cui i thread aspettano l'uno per l'altro.
53. Cosa accade quando un thread termina?
54. Quando si verifica una 'condizione di attesa'?
55. Come si utilizza il modificatore synchronized?
56. Quali sono alcuni meccanismi di sincronizzazione?
57. Cosa è un thread principale?
58. Qual è lo scopo principale di una barrier?
59. Cosa significa l'interfaccia Runnable?
60. Cosa provoca un deadlock?
61. Quale dei seguenti è un esempio di creazione di un thread in Java?
62. Cosa rappresenta un 'resource allocation graph'?
63. Quale funzione svolgono wait() e notify()?
64. Quale delle seguenti opzioni è un esempio di deadlock?
65. Quale delle seguenti affermazioni è vera riguardo ai thread?
66. Qual è la conseguenza di una race condition?
67. Qual è il significato di thread locali?
68. Come si può prevenire lo starvation?
69. Quale delle seguenti affermazioni descrive meglio un thread?
70. Quale affermazione è corretta riguardo ai mutex ricorsivi?
71. Cosa fa il Fork/Join framework?
72. Cosa significa 'tuning delle prestazioni dei thread'?
73. Cosa succede quando più thread accedono contemporaneamente a una risorsa condivisa?
74. Qual è la funzione principale di un semaforo in programmazione concorrente?
75. Qual è la funzione principale dell'Executor framework?
76. Vero o falso: Il polling è un metodo efficace per la sincronizzazione.
77. Quale delle seguenti opzioni NON è una caratteristica dei thread?
78. Quale delle seguenti affermazioni riguardo a una sezione critica è falsa?
79. Cosa suggerisce il metodo yield()?
80. Quale delle seguenti è un esempio di sincronizzazione con mutex?
Set correlati
Schleife Alltag Beispiel Begriffe
Abitur: Abitur Klassen und Objekte
Wiederholung: Funktionen
Test: Binärzahlen
Listen Notizen
Test: Variablen und Datentypen
Abitur Datenbanken SELECT grob Prüfung
Abitur Rekursion
Crea il tuo set di studio
Carica un PDF, incolla le tue note o descrivi un argomento – l'IA genera schede, quiz e altro in pochi secondi.

