Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Domenico Cotroneo » 6.Threads, SMP


Dai processi ai thread

  • Processi e thread
  • Thread al livello d’utente e al livello del nucleo
  • Symmetric Multiprocessing

Processi e Thread

L’astrazione di Processo incorpora due concetti importanti.
Esecuzione

  • Ogni processo ha un flusso di controllo (esecuzione di una sequenza di istruzioni);
  • ogni processo ha uno stato di esecuzione (Running, Ready…).

Possesso di Risorse (e Protezione)

  • Ogni processo definisce un proprio spazio di indirizzamento, il quale identifica tutti gli indirizzi ai quali un processo può accedere;
  • ad un processo possono essere assegnate risorse di memoria e di I/O.

Threads

  • Concetto chiave: separazione tra esecuzione e possesso di risorse.
  • Un thread (o processo leggero) è un flusso di controllo sequenziale in un processo.
  • Un processo (o processo pesante) definisce lo spazio di indirizzamento e le risorse che possono essere condiviso da più threads.

Introduzione ai Threads

Un thread è un flusso di controllo sequenziale:

  • ha il suo insieme di registri;
  • ha il suo stack;
  • non ha una propria area heap e/o area dati statici (a differenza dei processi).

Vantaggi nell’uso dei thread:

  • la creazione/terminazione di un thread è molto più efficiente della creazione di un processo;
  • la comunicazione tra threads è molto più semplice ed efficiente di quelle tra tra processi poiché non coinvolge il kernel;
  • il Context switching tra threads ha decisamente un minor overhead di quello tra processi.

Multithreading

La capacità di un sistema operativo di consentire l’esecuzione di più thread  all’interno di un singolo processo

La capacità di un sistema operativo di consentire l’esecuzione di più thread all’interno di un singolo processo


Approcci Single Thread

MS-DOS supporta un unico processo (unico thread).

Alcuni sist. UNIX, consentono l’utilizzo di più processi, ognuno dei quali con un singolo thread.


Multithreading

La macchina virtuale Java è un singolo processo con thread multipli.

Processi e thread multipli si trovano in sistemi operativi come Windows, Solaris, Mac OS, ed alcune versioni recenti di UNIX (ad es. Linux 2.6).


Threads vs. processes


Thread: Stati


Tipologie di impl. di thread

User Level Thread (ULT).

Kernel level Thread (KLT) anche chiamati:

  • kernel-supported threads;
  • lightweight processes.

User-Level Threads

La gestione dei thread è eseguita a livello applicativo.

Il kernel non ha coscienza dell’esistenza dei thread


Thread al livello utente: vantaggi e svantaggi

Vantaggi

  • Minore overhead per il context switch (che non richiede il passaggio in kernel mode);
  • lo scheduler dei thread è indipendente da quello dei processi: ogni applicazione può utilizzare uno scheduler personalizzato;
  • le applicazioni sono portabili.

Svantaggi

  • Quando un thread invoca una system call (bloccante), tutti i thread di quel processo si bloccano;
  • in generale, nelle architetture multiprocessore, non c’è vantaggio nell’utilizzo del multithreading: il kernel assegna un processo per ogni processore.

Kernel-Level Threads

Il Kernel gestisce le informazioni di contesto sia per il processo sia per i threads.

La gestione dei thread non è fatta a livello applicativo.

Lo scheduling è eseguito sui thread.

Windows adotta questo approccio.


Vantaggi dei thread a livello Kernel

Il kernel è in grado di schedulare più thread dello stesso processo su più processori.

Se un thread di un processo è “blocked”,il kernel potrà schedulare un altro thread dello stesso processo.

Anche le routine del Kernel possono essere sviluppate con un approccio multithreaded.

Svantaggi dei thread a livello Kernel

Il trasferimento del controllo da un thread ad un altro, pure se nell’ambito di uno stesso processo, richiede un context switch a livello kernel.

Approcci combinati

Più thread al livello d’utente corrispondono a ad un numero inferiore o uguale di thread al livello del nucleo.

La creazione del thread avviene nello spazio utente.

Il grosso dello scheduling e sincronizzazione è fatta nello spazio utente.

Esempio: Solaris.


Thread al livello d’utente e al livello del nucleo


Cenni sulle architetture Multiprocessore - Visione tradizionale

Tradizionalmente, le architetture a singolo processore sono viste come macchine sequenziali.

  • Un processore esegue le istruzioni, una alla volta ed in sequenza;
  • ogni istruzione è una sequenza di operazioni.

Supponendo un overlap perfetto a livello di istruzione tra le vaire fasi (fetch, preparazione operandi, esecuzione), la massima velocità del processore viene fissata:

  • dalla frequenza del clock;
  • dal numero di passi necessari per completare la fase più lunga.

Miglioramenti prestazionali

Al fine di incrementare il parallelismo dell’esecuzione di istruzioni, esistono due approcci:

  • Symmetric MultiProcessors (SMPs);
  • Clusters (non trattato in questo corso).

Classificazione delle architetture di eleborazione

Single Instruction Single Data (SISD) stream.

  • Un singolo processore esegue una sequenza di istruzioni che operano su dati memorizzati in una singola memoria.

Single Instruction Multiple Data (SIMD) stream.

  • Ogni istruzione è eseguita su in insieme differente di dati di differenti processori.

Classificazione delle architetture di eleborazione

Multiple Instruction Single Data (MISD) stream (mai implementata).

  • Una sequenza di dati è trasmessa ad un insieme di processori, ognuno dei quali esegue un sequenza diversa istruzioni.

Multiple Instruction Multiple Data (MIMD).

  • Un insieme di processori esegue simultaneamente differenti sequenze di istruzioni su insiemi differenti di dati.

Parallel Processor Architectures


Symmetric Multiprocessing

Il kernel può essere eseguito su qualsiasi processore.

É possibile eseguire differenti “task” del kernel in parallelo (su più processori).

Tipicamente ogni processore ha un suo scheduler che agisce su un insieme comune di processi o threads.

Organizzazione tipica di un’architettura SMP


Alcune problematiche di progettazione dei SO multiprocessore

  • Gestione dell’esecuzione simultanea di più processi/thread concorrenti
  • Scheduling
  • Sincronizzazione
  • Gestione della memoria
  • Reliability e Fault Tolerance

I materiali di supporto della lezione

P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap. 2, par. 10)

W. Stallings, “Operating Systems : Internals and Design Principles (5th Edition) ”, Prentice Hall (Cap. 4)

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion