IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Utilisation de TOUS les processeurs


Sujet :

C#

  1. #21
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    désolé Pol63 je ferai de mon mieux la prochaine fois.

  2. #22
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    si vous ne comprenez pas ce que je dis, demandez à google
    Est-ce que là ça s'applique?

  3. #23
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Bon petites explications entre multi-core, multi-threads, multi-processus, et pour finir la synchronisation des threads ou des processus.

    tout le monde sais qu'un processeur multi-core, équivaut à N processeurs. jusque là c'est facile à comprendre, d'ailleurs pour windows, le fait que tu dispose d'un processeur 4 coeurs ou de 4 processeur est strictement identique... la gestion est légèrement différente, mais cela se situe dans les couches primaires du noyau de l'os.
    d'ailleurs plus fort encore, si votre processeur type core i7 6 core (le dernier né) a ses options Hyper Threading actives, votre système ne verra pas 6 processeurs, mais bien 12... 6 physique et 6 logiques... pour le système cela ne change rien à quelques détails prêts.
    ca s'était pour le hardware.

    Maintenant que ce passe t'il dans votre OS favori... et bien en fait, il se passe à peu près la même chose dans tous les OS, enfin plus ou moins...
    Votre est équipé dans son intimité d'un SCHEDULER ou ORDONNANCEUR en Français.
    En fait le scheduler existe depuis qu'on a inventé les systèmes multi-utilisateurs. Cela servait à l'époque des machines monoprocesseur uniquement, à donner l'illusion de multi-tâche, en faisant un partage de temps, équitable entre les processus, en leur donnant un quantum d'exécution, chacun leur tour, en fonction des priorités d'exécution.
    Depuis les machines ont évoluées, les processeurs se sont multipliées et maintenant les coeurs, on a donc généralisé les scheduler pour qu'ils fassent la même chose mais pas sur une seule unité mais sur plusieurs simultanément.
    Techniquement cela ne change pas grand chose, au problème, on dispose juste de plus de ressource à attribuer.
    Le Scheduleur est le maître absolu, il possède un contrôle bas niveau sur le processeur en mode Kernel, et ses entrées/sorties, et particulièrement sur les circuits de gestion d'horloge programmables.

    Quand un processus est divisé en plusieurs threads, cela équivaut à avoir plusieurs processus qui vont avoir le droit de s'exécuter simultanément, ou en partage de temps, selon les ressources disponibles.
    la seule différence est que les threads et les processus, c'est que les threads se partage le même contexte mémoire, et les mêmes ressources, mais pas la même pile d'exécution, comme des processus finalement.

    L'ordonnancement se fait donc systématiquement sur les processeurs si le système le peu, et selon la priorité des processus (et éventuellement l'affinité forcée de certains)
    Forcer l'affinité du processus à un processeur est stupide, car dès lors, le système ne pourra plus dispatcher les threads du processus sur plusieurs processeurs, mais uniquement sur le(s) processeurs forcé(s).
    Donc la fausse croyance qu'un thread est exécuté sur le même processeur que le processus père est infondé, (sauf si affinité définie) surtout que le père est systématiquement dispatché entre chaque processeur au niveau du thread principal, d'ailleurs la notion de thread principale/secondaire pour le système est floue, et pour lui un thread est un thread.

    Maintenant pour la gestion et la synchronisation des processus... Ce n'est pas au processeur et au système de régler cela, c'est aux développeurs des applications, le système expose un tas de mécanismes de synchronisations divers et complexes, pour que cela n'arrive pas.

    Le problème exposé par certains, ou Dead-locks n'est d'ailleurs pas règlé par le système, d'où des applications qui crash, mais on peut les éliminer depuis la barre des taches... Sauf pour les jeux qui occupent une surface DirectX sur tout l'écran...
    En aucun cas une dead lock ne peut faire planter le système d'exploitation, au mieux le matériel, qui du coup fera planter la machine par effet ricochet sur les ressources matérielles occupées, mais là le blocage se fait par la carte mère et les bus, pas par de la volonté de Windows...

    Seul un driver mal conçut entrant en conflit avec des applications pourrait neutraliser le scheduler, sans bloquer le matériel et provoquer un plantage critique de windows, mais dans ce cas, il le détectera et vous renverra un jolie bluescreen...

    Par conséquent pour mettre fin aux polémiques, le simple fait de créer plusieurs threads dans l'application, suffit à faire en sorte que le traitement de celle-ci devienne parallèle sur des systèmes multicoeur/multiprocesseurs.

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/05/2013, 17h23
  2. Utilisation de tous les coeurs de mon proc
    Par coincoin73 dans le forum MFC
    Réponses: 7
    Dernier message: 22/11/2010, 20h53
  3. Réponses: 17
    Dernier message: 18/11/2010, 15h50
  4. VMWare 2.0.2 n'utilise pas tous les CPU physiques !?
    Par guslinux dans le forum VMware
    Réponses: 2
    Dernier message: 02/04/2010, 15h33
  5. Pour qu'un logiciel ne soit utiliser dans tous les sessions
    Par mouloudéen dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 14/12/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo