Un processore multi-core può eseguire più processi contemporaneamente?


9

Capisco che un processore multi-core può eseguire più thread dello stesso processo contemporaneamente usando i suoi diversi core.
Può anche eseguire più processi contemporaneamente (ogni core esegue un processo diverso)?

Risposte:


14

Per quanto riguarda il sistema operativo e le applicazioni, ciascun core è un processore separato ed è soggetto alle stesse regole di affinità di avere più processori.

Quale processore (sia esso reale, core o hyperthreaded) su cui gira un processo dipende interamente dal sistema di pianificazione del sistema operativo. È questo sistema di pianificazione (influenzato dalle impostazioni di affinità ) che decide dove eseguire un processo e quando. Processi e thread possono alternare tra processori e core a piacimento secondo la pianificazione.


7

Dalla mia limitata conoscenza dei sistemi operativi, credo che ogni processo abbia almeno un thread, e sono questi thread che vengono programmati, non i processi stessi. Il processo contiene semplicemente informazioni sul programma e sui thread che ha impostato in esecuzione. In questo modo un'applicazione a thread singolo ottiene lo stesso trattamento di un'applicazione a thread multipli, ma l'applicazione a thread multipli può utilizzare meglio le risorse.

Ad esempio, supponiamo che abbiamo due processi con due thread ciascuno e una singola applicazione thread, tutti lavorando duramente su un processore dual core (o doppia CPU, qui non fa alcuna differenza)

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

Ogni thread è programmabile su tutti i core della CPU e il carico è bilanciato dallo scheduler del sistema operativo.

Se poi andiamo a impostare l'affinità del processore per il Processo B per limitarlo a una CPU, anche tutti i thread di quel processo sono associati a quella CPU e non funzioneranno su nessuna altra CPU. Fare lo stesso con il processo C non comporterà alcun cambiamento reale in quanto può funzionare solo su una CPU alla volta.


2

Risposta breve:

  1. Sì, a condizione che il sistema operativo lo supporti.
  2. Oggi tutti i sistemi operativi lo supportano.

Processi e thread (come nel multi-threading) sono costrutti a livello di sistema operativo. Una volta che hai raggiunto un livello abbastanza basso nella pianificazione, questi scompaiono e hai solo un sacco di thread di esecuzione in coda per ottenere i tempi di esecuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.