- "fil d'exécution" : c'est la suite d'instructions que le processeur parcourt et exécute en séquence.
- "espace d'adressage" : c'est la vision de la mémoire d'un processus.
Les espaces d'adressage des processus sont distincts, et chaque processus ne peut taper que dans le sien (sinon c'est segfault). On appelle "MMU" le morceau du processeur qui gère l'espace d'adressage (localisation en mémoire -- ou pas, en cas de swap ; droits d'accès ; etc). Il peut y avoir des morceaux de RAM communs entre plusieurs espaces d'adressage (mémoire partagée, comme on dit) mais la règle commune reste la séparation des espaces.
Un processus, c'est un espace d'adressage, et un certain nombre de fils d'exécution qui travaillent dans cet espace. Ces fils d'exécution, quand ils sont au moins deux, on les appelle des threads.
Dans un processeur multi-coeurs, chaque coeur peut gérer un espace d'adressage à la fois. Donc deux processus distincts peuvent tourner en parallèle, un sur chaque coeur. Chaque coeur peut en outre gérer plusieurs fils d'exécution plus ou moins en même temps (ce qu'Intel appelle "hyper-threading"), mais là c'est forcément dans le même espace d'adressage (la MMU de chaque coeur ne peut prendre en compte qu'un seul espace d'adressage à la fois), donc ces fils d'exécution ne peuvent être que des threads du même processus.
En bref, le multi-coeurs, on peut en profiter pour des processus distincts, mais pour l'hyper-threading, il faut des threads au sein d'un même processus. Les deux mécanismes sont proposés par les processeurs récents. Pour profiter à fond de ces processeurs, il faut avoir plusieurs threads, mais le multi-coeur aide déjà quand on a plusieurs processus indépendants.
[^] # Re: Merci pour l'article et petite question ...
Posté par Thomas Pornin . En réponse à la dépêche Les nouveaux processeurs arrivent. Évalué à 4.
- "fil d'exécution" : c'est la suite d'instructions que le processeur parcourt et exécute en séquence.
- "espace d'adressage" : c'est la vision de la mémoire d'un processus.
Les espaces d'adressage des processus sont distincts, et chaque processus ne peut taper que dans le sien (sinon c'est segfault). On appelle "MMU" le morceau du processeur qui gère l'espace d'adressage (localisation en mémoire -- ou pas, en cas de swap ; droits d'accès ; etc). Il peut y avoir des morceaux de RAM communs entre plusieurs espaces d'adressage (mémoire partagée, comme on dit) mais la règle commune reste la séparation des espaces.
Un processus, c'est un espace d'adressage, et un certain nombre de fils d'exécution qui travaillent dans cet espace. Ces fils d'exécution, quand ils sont au moins deux, on les appelle des threads.
Dans un processeur multi-coeurs, chaque coeur peut gérer un espace d'adressage à la fois. Donc deux processus distincts peuvent tourner en parallèle, un sur chaque coeur. Chaque coeur peut en outre gérer plusieurs fils d'exécution plus ou moins en même temps (ce qu'Intel appelle "hyper-threading"), mais là c'est forcément dans le même espace d'adressage (la MMU de chaque coeur ne peut prendre en compte qu'un seul espace d'adressage à la fois), donc ces fils d'exécution ne peuvent être que des threads du même processus.
En bref, le multi-coeurs, on peut en profiter pour des processus distincts, mais pour l'hyper-threading, il faut des threads au sein d'un même processus. Les deux mécanismes sont proposés par les processeurs récents. Pour profiter à fond de ces processeurs, il faut avoir plusieurs threads, mais le multi-coeur aide déjà quand on a plusieurs processus indépendants.