Sistemi Operativi - 04: Thread

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Quale tecnica permette ai core di un processore multi-core di eseguire in parallelo fino a 4 o 5 istruzioni?

  • Single-core
  • Parallel processing
  • Superscalare (correct)
  • Multi-threading

Un processore dual-core può gestire più task multi-threaded di quanti sono i core disponibili.

True (A)

Cosa si intende per 'context switch' e quali sono le sue implicazioni nelle prestazioni?

Il 'context switch' è il passaggio di controllo da un processo a un altro, che comporta un sovraccarico e può degradare le prestazioni a causa dei miss cache.

Le architetture multi-core sono particolarmente adatte a gestire task __________.

<p>multi-threaded</p> Signup and view all the answers

Abbina le seguenti caratteristiche ai loro significati corretti:

<p>Multiple issue = Esecuzione parallela di più istruzioni Superscalare = Architettura dei core con unità funzionali multiple Context switch = Cambio di controllo tra processi ALU = Unità logico-aritmetica</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo ai processi e i thread?

<p>I thread condividono lo spazio di indirizzamento. (C)</p> Signup and view all the answers

I processi possono accedere ai dati in una memoria condivisa senza utilizzare file.

<p>True (A)</p> Signup and view all the answers

Qual è uno dei vantaggi della condivisione di dati tra thread rispetto ai processi?

<p>I context switch sono meno onerosi.</p> Signup and view all the answers

Due processi possono comunicare scambiandosi dati usando __________.

<p>messaggi</p> Signup and view all the answers

Abbina i seguenti concetti con le loro descrizioni:

<p>Processo = Un'unità di lavoro con spazi di indirizzamento separati Thread = Un'unità di lavoro che condivide spazi di indirizzamento Context Switch = Passaggio da un processo o thread a un altro Memoria Condivisa = Area di memoria accessibile da più processi o thread</p> Signup and view all the answers

Qual è una delle situazioni in cui i thread sono vantaggiosi?

<p>Collaborare su dati comuni senza utilizzare meccanismi espliciti di comunicazione. (B)</p> Signup and view all the answers

Il passaggio da un thread a un altro comporta sempre un alto costo di risorse.

<p>False (B)</p> Signup and view all the answers

Che cosa richiede il context switch tra peer thread?

<p>Il Program Counter, i registri della CPU e lo stack (A)</p> Signup and view all the answers

Il codice e i dati sono diversi per ogni peer thread di un processo.

<p>False (B)</p> Signup and view all the answers

Qual è la principale differenza tra context switch tra processi e context switch tra peer thread?

<p>Il context switch tra processi è più oneroso e coinvolge più informazioni.</p> Signup and view all the answers

I processi normali sono chiamati __________.

<p>heavy-weight process</p> Signup and view all the answers

Qual è il termine usato per i peer-thread?

<p>Processo leggero (D)</p> Signup and view all the answers

Il context switch tra processi genera meno cache miss rispetto al context switch tra peer thread.

<p>False (B)</p> Signup and view all the answers

Quali componenti devono essere salvati durante un context switch tra peer thread?

<p>Program Counter, registri della CPU e stack.</p> Signup and view all the answers

Il context switch tra peer thread non richiede di cambiare la __________ del processo.

<p>tabella delle pagine</p> Signup and view all the answers

Abbina i seguenti termini alle loro descrizioni:

<p>HWP = Processo normale LWP = Peer-thread Context switch = Cambio di esecuzione tra thread o processi Cache miss = Accesso alla memoria non trovato nel cache</p> Signup and view all the answers

Quale affermazione descrive correttamente un processo P?

<p>Ha un unico thread di computazione. (D)</p> Signup and view all the answers

Un processo multi-threaded non può avere accesso al codice di altri processi.

<p>True (A)</p> Signup and view all the answers

Che cosa rappresenta un peer thread in un processo multi-threaded?

<p>Un thread di computazione che esegue un codice diverso dagli altri thread.</p> Signup and view all the answers

Un processo multi-threaded è composto da più ________ di computazione.

<p>thread</p> Signup and view all the answers

Abbina i seguenti termini ai loro significati:

<p>Thread = Un'unità di esecuzione all'interno di un processo Processo P = Unica sequenza di istruzioni eseguite Spazio di indirizzamento logico = Area di memoria utilizzata da un processo Peer thread = Thread che condivide codice e dati nel processo multi-threaded</p> Signup and view all the answers

Quale delle seguenti affermazioni è falsa riguardo ai processi?

<p>Un processo ha accesso all'area dati di un altro processo. (A)</p> Signup and view all the answers

I peer thread condividono le aree dati ma non il codice in esecuzione.

<p>False (B)</p> Signup and view all the answers

Qual è la funzione del Program Counter in un thread?

<p>Indica l'indirizzo della prossima istruzione da eseguire.</p> Signup and view all the answers

Ogni thread ha un suo stato di computazione composto da Program Counter, ________ e stack.

<p>registri della CPU</p> Signup and view all the answers

Quale sistema di chiamata viene utilizzato per creare un nuovo thread in Linux?

<p>clone (A)</p> Signup and view all the answers

I peer-thread non possono condividere dati e risorse fra di loro.

<p>False (B)</p> Signup and view all the answers

Qual è il vantaggio principale dell'uso dei thread sulle architetture multi-core?

<p>I thread possono girare simultaneamente su più core.</p> Signup and view all the answers

Il passaggio di contesto tra peer thread richiede circa ___ volte meno tempo rispetto al passaggio di contesto tra processi.

<p>5</p> Signup and view all the answers

Quale delle seguenti affermazioni è vera riguardo allo scheduling dei thread?

<p>Il SO assegna la CPU anche a processi normali. (A)</p> Signup and view all the answers

Creare un nuovo HWP richiede meno tempo rispetto a creare un nuovo LWP.

<p>False (B)</p> Signup and view all the answers

Qual è una chiamata di sistema usata per creare un thread in Windows?

<p>CreateThread</p> Signup and view all the answers

Il _____ threading implica l'esecuzione simultanea di più thread all'interno dello stesso processo.

<p>multi-threading</p> Signup and view all the answers

Quale vantaggio fornisce l'uso dei thread nella condivisione dei dati?

<p>Lavoro efficiente su dati condivisi. (A)</p> Signup and view all the answers

Flashcards

Processo

Un processo è una sequenza di istruzioni eseguite da un singolo thread.

Thread: Condivisione di codice e dati

I thread sono una soluzione per dare più efficienza allo scambio di dati tra processi. Consentono a due o più processi di condividere lo stesso spazio di indirizzamento, ovvero codice e dati, senza dover ricorrere a meccanismi espliciti di condivisione o file.

Thread

Un thread è un filo di computazione che contiene le istruzioni eseguite da un processo.

Thread: Context Switch più veloce

I thread velocizzano il context switch. Il context switch è il passaggio di esecuzione da un processo all'altro. Con i thread, questa operazione diventa più rapida perché non è necessario cambiare lo spazio di indirizzamento.

Signup and view all the flashcards

Processo Monofilamento

Un processo monofilamento ha un solo thread, eseguendo un'unica sequenza di istruzioni.

Signup and view all the flashcards

Thread: Minori miss cache

I thread riducono i miss cache. La cache è un'area di memoria veloce che memorizza dati utilizzati di recente. Quando un processo cambia, la CPU deve caricare i dati necessari nella cache, causando spesso miss cache (dati non trovati). Con thread che condividono dati, si riducono i miss cache.

Signup and view all the flashcards

Thread: Esecuzione parallela

I thread sono utili per gestire compiti paralleli. Un'applicazione può usare thread per eseguire diverse attività in modo simultaneo, come ricevere input utente, elaborare un file e visualizzare l'output.

Signup and view all the flashcards

Spazio di Indirizzamento Logico

I processi monofilamento non possono accedere allo spazio di indirizzamento logico di altri processi.

Signup and view all the flashcards

Thread: Attività reattive

I thread sono utili per gestire attività reattive. Se una parte del codice è bloccata in un'operazione lunga, i thread permettono ad altre parti del programma di continuare a lavorare.

Signup and view all the flashcards

Codice condiviso, dati separati

I processi monofilamento possono eseguire lo stesso codice, ma in spazi di indirizzamento separati, con dati diversi.

Signup and view all the flashcards

Processo Multi-Thread

Un processo multi-thread è composto da più thread, chiamati peer thread.

Signup and view all the flashcards

Thread: Miglioramento delle prestazioni

I thread sono utili per migliorare le prestazioni. In generale, i thread possono migliorare le prestazioni delle applicazioni dividendo il lavoro in compiti più piccoli che possono essere eseguiti in parallelo.

Signup and view all the flashcards

Thread: Multitasking efficiente

I thread offrono un modo per implementare il multitasking. È un'estensione del concetto di processo, ma con la chiave distintiva che i thread condividono lo stesso spazio di indirizzamento, il che implica che condividono le risorse del processo come memoria e file.

Signup and view all the flashcards

Stato di Computazione

Ogni thread in un processo multi-thread ha il suo stato di computazione (program counter, registri, stack).

Signup and view all the flashcards

Codice e Dati Condivisi

I peer thread in un processo multi-thread condividono il codice e le aree dati.

Signup and view all the flashcards

Specificare l'Esecuzione

I processi multi-thread possono specificare quale thread esegue quale parte del codice, simile alla fork.

Signup and view all the flashcards

Contesto switch tra thread

Il passaggio da un thread all'altro all'interno dello stesso processo.

Signup and view all the flashcards

Context switch

È il processo di salvataggio e ripristino dello stato di un thread quando viene sospeso o ripreso.

Signup and view all the flashcards

Cos'è il contesto di un thread?

Il contesto di un thread comprende: Program Counter, registri della CPU e stack. Il codice e i dati dell'applicazione sono condivisi tra tutti i thread.

Signup and view all the flashcards

Threads all'interno dello stesso processo vs diversi processi

I thread all'interno di uno stesso processo condividono lo stesso spazio di indirizzamento, ovvero hanno accesso agli stessi dati e codice.

Signup and view all the flashcards

Differenza tra context switch tra processi e tra thread

Il context switch tra processi è molto più pesante rispetto al context switch tra thread dello stesso processo.

Signup and view all the flashcards

Cosa sono gli HWP?

Heavy-weight process (HWP)

Signup and view all the flashcards

Cosa sono gli LWP?

Light-weight process (LWP)

Signup and view all the flashcards

Perché i context switch tra processi generano più cache misses?

I context switch generano più cache misses tra processi rispetto a tra thread. Questo perché i processi hanno spazi di indirizzamento separati, mentre i thread condividono lo stesso spazio.

Signup and view all the flashcards

Cos'è il costo computazionale del context switch tra thread?

Il costo computazionale del context switch tra thread è relativamente basso.

Signup and view all the flashcards

Multithreading (in contesto single-core)

È un processo che consente a più thread di eseguire codice contemporaneamente su un singolo processore, alternando rapidamente tra i thread.

Signup and view all the flashcards

Context Switch tra processi

Un cambio di contesto tra due processi è un'operazione costosa che rallenta l'esecuzione, soprattutto a causa dei miss cache che si verificano quando un processo viene caricato in memoria.

Signup and view all the flashcards

Architettura Multi-core

Un'architettura multi-core è costituita da più unità di elaborazione (core) che possono eseguire processi in parallelo, migliorando le prestazioni.

Signup and view all the flashcards

Task Multi-threaded

Un task multi-threaded può eseguire diverse attività contemporaneamente grazie a più thread che lavorano in parallelo.

Signup and view all the flashcards

Core superscalare

Un core superscalare è in grado di eseguire più istruzioni in parallelo, sfruttando diverse unità funzionali (ALU, unità floating point) per accelerare l'esecuzione.

Signup and view all the flashcards

Dipendenze tra istruzioni

Esistono dipendenze tra le istruzioni di un programma, cosa che limita l'esecuzione parallela degli istruzioni perché alcune istruzioni devono essere eseguite in sequenza, ad esempio quando un'istruzione dipende dal risultato di un'altra.

Signup and view all the flashcards

Cos'è un task multithreaded?

Un compito multi-threaded è un processo che può eseguire più flussi di esecuzione contemporaneamente. Ogni flusso di esecuzione è rappresentato da un thread, che è un'unità di esecuzione leggera.

Signup and view all the flashcards

Come si creano i thread?

I thread vengono creati tramite specifiche chiamate di sistema come 'clone' in Linux e 'CreateThread' in Windows, analogamente al modo in cui i processi vengono creati con 'fork' ed 'exec'.

Signup and view all the flashcards

Cosa condividono i thread?

I thread possono condividere i dati tra loro all'interno dello stesso processo. Questo significa che possono accedere agli stessi dati e risorse, il che può essere utile per migliorare l'efficienza.

Signup and view all the flashcards

Perché è importante la sincronizzazione dei thread?

Per evitare conflitti e mantenere l'ordine durante l'accesso ai dati condivisi, è necessario utilizzare meccanismi di sincronizzazione tra i thread, come i semafori.

Signup and view all the flashcards

Come funziona lo scheduling dei thread?

Il sistema operativo gestisce i thread a livello di kernel, memorizzando le informazioni su processi e thread in strutture dati. In questo modo il sistema operativo può passare da un thread all'altro in modo efficiente.

Signup and view all the flashcards

A cosa può assegnare la CPU lo scheduler?

Quando un thread termina il suo quantum di tempo o si blocca volontariamente, il sistema operativo sceglie quale thread eseguire successivamente: un altro thread dello stesso compito, un thread di un altro compito o un processo normale.

Signup and view all the flashcards

Quali sono i vantaggi dei thread?

I thread sono più efficienti dei processi, perché richiedono meno risorse per essere creati e il passaggio di contesto tra di loro è più veloce.

Signup and view all the flashcards

Perché i thread sono adatti per le architetture multi-core?

Poiché i thread possono condividere dati ed eseguire in parallelo, sono ideali per i sistemi multi-core, dove ogni nucleo può elaborare un thread contemporaneamente.

Signup and view all the flashcards

Come vengono eseguiti i thread su un singolo nucleo?

In un sistema single-core, i thread di un compito vengono eseguiti in modo sequenziale, alternandosi sul singolo nucleo. Nonostante questo, il passaggio di contesto tra thread è comunque più efficiente rispetto al passaggio di contesto tra processi.

Signup and view all the flashcards

Perché il context switch tra thread è più veloce?

Il passaggio di contesto tra thread è più efficiente perché i thread condividono lo spazio di indirizzamento del processo e non richiedono una completa riorganizzazione della memoria.

Signup and view all the flashcards

Study Notes

4.I Thread: Motivazioni

  • Questo capitolo va studiato dopo il capitolo 9 sulla memoria centrale.
  • Il suo contenuto è semplificato rispetto al capitolo 4 del libro di testo.
  • Si considerano due processi che lavorano sugli stessi dati.
  • I problemi sorgono quando ogni processo ha la propria area dati.
  • Le soluzioni sono:
    • Richiedere al sistema operativo una memoria condivisa.
    • Utilizzare messaggi per scambiare dati.
    • Utilizzare un file a cui i processi accedono a turno.

4. I Thread: Motivazioni (continua)

  • È utile poter avere processi che lavorano sugli stessi dati, senza meccanismi espliciti di condivisione e senza utilizzare file (perché lenti).
  • Esempio: un editor di testo.
    • Un processo gestisce l'input e i comandi di formattazione dell'utente.
    • Un altro processo esegue il controllo automatico di errore.
  • I due processi dovrebbero lavorare sullo stesso testo, ma ogni processo ha un diverso spazio di indirizzamento.

4. I Thread: Motivazioni (continua 2)

  • Nel context switch tra processi, è necessario disattivare le aree dati del processo uscente e attivare quelle del processo entrante.
  • Le cache della CPU contengono i dati del processo uscente, e il processo entrante genera inizialmente molti miss cache.
  • Condividendo codice e dati, il context switch è meno oneroso.

Definizione di Thread

  • Un thread è un gruppo di peer thread, che condividono spazio di indirizzamento (codice e dati).
  • Un processo è contraddistinto da un unico thread di computazione (sequenza di istruzioni).
  • La sequenza può cambiare da un'esecuzione all'altra.
  • Nessun altro processo ha accesso allo spazio di indirizzamento del processo.

4.1 Thread (continua)

  • Un processo multi-thread è composto da più thread di computazione (peer thread).
  • Ad ogni peer thread è assegnata l'esecuzione di codice.
  • Ogni thread ha il proprio stato di computazione (Program Counter, registri CPU e stack).
  • I peer thread condividono il codice in esecuzione e le aree dati.

4. Scheduling dei Thread

  • I sistemi operativi moderni implementano lo scheduling dei thread a livello kernel.
  • Il SO gestisce sia i processi normali che i thread.
  • Quando un thread si blocca o termina il suo tempo, il SO assegna la CPU ad un altro thread dello stesso task o ad un altro task o ad un processo normale.

Vantaggi nell'uso dei thread

  • Efficienza: creare un thread (Lightweight Process, LWP) è più veloce che creare un processo (Heavyweight Process, HWP).
  • Condivisione di dati e risorse: più thread possono lavorare su dati condivisi.
  • Architetture multi-core: i thread sono adatti ai processori multi-core.

Thread e Architetture Multi-Core

  • In un processore single-core, i thread si alternano nell'esecuzione.
  • Il context switch tra peer thread è meno pesante del context switch tra processi.
  • Il context switch con un altro processo è comunque oneroso, a causa dei miss cache.
  • Le architetture multi-core sono particolarmente adatte a sistemi multi-thread.

CPU/CORE multithreaded

  • SMT (Simultaneous Multi-Threading): ogni core può eseguire, simultaneamente, istruzioni di thread diversi.
  • Aumenta la produttività di ciascun core.
  • Nei processori moderni ogni core supporta SMT e può eseguire istruzioni da due o più peer thread.
  • "Dual-threaded" indica un core che può eseguire contemporaneamente istruzioni di due thread distinti.
  • "Dual-core" indica due core separati, ognuno dei quali può eseguire istruzioni di un diverso processo.

Ma l'SMT conviene?

  • Sì, se lo speedup è maggiore il tempo di esecuzione, a fronte dei consumi, è minore.

CPU/CORE multithreaded (continua)

  • Processori come quelli Intel i3 – i9 sono multi-core e dual-threaded.
  • Altri processori, come il SUN SPARC T3, supportano un maggior numero di peer thread per core.

Per chi vuole approfondire

  • Capitolo 4: Thread e Concorrenza.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Thread e Concorrenza PDF

More Like This

Use Quizgecko on...
Browser
Browser