SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Published on L'Elettronica Open Source (http://it.emcelettronica.com)


Home > Blog > blog di slovati > Contenuto




Thread o Processo: quale usare?
By slovati
Created 02/11/2010 - 07:50


Thread o Processo: quale usare? I sistemi operativi multi-tasking, in grado di gestire la
concorrenza tra più task in esecuzione sullo stesso hardware, sono sempre più diffusi e trovano
applicazione anche nei dispositivi con cui interagiamo tutti i giorni, come cellulari e smartphone.
Parlando di multi-tasking, si usano spesso i termini processo e thread, ma qual'è la differenza tra i
due e quando usare l'uno o l'altro?


Thread o Processo - Overview

Anzitutto possiamo dire che i thread possono essere paragonati a dei processi "light", nel senso che
offrono vantaggi analoghi a quelli dei processi, senza però richiedere le tecniche di comunicazione tipiche
dei processi. I thread permettono di dividere il flusso di controllo principale di un programma in più flussi di
controllo in esecuzione concorrente. Ogni processo ha un proprio spazio di indirizzamento e delle risorse
proprie; ne consegue che la comunicazione tra parti di codice in esecuzione su processi differenti può
avvenire solo attraverso appositi meccanismi di gestione della concorrenza: pipe, code fifo, mailbox, aree
di memoria condivise, ecc. I thread, viceversa, permettono di creare parti di programma in esecuzione
concorrente, in cui ogni parte può accedere allo stesso spazio di indirizzamento, variabili, e costanti.



Definizione di thread

Per thread si intende un blocco di codice eseguibile all'interno di un sistema operativo che ha la capacità di
essere schedulato (la schedulazione è il meccanismo con il quale il sisema operativo assegna il tempo di
elaborazione alle unità che ne fanno richiesta). Un   thread richiede molta meno informazione di un
processo, e quindi comporta un minore overhead per il sistema operativo. Ogni processo ha almeno un
thread (il thread primario, o principale) ma in genere dispone di thread multipli, ciascuno dei quali viene
eseguito in modo concorrente ed indipendente dagli altri; in questo caso si parla di processo multi-thread.
Tutti i thread in esecuzione all'interno di un processo condividono lo stesso spazio di indirizzamento e le
altre risorse: i thread non hanno quindi risorse proprie, ma hanno ovviamente un proprio program counter,
stack, e registri di stato. Gli stack dei vari thread saranno tutti contenuti all'interno del segmento stack del
processo, menre il segmento dati del processo verrà condiviso tra i thread.

I thread possono inoltre creare altri thread, al'interno dello stesso processo, e possono anche eseguire
suspend, resume, o terminare altri thread dello stesso processo. Nei sistemi multi-processore, i thread
appartenenti ad uno stesso processo possono essere eseguiti su processori diversi, ma solo sui
processori assegnati a quel processo. Nei sistemi mono-processore, i thread sono costretti a competere
per l'uso della risorsa condivisa. Quando poi più thread sono in esecuzione concorrente all'interno dello
stesso processo, il processo stesso viene detto multi-thread.
E' fondamentale osservare come il context-switch ("cambio di contesto", il meccanismo con cui il controllo
passa da un processo, o thread, ad un altro) sia molto più oneroso per il sistema quando esso avviene tra
thread appartenenti a processi differenti, rispetto al caso in cui i thread appartengano allo stesso processo;
il motivo per cui ciò avviene è che nel primo caso avviene anche un context-switch tra processi, mentre nel
secondo caso avviene solo tra thread.

Confronto tra thread e processo

Come già accennato in precedenza, la principale differenza è che ogni processo ha il proprio spazio di
indirizzamento, mentre il thread no. Quando un processo crea altri processi figli, questi avranno ciascuno il
proprio spazio di indirizzamento ed una copia del segmento dati: se pertanto un processo figlio modifica
parte dei suoi dati, questo non avrà conseguenze sui dati del processo padre; se si vogliono pertanto
scambiare informazioni tra i processi, occorre ricorrere a meccanismi di inter-process-communication
(IPC). Per contro, i thread appartenenti ad uno stesso processo possono comunicare e scambiarsi
informazioni semplicemente accedendo ai dati del processo padre.

I principali vantaggi dei thread si possono così riassumere:

         context-switch più veloce e meno oneroso per il sistema
         miglioramento delle performance dell'applicazione (mentre un thread è sospeso in attesa di
        eseguire un'operazione di I/O, un altro può eseguire altre operazioni)
         semplificano la struttura del programma: l'architettura di un'applicazione può essere decomposta in
        vari task e ciascun task assegnato ad un thread, con la sua priorità
         non richiedono meccanismi espliciti di IPC: i thread comunicano utilizzando la memoria condivisa
        nello spazio di indirizzamento del processo
         permettono un controllo completo sugli altri thread dello stesso processo (un processo può
        controllare solo i suoi processi figli)

Gli svantaggi dei thread sono essenzialmente i seguenti:

          possono corrompere l'area dati del processo di appartenenza
          anche se non richiedono meccansimi di IPC, necessitano comunque di un'opportuna
        sincronizzazione quando accedono concorrentemente alle stesso aree di memoria
          un thread può terminare altri thread, e tra questi anche il main thread del processo!
          scarsa riusabilità del codice di un thread
          se mal gestiti, possono causare il blocco/terminazione del processo: i thread non sono isolati
        come i processi, per cui un fatal access eseguito da un thread può mandare in crash l'intero
        processo


Come in tutte le cose, anche in questo caso la decisione su quale tra processo o thread sia la soluzione
migliore dipende dal particolare tipo di applicazione e dal livello di affidabilità che si intende raggiungere. I
thread sono più veloci, efifcienti, e semplici da usare dei processi, però si perde in sicurezza e performance.

Nell'immagine seguente viene mostrata la struttura di un processo, con i vari segmenti (stack, heap, static
data e codice) ed i registri per puntare allo stack (SP) ed al codice (PC).



Quest'altra immagine, invece, si riferisce al caso di due thread (T 1 e T2) definiti all'interno dello stesso
processo; si osservi la presenza di due stack pointer e program counter separati per ogni thread.
Programmazione C/C++ Assembler embedded multitasking multithread process programming real-time
                                                                                           thread
                             EMCelettronica Srl - P.iva 06433601009

Source URL: http://it.emcelettronica.com/thread-o-processo-quale-usare

Más contenido relacionado

Similar a Thread o processo quale usare - 2010-11-02

Sistemioperativi
SistemioperativiSistemioperativi
Sistemioperativieleonora4g
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...Alex Ronci
 
Reti di computer
Reti di computerReti di computer
Reti di computerTaxiUber
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Summary of "NebulOS: A Big Data framework for astrophysics"
Summary of "NebulOS: A Big Data framework for astrophysics"Summary of "NebulOS: A Big Data framework for astrophysics"
Summary of "NebulOS: A Big Data framework for astrophysics"MarziaPaschini
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàGiulio Destri
 
Cv 2014 richard_gennaro_ eur_it
Cv 2014 richard_gennaro_ eur_itCv 2014 richard_gennaro_ eur_it
Cv 2014 richard_gennaro_ eur_itRichard Gennaro
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseAlberto Lagna
 
Peer to-peer Un approccio pratico
Peer to-peer Un approccio praticoPeer to-peer Un approccio pratico
Peer to-peer Un approccio praticoOrlando Selenu
 

Similar a Thread o processo quale usare - 2010-11-02 (20)

Sistemioperativi
SistemioperativiSistemioperativi
Sistemioperativi
 
Processi e Thread
Processi e ThreadProcessi e Thread
Processi e Thread
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
 
Sist op
Sist opSist op
Sist op
 
Sistemi Operativi
Sistemi OperativiSistemi Operativi
Sistemi Operativi
 
operating system
operating systemoperating system
operating system
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Reti di computer
Reti di computerReti di computer
Reti di computer
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Summary of "NebulOS: A Big Data framework for astrophysics"
Summary of "NebulOS: A Big Data framework for astrophysics"Summary of "NebulOS: A Big Data framework for astrophysics"
Summary of "NebulOS: A Big Data framework for astrophysics"
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 
AreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicitàAreaMVC: un'architettura software basata sulla semplicità
AreaMVC: un'architettura software basata sulla semplicità
 
Cv 2014 richard_gennaro_ eur_it
Cv 2014 richard_gennaro_ eur_itCv 2014 richard_gennaro_ eur_it
Cv 2014 richard_gennaro_ eur_it
 
Sistemi operativi
Sistemi operativiSistemi operativi
Sistemi operativi
 
Gestione Reti
Gestione RetiGestione Reti
Gestione Reti
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
 
Descrizione di NO-SQL
Descrizione di NO-SQLDescrizione di NO-SQL
Descrizione di NO-SQL
 
Peer to-peer Un approccio pratico
Peer to-peer Un approccio praticoPeer to-peer Un approccio pratico
Peer to-peer Un approccio pratico
 
Thread
ThreadThread
Thread
 
Network essentials
Network essentialsNetwork essentials
Network essentials
 

Más de Ionela

IoT with OpenPicus Flyport
IoT with OpenPicus FlyportIoT with OpenPicus Flyport
IoT with OpenPicus FlyportIonela
 
Flyport wifi webserver configuration page
Flyport wifi webserver configuration pageFlyport wifi webserver configuration page
Flyport wifi webserver configuration pageIonela
 
openPicus Proto Nest Datasheet
openPicus Proto Nest DatasheetopenPicus Proto Nest Datasheet
openPicus Proto Nest DatasheetIonela
 
How to Integrate Internet of Things with Webserver with
How to Integrate Internet of Things with Webserver with How to Integrate Internet of Things with Webserver with
How to Integrate Internet of Things with Webserver with Ionela
 
Openpicus Flyport interfaces the cloud services
Openpicus Flyport interfaces the cloud servicesOpenpicus Flyport interfaces the cloud services
Openpicus Flyport interfaces the cloud servicesIonela
 
Flyport openPicus datasheet
Flyport openPicus datasheetFlyport openPicus datasheet
Flyport openPicus datasheetIonela
 
Windows phone 7 è l’ultima occasione di microsoft 2010-10-18
Windows phone 7 è l’ultima occasione di microsoft   2010-10-18Windows phone 7 è l’ultima occasione di microsoft   2010-10-18
Windows phone 7 è l’ultima occasione di microsoft 2010-10-18Ionela
 
Videocamera cam ball un mare di caratteristiche nella piccola videocamera a ...
Videocamera cam ball  un mare di caratteristiche nella piccola videocamera a ...Videocamera cam ball  un mare di caratteristiche nella piccola videocamera a ...
Videocamera cam ball un mare di caratteristiche nella piccola videocamera a ...Ionela
 
Utente premium 2010-10-17
Utente premium   2010-10-17Utente premium   2010-10-17
Utente premium 2010-10-17Ionela
 
Unity sostituisce gnome su ubuntu 11.04 2010-11-01
Unity sostituisce gnome su ubuntu 11.04   2010-11-01Unity sostituisce gnome su ubuntu 11.04   2010-11-01
Unity sostituisce gnome su ubuntu 11.04 2010-11-01Ionela
 
Una retina artificiale per ridare la vista 2010-11-10
Una retina artificiale per ridare la vista   2010-11-10Una retina artificiale per ridare la vista   2010-11-10
Una retina artificiale per ridare la vista 2010-11-10Ionela
 
Un orologio elettronico completo basato su i2 c rtcc mcp79410 2010-10-29
Un orologio elettronico completo basato su i2 c rtcc mcp79410   2010-10-29Un orologio elettronico completo basato su i2 c rtcc mcp79410   2010-10-29
Un orologio elettronico completo basato su i2 c rtcc mcp79410 2010-10-29Ionela
 
Ultimo lancio discovery delle perdite rinviano l’ultimo lancio dello shuttle...
Ultimo lancio discovery  delle perdite rinviano l’ultimo lancio dello shuttle...Ultimo lancio discovery  delle perdite rinviano l’ultimo lancio dello shuttle...
Ultimo lancio discovery delle perdite rinviano l’ultimo lancio dello shuttle...Ionela
 
Ubuntu passa a wayland 2010-11-08
Ubuntu passa a wayland   2010-11-08Ubuntu passa a wayland   2010-11-08
Ubuntu passa a wayland 2010-11-08Ionela
 
Touchatag un'applicazione di internet delle cose 2010-11-10
Touchatag  un'applicazione di internet delle cose   2010-11-10Touchatag  un'applicazione di internet delle cose   2010-11-10
Touchatag un'applicazione di internet delle cose 2010-11-10Ionela
 
Tianhe 1, il supercomputer cinese - 2010-11-05
Tianhe 1, il supercomputer cinese - 2010-11-05Tianhe 1, il supercomputer cinese - 2010-11-05
Tianhe 1, il supercomputer cinese - 2010-11-05Ionela
 
Telescopio webb il sistema di engineering del telescopio webb della nasa si ...
Telescopio webb  il sistema di engineering del telescopio webb della nasa si ...Telescopio webb  il sistema di engineering del telescopio webb della nasa si ...
Telescopio webb il sistema di engineering del telescopio webb della nasa si ...Ionela
 
Tecnologia light peak intel potrebbe adottarla da inizio 2011, apple a segui...
Tecnologia light peak  intel potrebbe adottarla da inizio 2011, apple a segui...Tecnologia light peak  intel potrebbe adottarla da inizio 2011, apple a segui...
Tecnologia light peak intel potrebbe adottarla da inizio 2011, apple a segui...Ionela
 
Tastiere capacitive 2010-11-10
Tastiere capacitive   2010-11-10Tastiere capacitive   2010-11-10
Tastiere capacitive 2010-11-10Ionela
 
Stm32 vl discovery recensione - 2010-11-11
Stm32 vl discovery   recensione  - 2010-11-11Stm32 vl discovery   recensione  - 2010-11-11
Stm32 vl discovery recensione - 2010-11-11Ionela
 

Más de Ionela (20)

IoT with OpenPicus Flyport
IoT with OpenPicus FlyportIoT with OpenPicus Flyport
IoT with OpenPicus Flyport
 
Flyport wifi webserver configuration page
Flyport wifi webserver configuration pageFlyport wifi webserver configuration page
Flyport wifi webserver configuration page
 
openPicus Proto Nest Datasheet
openPicus Proto Nest DatasheetopenPicus Proto Nest Datasheet
openPicus Proto Nest Datasheet
 
How to Integrate Internet of Things with Webserver with
How to Integrate Internet of Things with Webserver with How to Integrate Internet of Things with Webserver with
How to Integrate Internet of Things with Webserver with
 
Openpicus Flyport interfaces the cloud services
Openpicus Flyport interfaces the cloud servicesOpenpicus Flyport interfaces the cloud services
Openpicus Flyport interfaces the cloud services
 
Flyport openPicus datasheet
Flyport openPicus datasheetFlyport openPicus datasheet
Flyport openPicus datasheet
 
Windows phone 7 è l’ultima occasione di microsoft 2010-10-18
Windows phone 7 è l’ultima occasione di microsoft   2010-10-18Windows phone 7 è l’ultima occasione di microsoft   2010-10-18
Windows phone 7 è l’ultima occasione di microsoft 2010-10-18
 
Videocamera cam ball un mare di caratteristiche nella piccola videocamera a ...
Videocamera cam ball  un mare di caratteristiche nella piccola videocamera a ...Videocamera cam ball  un mare di caratteristiche nella piccola videocamera a ...
Videocamera cam ball un mare di caratteristiche nella piccola videocamera a ...
 
Utente premium 2010-10-17
Utente premium   2010-10-17Utente premium   2010-10-17
Utente premium 2010-10-17
 
Unity sostituisce gnome su ubuntu 11.04 2010-11-01
Unity sostituisce gnome su ubuntu 11.04   2010-11-01Unity sostituisce gnome su ubuntu 11.04   2010-11-01
Unity sostituisce gnome su ubuntu 11.04 2010-11-01
 
Una retina artificiale per ridare la vista 2010-11-10
Una retina artificiale per ridare la vista   2010-11-10Una retina artificiale per ridare la vista   2010-11-10
Una retina artificiale per ridare la vista 2010-11-10
 
Un orologio elettronico completo basato su i2 c rtcc mcp79410 2010-10-29
Un orologio elettronico completo basato su i2 c rtcc mcp79410   2010-10-29Un orologio elettronico completo basato su i2 c rtcc mcp79410   2010-10-29
Un orologio elettronico completo basato su i2 c rtcc mcp79410 2010-10-29
 
Ultimo lancio discovery delle perdite rinviano l’ultimo lancio dello shuttle...
Ultimo lancio discovery  delle perdite rinviano l’ultimo lancio dello shuttle...Ultimo lancio discovery  delle perdite rinviano l’ultimo lancio dello shuttle...
Ultimo lancio discovery delle perdite rinviano l’ultimo lancio dello shuttle...
 
Ubuntu passa a wayland 2010-11-08
Ubuntu passa a wayland   2010-11-08Ubuntu passa a wayland   2010-11-08
Ubuntu passa a wayland 2010-11-08
 
Touchatag un'applicazione di internet delle cose 2010-11-10
Touchatag  un'applicazione di internet delle cose   2010-11-10Touchatag  un'applicazione di internet delle cose   2010-11-10
Touchatag un'applicazione di internet delle cose 2010-11-10
 
Tianhe 1, il supercomputer cinese - 2010-11-05
Tianhe 1, il supercomputer cinese - 2010-11-05Tianhe 1, il supercomputer cinese - 2010-11-05
Tianhe 1, il supercomputer cinese - 2010-11-05
 
Telescopio webb il sistema di engineering del telescopio webb della nasa si ...
Telescopio webb  il sistema di engineering del telescopio webb della nasa si ...Telescopio webb  il sistema di engineering del telescopio webb della nasa si ...
Telescopio webb il sistema di engineering del telescopio webb della nasa si ...
 
Tecnologia light peak intel potrebbe adottarla da inizio 2011, apple a segui...
Tecnologia light peak  intel potrebbe adottarla da inizio 2011, apple a segui...Tecnologia light peak  intel potrebbe adottarla da inizio 2011, apple a segui...
Tecnologia light peak intel potrebbe adottarla da inizio 2011, apple a segui...
 
Tastiere capacitive 2010-11-10
Tastiere capacitive   2010-11-10Tastiere capacitive   2010-11-10
Tastiere capacitive 2010-11-10
 
Stm32 vl discovery recensione - 2010-11-11
Stm32 vl discovery   recensione  - 2010-11-11Stm32 vl discovery   recensione  - 2010-11-11
Stm32 vl discovery recensione - 2010-11-11
 

Thread o processo quale usare - 2010-11-02

  • 1. Published on L'Elettronica Open Source (http://it.emcelettronica.com) Home > Blog > blog di slovati > Contenuto Thread o Processo: quale usare? By slovati Created 02/11/2010 - 07:50 Thread o Processo: quale usare? I sistemi operativi multi-tasking, in grado di gestire la concorrenza tra più task in esecuzione sullo stesso hardware, sono sempre più diffusi e trovano applicazione anche nei dispositivi con cui interagiamo tutti i giorni, come cellulari e smartphone. Parlando di multi-tasking, si usano spesso i termini processo e thread, ma qual'è la differenza tra i due e quando usare l'uno o l'altro? Thread o Processo - Overview Anzitutto possiamo dire che i thread possono essere paragonati a dei processi "light", nel senso che offrono vantaggi analoghi a quelli dei processi, senza però richiedere le tecniche di comunicazione tipiche dei processi. I thread permettono di dividere il flusso di controllo principale di un programma in più flussi di controllo in esecuzione concorrente. Ogni processo ha un proprio spazio di indirizzamento e delle risorse proprie; ne consegue che la comunicazione tra parti di codice in esecuzione su processi differenti può avvenire solo attraverso appositi meccanismi di gestione della concorrenza: pipe, code fifo, mailbox, aree di memoria condivise, ecc. I thread, viceversa, permettono di creare parti di programma in esecuzione concorrente, in cui ogni parte può accedere allo stesso spazio di indirizzamento, variabili, e costanti. Definizione di thread Per thread si intende un blocco di codice eseguibile all'interno di un sistema operativo che ha la capacità di essere schedulato (la schedulazione è il meccanismo con il quale il sisema operativo assegna il tempo di elaborazione alle unità che ne fanno richiesta). Un thread richiede molta meno informazione di un processo, e quindi comporta un minore overhead per il sistema operativo. Ogni processo ha almeno un thread (il thread primario, o principale) ma in genere dispone di thread multipli, ciascuno dei quali viene eseguito in modo concorrente ed indipendente dagli altri; in questo caso si parla di processo multi-thread. Tutti i thread in esecuzione all'interno di un processo condividono lo stesso spazio di indirizzamento e le altre risorse: i thread non hanno quindi risorse proprie, ma hanno ovviamente un proprio program counter, stack, e registri di stato. Gli stack dei vari thread saranno tutti contenuti all'interno del segmento stack del processo, menre il segmento dati del processo verrà condiviso tra i thread. I thread possono inoltre creare altri thread, al'interno dello stesso processo, e possono anche eseguire suspend, resume, o terminare altri thread dello stesso processo. Nei sistemi multi-processore, i thread appartenenti ad uno stesso processo possono essere eseguiti su processori diversi, ma solo sui processori assegnati a quel processo. Nei sistemi mono-processore, i thread sono costretti a competere per l'uso della risorsa condivisa. Quando poi più thread sono in esecuzione concorrente all'interno dello stesso processo, il processo stesso viene detto multi-thread.
  • 2. E' fondamentale osservare come il context-switch ("cambio di contesto", il meccanismo con cui il controllo passa da un processo, o thread, ad un altro) sia molto più oneroso per il sistema quando esso avviene tra thread appartenenti a processi differenti, rispetto al caso in cui i thread appartengano allo stesso processo; il motivo per cui ciò avviene è che nel primo caso avviene anche un context-switch tra processi, mentre nel secondo caso avviene solo tra thread. Confronto tra thread e processo Come già accennato in precedenza, la principale differenza è che ogni processo ha il proprio spazio di indirizzamento, mentre il thread no. Quando un processo crea altri processi figli, questi avranno ciascuno il proprio spazio di indirizzamento ed una copia del segmento dati: se pertanto un processo figlio modifica parte dei suoi dati, questo non avrà conseguenze sui dati del processo padre; se si vogliono pertanto scambiare informazioni tra i processi, occorre ricorrere a meccanismi di inter-process-communication (IPC). Per contro, i thread appartenenti ad uno stesso processo possono comunicare e scambiarsi informazioni semplicemente accedendo ai dati del processo padre. I principali vantaggi dei thread si possono così riassumere: context-switch più veloce e meno oneroso per il sistema miglioramento delle performance dell'applicazione (mentre un thread è sospeso in attesa di eseguire un'operazione di I/O, un altro può eseguire altre operazioni) semplificano la struttura del programma: l'architettura di un'applicazione può essere decomposta in vari task e ciascun task assegnato ad un thread, con la sua priorità non richiedono meccanismi espliciti di IPC: i thread comunicano utilizzando la memoria condivisa nello spazio di indirizzamento del processo permettono un controllo completo sugli altri thread dello stesso processo (un processo può controllare solo i suoi processi figli) Gli svantaggi dei thread sono essenzialmente i seguenti: possono corrompere l'area dati del processo di appartenenza anche se non richiedono meccansimi di IPC, necessitano comunque di un'opportuna sincronizzazione quando accedono concorrentemente alle stesso aree di memoria un thread può terminare altri thread, e tra questi anche il main thread del processo! scarsa riusabilità del codice di un thread se mal gestiti, possono causare il blocco/terminazione del processo: i thread non sono isolati come i processi, per cui un fatal access eseguito da un thread può mandare in crash l'intero processo Come in tutte le cose, anche in questo caso la decisione su quale tra processo o thread sia la soluzione migliore dipende dal particolare tipo di applicazione e dal livello di affidabilità che si intende raggiungere. I thread sono più veloci, efifcienti, e semplici da usare dei processi, però si perde in sicurezza e performance. Nell'immagine seguente viene mostrata la struttura di un processo, con i vari segmenti (stack, heap, static data e codice) ed i registri per puntare allo stack (SP) ed al codice (PC). Quest'altra immagine, invece, si riferisce al caso di due thread (T 1 e T2) definiti all'interno dello stesso processo; si osservi la presenza di due stack pointer e program counter separati per ogni thread.
  • 3. Programmazione C/C++ Assembler embedded multitasking multithread process programming real-time thread EMCelettronica Srl - P.iva 06433601009 Source URL: http://it.emcelettronica.com/thread-o-processo-quale-usare