Grafico comparativo
Base per il confronto | multiprocessing | multithreading |
---|---|---|
Di base | Il multiprocessing aggiunge CPU per aumentare la potenza di calcolo. | Il multithreading crea più thread di un singolo processo per aumentare la potenza di calcolo. |
Esecuzione | Più processi vengono eseguiti contemporaneamente. | Più thread di un singolo processo vengono eseguiti contemporaneamente. |
Creazione | La creazione di un processo richiede molto tempo e molte risorse. | La creazione di un thread è economica sia in termini di tempo che di risorse. |
Classificazione | Il multiprocessing può essere simmetrico o asimmetrico. | Il multithreading non è classificato. |
Definizione di Multiprocessing
Un sistema multiprocessing è uno che ha più di due processori. Le CPU vengono aggiunte al sistema per aumentare la velocità di elaborazione del sistema. Ogni CPU ha il proprio set di registri e memoria principale. Solo perché le CPU sono separate, può succedere che una CPU non debba avere nulla da elaborare e che possa rimanere inattiva e l'altra possa essere sovraccaricata dai processi. In tali casi, i processi e le risorse sono condivisi dinamicamente tra i processori.
Il multiprocessing può essere classificato come multiprocessing simmetrico e multiprocessing asimmetrico . In multiprocessing simmetrico, tutti i processori sono liberi di eseguire qualsiasi processo in un sistema. In Multiprocessing asimmetrico, esiste una relazione master-slave tra i processori. Il processore principale è responsabile di assegnare il processo ai processori slave.
Se il processore ha integrato il controller di memoria, l' aggiunta del processore aumenterebbe la quantità di memoria indirizzabile nel sistema. La multielaborazione può modificare il modello di accesso alla memoria dall'accesso uniforme alla memoria all'accesso non uniforme alla memoria . L'accesso uniforme alla memoria equivale allo stesso tempo per accedere a qualsiasi RAM da qualsiasi processore. D'altra parte, l'accesso alla memoria non uniforme richiede più tempo per accedere ad una parte della memoria rispetto alle altre parti.
Definizione di Multithreading
Il multithreading è l'esecuzione di più thread di un singolo processo contemporaneamente nel contesto di quel processo. Ora parliamo prima di cos'è un thread? Un thread di un processo indica un segmento di codice di un processo, che ha il proprio ID di thread, contatore di programma, registri e stack e può essere eseguito indipendentemente. Ma i thread appartenenti allo stesso processo devono condividere le proprietà di quel processo come codice, dati e risorse di sistema. La creazione di processi separati per ogni richiesta di servizio consuma tempo e risorse del sistema di scarico. Invece di incorrere in questo overhead, è più efficiente creare thread di un processo.
La creazione di un thread è economica in quanto condivide il codice e i dati del processo a cui appartengono. Quindi il sistema non deve allocare risorse separatamente per ogni thread. Il multithreading può essere aumentato sul sistema operativo multiprocessing. Come il multithreading su più CPU aumenta il parallelismo .
Differenze chiave tra multiprocessing e multithreading
- La differenza chiave tra multiprocessing e multithreading è che multiprocessing consente a un sistema di avere più di due CPU aggiunte al sistema mentre il multithreading consente a un processo di generare più thread per aumentare la velocità di elaborazione di un sistema.
- Il sistema di multiprocessing esegue più processi contemporaneamente mentre, il sistema di multithreading consente di eseguire più thread di un processo contemporaneamente.
- La creazione di un processo può consumare tempo e persino esaurire le risorse del sistema. Tuttavia, la creazione di thread è economica in quanto i thread appartenenti allo stesso processo condividono le proprietà di quel processo.
- Il multiprocessing può essere classificato in multiprocessing simmetrico e multiprocessing asimmetrico mentre il multithreading non è ulteriormente classificato.
Conclusione:
I vantaggi del multithreading possono essere aumentati gradualmente nell'ambiente multiprocessing poiché il multithreading su un sistema multiprocessing aumenta il parallelismo.