Le système d'exploitation alloue-t-il chaque processus à un noyau distinct?

15

Ok je connais l'argument classique pour éviter les quad core. Au niveau des applications, la plupart des applications n'ont pas été écrites pour plusieurs cœurs. La plupart des logiciels de bureau n'ont même pas besoin de parallélisation.

Cependant, au niveau du système d'exploitation, il semble évident que le système d'exploitation répartirait les processus entre les différents cœurs. Ne serait-ce pas en soi un argument pour obtenir plus de cœurs? Cela n'aide-t-il pas beaucoup dans de nombreuses situations? Vous obtenez quelques tâches gourmandes en ressources CPU en cours - ces processus peuvent chacun monopoliser 100% de leurs cœurs, mais je peux toujours naviguer sur le Web et poser des questions sur SuperUser sur mon dernier noyau .... non?

Doug T.
la source
Un flux fondamental à cette question et les réponses est l'hypothèse qu'un seul processus est monothread. Ce n'est pas le cas dans de nombreux cas. Et même si le processus est monofil, plusieurs bibliothèques système / DLL ajoutent leurs propres threads.
harrymc

Réponses:

12

Le système d'exploitation ne peut pas diviser un processus monothread individuel sur plusieurs cœurs (bien qu'il puisse changer le cœur sur lequel une application s'exécute, mais c'est une question différente), mais il peut exécuter plusieurs processus, chacun sur son propre cœur. Donc, oui, si plusieurs applications gourmandes en processeur s'exécutent en arrière-plan, il est probable que vous disposiez toujours d'un noyau de rechange qui fait peu ou rien que vous puissiez utiliser pour exécuter d'autres applications.

lourd
la source
Le mot clé ici est si vous avez plusieurs applications gourmandes en processeur - c'est une situation rare pour la plupart des utilisateurs.
Gilles 'SO- arrête d'être méchant'
Merci pour la réponse. Oui, c'est ce dernier cas que j'essaie de décrire.
Doug T.
3

Pour ajouter à la réponse de @ Heavyd, la raison en est que le système d'exploitation n'a pas la capacité de déterminer quelles parties du processus peuvent être exécutées en parallèle et lesquelles ne le sont pas. Si un programme n'est pas conçu pour s'exécuter sur des cœurs parallèles, vous pouvez avoir des routines dans l'application conçues pour s'exécuter séquentiellement en même temps. Cela peut provoquer toutes sortes de problèmes (comme si 2 routines utilisent le même bloc de mémoire mais ne sont pas censées s'exécuter en même temps).

Le système d'exploitation peut utiliser plusieurs cœurs pour plusieurs processus, car il le fait de toute façon, mais la propagation d'une application à cœur unique sur plusieurs cœurs provoquera toutes sortes de comportements inattendus.

JNK
la source
Merci. Je comprends que. Ma question a peut-être été mal formulée. Je voulais en savoir plus sur les processus de mise en os sur des cœurs séparés. Pas en quelque sorte par magie que les cœurs de processus à filetage unique s'étendent.
Doug T.
3

En fin de compte, peu importe si un processeur est à 1% d'utilisation ou à 95% d'utilisation (tant qu'il est stable à 95% et ne culmine pas), les programmes fonctionneront à la même vitesse tant que il ne frappe pas à 100%. Les cycles CPU inutilisés sont simplement gaspillés.

Pour cette raison, Windows 7 (sur les processeurs compatibles) dispose d'une technologie connue sous le nom de «stationnement de base» qui désactive essentiellement les cœurs inutilisés sur votre ordinateur afin d'économiser de l'électricité.

Les applications à thread unique sont automatiquement transmises à des cœurs alternatifs - je ne suis pas sûr de la technologie derrière cela, mais je sais que cela fonctionne assez bien.

William Hilsum
la source
2

Vos sentiments initiaux sont corrects - il y a une inclinaison négative vers plusieurs cœurs, et ce n'est pas vraiment tout ce qui méritait.

À l'époque où la plupart des utilisateurs n'utilisaient leur ordinateur de bureau que pour un traitement de texte simple, il y avait peut-être un argument. Mais de nos jours, avec des choses comme des navigateurs avec plusieurs onglets, chacun dans leur propre processus (chrome et c'est-à-dire faire la séparation des niveaux de processus pour les onglets) plus des choses comme des décodeurs vidéo dans les pages Web et des tâches supplémentaires qui pourraient facilement être déchargées comme à la volée rendu d'effets aka css3, même le navigateur seul peut justifier une raison pour beaucoup plus de RAM, et quelques cœurs.

Ajoutez à cela le fait que certains utilisateurs peuvent également jouer sur ce PC, ou utiliser des outils comme garageband, imovie, frein à main, plusieurs cœurs peuvent être un énorme avantage.

Il n'est pas vrai de supposer que vous devez maximiser (c'est-à-dire 100% d'utilisation du processeur sur un seul cœur) un cœur pour qu'un autre cœur soit utile. Parce que nous parlons ici de parallélisme. Le changement de tâche au sein d'un processeur exécute généralement un lot d'opérations avant de remplacer sa pile par un autre processus. Toutes ces tâches ne sont pas liées au processeur, vous ne verrez donc pas de pic de processeur même si le cœur est verrouillé.

En gros, vous avez raison, mais quel est le nombre de cœurs le plus efficace? 2? 4? 12? Cela dépendrait très probablement des habitudes des utilisateurs ... J'ai tendance à ce 2-4 pour la plupart des utilisateurs, mais je ne fais que deviner.

Rob
la source