Fils & Processus de Vs le MultiThreading & Multi-Core/Multiprocesseur : Comment ils sont cartographiés?
J'ai été très confus, mais le fil de discussion suivant effacé mes doutes:
Multitraitement, le Multithreading,l'HyperThreading, Multi-core
Mais il traite de questions de la part du point de vue matériel. Je veux savoir comment ces caractéristiques matérielles sont mappés à des logiciels?
Une chose qui est évidente, c'est que il n'y a pas de différence entre Multiprocesseur(=Mutlicpu) et Multicœur autre que celui dans tous les processeurs multicœurs résider sur la même puce(die) où, comme dans le Multiprocesseur tous les processeurs sont sur leurs propres puces & connectés.
Donc, mutlicore/les systèmes multiprocesseurs sont capables d'exécuter plusieurs processus (firefox,mediaplayer,googletalk) à la "sametime" (à la différence de la commutation de contexte de ces processus sur un système monoprocesseur) Droit?
Si elle correcte. Je suis clair jusqu'à présent. Mais la confusion survient lorsque le multithreading entre en image.
-
MultiThreading "pour le" traitement en parallèle. droit?
-
Ce sont des éléments qui sont impliqués dans le multithreading à l'intérieur de l'uc? schéma? Pour moi, pour exploiter la puissance de traitement parallèle des deux tâches indépendantes, ce qui devrait être le requriements de CPU?
-
Quand les gens disent que le changement de contexte de threads. Je n'ai pas vraiment l'obtenir. parce que si son contexte de commutation de fils puis son pas en parallèle. les fils doivent être exécutés "scrictly simultanément". droit?
Ma notion du multithreading, c'est que:
En considérant un système avec un seul processeur. lorsque le processus est le contexte passé à firefox. (supposons) chaque onglet de firefox est un fil et tous les threads d'exécuter strictement au même moment. Pas comme un thread est exécuté pendant un certain temps puis de nouveau un autre thread a pris jusqu'à ce que le changement de contexte moment est arrivé. -
Qu'advient-il si je lance un logiciels multithread sur un processeur qui ne peut pas gérer les threads? Je veux dire comment le cpu gérer un tel logiciel?
-
Si tout est bon jusqu'à présent, maintenant la question est COMBIEN de FILS? Elle doit être limitée par le matériel, je suppose? Si le matériel peut prendre en charge que 2 fils et je commence à 10 threads dans mon processus. Comment cpu manipuler? Avantages/Inconvénients? À partir d'un logiciel point de vue technique, tout en développant un logiciel qui sera utilisé par les utilisateurs dans une grande variété de systèmes, Alors comment pourrais-je décider dois-je aller pour le multithreading? si oui, combien de fils?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, essayez de comprendre le concept de "processus" et de "thread". Un thread est une unité de base pour l'exécution: un thread est prévue par le système d'exploitation et exécuté par le PROCESSEUR. Un processus est une sorte de conteneur qui contient plusieurs threads.
Oui, que ce soit en multi ou de traitement multi-threading est pour le traitement en parallèle. Plus précisément, pour exploiter fil au niveau de parallélisme.
Bon, le multi-threading pourrait signifier matériel multi-threading (un exemple est l'HyperThreading). Mais, je suppose que vous venez de dire le multithreading dans le logiciel. En ce sens, le PROCESSEUR devrait soutenir la commutation de contexte.
La commutation de contexte est nécessaire pour mettre en œuvre multi-tâches même physiquement unique de base par répartition dans le temps.
Dire qu'il y a deux cœurs physiques et quatre très occupé threads. Dans ce cas, les deux fils sont simplement en attente jusqu'à ce qu'ils aient la possibilité de l'utilisation de l'UC. Lire quelques articles liés à la souscription des OS de la planification.
Le nombre de threads qui peuvent courir physiquement dans simultanées est juste identique au nombre de processeurs logiques. Vous demandez à un général de fil problème d'ordonnancement dans les OS de la littérature tels que le " round-robin..
Je fortement vous suggérons d'étudier les bases du système d'exploitation. Passer ensuite le multithreading questions. Il semble que vous êtes encore incertain pour les concepts clés tels que la commutation de contexte et de la planification. Il va prendre une couple de mois, mais si vous voulez vraiment être un expert en informatique logiciels, alors vous devriez savoir de ces concepts de base. Veuillez prendre toutes les OS des livres et à la conférence de diapositives.
Threads s'exécutant sur la même base techniquement, ne sont pas parallèles. Ils apparaissent uniquement être exécutés en parallèle, la CPU passe entre eux très rapide (pour nous, les humains). Ce commutateur est ce qui est appelé changement de contexte.
Maintenant, les threads s'exécutant sur différents cœurs sont exécutés en parallèle.
La plupart des Processeurs modernes ont un nombre de cœurs, cependant, la plupart des nouveaux Systèmes d'exploitation (windows, linux et amis) ont l'habitude de s'exécuter beaucoup plus grand nombre de threads, ce qui provoque encore des changements de contexte.
Même si aucun utilisateur n'programme est exécuté, encore de l'OS lui-même effectue des changements de contexte pour l'entretien de travail.
Cela devrait répondre à 1-3.
Sur 4: en gros, chaque processeur peut travailler avec les threads. il est beaucoup plus d'une caractéristique du système d'exploitation. Thread est en gros: de la mémoire (en option), la pile et les registres, une fois ceux-ci sont remplacés vous êtes dans un autre thread.
5: le nombre de threads est assez élevé et est limité par l'OS. Habituellement, il est plus élevé qu'un programmeur peut gérer avec succès 🙂
Le nombre de threads est dictée par votre programme:
est-il IO lié?
Plusieurs threads sont distincts des "chaînes" de commandes dans un délai d'un processus. Du CPU au point de vue des threads sont plus ou moins comme des processus. Chaque thread a son propre ensemble de registres et de sa propre pile.
La raison pour laquelle vous pouvez avoir plus de threads que de Processeurs est que la plupart des threads n'ont pas besoin de CPU tout le temps. Fil peut être en attente pour l'entrée d'utilisateur, de télécharger quelque chose à partir du web ou de l'écriture sur le disque. Alors qu'il est en train de faire, il n'a pas besoin de CPU, de sorte PROCESSEUR est libre d'exécuter d'autres threads.
Dans votre exemple, chaque onglet de Firefox probablement peut même avoir plusieurs threads. Ou ils peuvent partager certains threads. Vous avez besoin d'une pour le téléchargement, l'un pour le rendu, l'un pour la boucle de message (la saisie de l'utilisateur), et peut-être une à exécuter Javascript. Vous ne pouvez pas combiner facilement car pendant que vous téléchargez, vous avez encore besoin de réagir à l'entrée de l'utilisateur. Toutefois, télécharger fil dort la plupart du temps, et même quand c'est le téléchargement il doit CPU seulement de temps en temps, et le message de la boucle de fil se réveille lorsque vous appuyez sur un bouton.
Si vous allez dans le gestionnaire des tâches, vous verrez que, malgré tous ces fils de votre utilisation du PROCESSEUR est encore très faible.
Bien sûr si votre fils ne certains arithmétique des tâches, alors vous ne devriez pas créer un trop grand nombre d'entre eux que vous n'obtenez pas gain de performances (même si il peut y avoir architectural des avantages!).
Cependant, si ils sont principalement I/O bound ensuite créer autant de threads que votre architecture dicte. Il est difficile de donner des conseils sans savoir votre tâche particulière.
Manière générale, oui, mais "parallèle" peut signifier différentes choses.
Cela dépend de ce que les tâches que vous souhaitez exécuter en parallèle.
Pas nécessairement. Certains (la plupart) des threads passent beaucoup de temps à ne rien faire. Pourrait tout aussi bien passer pour un thread qui veut faire quelque chose.
L'OS poignées de fil à passer. Il va déléguer à différents cœurs si elle veut. Si il n'y a qu'un seul cœur, il va diviser le temps entre les différents threads et de processus.
Le nombre de threads est limitée par le logiciel et le matériel. Fils de consommer du processeur et de la mémoire, à des degrés divers en fonction de ce qu'ils font. Le fil logiciel de gestion peut imposer ses propres limites en tant que bien.
L'essentiel à retenir est la séparation entre logique/virtuel, le parallélisme et le réel/parallélisme matériel. Avec la moyenne de votre OS, un système d'appel est effectué afin de générer un nouveau thread. Ce qui se passe réellement (si il est associé à un autre cœur, un autre thread matériel sur le même noyau, ou en attente dans le pool de threads logiciels) est jusqu'à l'OS.
Le Multithreading est l'exécution de plus d'un thread à la fois. Il peut arriver, à la fois sur des processeurs et le processeur multicœur systèmes. Pour les systèmes monoprocesseur, le changement de contexte de ses effets. Coup d'oeil!La commutation de contexte dans ce calcul l'environnement se réfère à tranches de temps par le système d'exploitation. Donc ne pas confondre. Le système d'exploitation est celui qui contrôle l'exécution des autres programmes. Il permet à un programme de s'exécuter dans le PROCESSEUR à la fois. Mais la fréquence à laquelle les fils sont passés dans et hors de la CPU détermine la transparence de parallélisme exposées par le système.
Multicœur de l'environnement,le multithreading, se produit lorsque chaque noyau s'exécute à un fil.Si,dans multicœur de nouveau,le changement de contexte peut se produire dans les cœurs individuels.
Je pense que les réponses sont assez bien au point et vous donner une bonne base de contexte. En substance, disons que vous avez processeur quad core, mais chaque cœur est capable d'exécuter 2 threads simultanés.
Remarque, qu'il n'est que légère (ou pas) augmentation de la vitesse si vous utilisez 2 threads simultanés sur 1 core contre vous exécutez le 1er thread et puis la 2ème fil à la verticale. Cependant, chaque noyau physique ajoute de la vitesse à votre flux de travail général.
Maintenant, disons que vous avez un processus en cours d'exécution sur votre système d'exploitation qui a plusieurs threads (c'est à dire des besoins à l'exécution de plusieurs choses en "parallèle") et a une sorte de pile de tâches dans une file d'attente (ou un autre système avec des règles de priorité). Ensuite, le logiciel envoie des tâches à une file d'attente et de votre processeur tente d'exécuter aussi vite que possible. Maintenant, vous avez 2 cas:
Je suggère la lecture de Page Wikipedia sur le thread. Très première image il vous donne déjà un bel aperçu. 🙂