Un processeur multicœur peut-il exécuter plusieurs processus en même temps?

9

Je comprends qu'un processeur multicœur peut exécuter plusieurs threads du même processus en même temps en utilisant ses différents cœurs.
Peut-il également exécuter plusieurs processus en même temps (chaque cœur exécutant un processus différent)?

NimsDotNet
la source

Réponses:

14

En ce qui concerne le système d'exploitation et les applications, chaque cœur est un processeur distinct et est soumis aux mêmes règles d' affinité que plusieurs processeurs.

Le processeur (réel, de base ou hyperthreadé) sur lequel un processus s'exécute dépend entièrement du système de planification du système d'exploitation. C'est ce système de planification (influencé par les paramètres d' affinité ) qui décide où un processus doit s'exécuter et quand. Les processus et les threads peuvent basculer entre les processeurs et les cœurs à volonté comme le planificateur le juge opportun.

Majenko
la source
7

De ma connaissance limitée des systèmes d'exploitation, je crois que chaque processus a au moins un thread, et ce sont ces threads qui sont planifiés, pas les processus eux-mêmes. Le processus contient simplement des informations sur le programme et les unités d'exécution qu'il a définies. De cette façon, une application à thread unique reçoit le même traitement qu'une application multithread, mais l'application multithread peut mieux utiliser les ressources.

Par exemple, supposons que nous avons deux processus avec deux threads chacun et une seule application threadée, travaillant tous dur sur un processeur dual core (ou dual CPU, cela ne fait aucune différence ici)

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

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

 Process C
    |_Thread C

Chaque thread peut être planifié sur tous les cœurs du processeur et la charge est équilibrée par le planificateur du système d'exploitation.

Si nous allons ensuite configurer l'affinité du processeur pour le processus B pour le limiter à un processeur, tous les threads de ce processus sont également liés à ce processeur et ne fonctionneront pas sur un autre processeur. Faire de même pour le processus C n'entraînera aucun changement réel car il ne peut fonctionner que sur un seul processeur à la fois.

Mokubai
la source
2

Réponse courte:

  1. Oui, à condition que le système d'exploitation le supporte.
  2. De nos jours, tous les systèmes d'exploitation le prennent en charge.

Les processus et les threads (comme dans le multi-threading) sont des constructions de niveau OS. Une fois que vous avez atteint un niveau suffisamment bas dans la planification, ceux-ci disparaissent et vous n'avez plus qu'un tas de threads de file d'attente d'exécution pour obtenir le temps d'exécution.

Mr Alpha
la source