Dans cet article, vous comprendrez l’importance de tirer parti du multitâche et du multithread dans votre application.
Un système multicœur est un monoprocesseur qui contient deux cœurs ou plus, chaque cœur contenant des microprocesseurs indépendants. Un microprocesseur multicœur effectue un multitraitement dans un seul boîtier physique. Les systèmes multicœurs partagent des ressources informatiques qui sont souvent dupliquées dans les systèmes multiprocesseurs, tels que le cache L2 et le bus frontal.
Les systèmes multicœurs fournissent des performances similaires à celles des systèmes multiprocesseurs, mais souvent à un coût nettement inférieur car une carte mère prenant en charge plusieurs processeurs, tels que les réceptacles de multiprocesseurs, n’est pas requise.
En informatique, le multitâche est une méthode par laquelle plusieurs tâches, également appelées processus, partagent des ressources de traitement communes telles qu’un processeur. Avec un système d’exploitation multitâche, tel que Windows XP, vous pouvez exécuter simultanément plusieurs applications. Le multitâche fait référence à la capacité du système d’exploitation à basculer rapidement entre chaque tâche de calcul pour donner l’impression que les différentes applications exécutent plusieurs actions simultanément.
Étant donné que les fréquences d’horloge de processeur ont augmenté régulièrement au fil du temps, non seulement les applications s’exécutent plus rapidement, mais les systèmes d’exploitation peuvent passer d’une application à l’autre plus rapidement. Cela offre de meilleures performances globales. De nombreuses actions peuvent se produire simultanément sur un ordinateur et les applications individuelles peuvent s’exécuter plus rapidement.
Dans le cas d’un ordinateur doté d’un processeur monocœur, une seule tâche s’exécute à tout moment, ce qui signifie que le processeur exécute activement les instructions pour cette tâche. Le multitâche résout ce problème en planifiant les tâches qui peuvent s’exécuter à un moment donné et quand une autre tâche en attente peut se lancer.
Figure 1. Les systèmes monocœurs planifient des tâches sur 1 processeur pour le multitâche
Lors de l’exécution sur un système multicœur, les systèmes d’exploitation multitâches peuvent réellement exécuter plusieurs tâches simultanément. Les moteurs de calcul fonctionnent indépendamment sur différentes tâches.
Par exemple, sur un système double cœur, quatre applications (p. ex. traitement de texte, e-mail, navigation Web et logiciels antivirus) peuvent accéder chacune à un cœur de processeur distinct en même temps. Vous pouvez effectuer du multitâche en consultant vos e-mails et en tapant sur une lettre simultanément, améliorant ainsi les performances globales des applications.
Figure 2. Les systèmes double cœur permettent aux systèmes d’exploitation multitâches d’exécuter deux tâches simultanément
Le système d’exploitation exécute plusieurs applications plus efficacement en répartissant les différentes applications, ou processus, entre les différents cœurs du processeur. L’ordinateur est en mesure de répartir le travail (chaque cœur gère et passe par deux fois moins d’applications qu’auparavant) et fournir un meilleur débit et des performances globales améliorées. En effet, les applications s’exécutent en parallèle.
Le multithread étend le concept du multitâche aux applications, de sorte que vous pouvez sous-diviser des opérations spécifiques dans une seule application en threads individuels. Chacun des threads peut s’exécuter en parallèle. Le système d’exploitation répartit le temps d’exécution non seulement entre les différentes applications, mais aussi entre les différents threads d’une application.
Dans un programme NI LabVIEW multithread, un exemple d’application peut être divisé en quatre threads : un thread d’interface utilisateur, un thread d’acquisition de données, un thread de communication réseau et un thread d’enregistrement. Vous pouvez hiérarchiser chacun des threads afin qu’ils fonctionnent indépendamment. Ainsi, dans les applications multithread, plusieurs tâches peuvent progresser en parallèle tandis que d’autres applications s’exécutent sur le système.
Figure 3. Le système double cœur facilite le multithread
Les applications qui tirent parti du multithread comportent de nombreux avantages, notamment :
Dans de nombreuses applications, vous effectuez des appels synchrones à des ressources, comme des instruments. Ces appels d’instruments prennent souvent beaucoup de temps. Dans une application monothread, un appel synchrone bloque ou empêche les autres tâches de l’application de s’exécuter tant que l’opération n’est pas terminée. Le multithread empêche ce blocage.
Alors que l’appel synchrone s’exécute sur un thread, d’autres parties du programme qui ne dépendent pas de cet appel s’exécutent sur d’autres threads. L’exécution de l’application progresse au lieu de se bloquer jusqu’à la fin de l’appel synchrone. De cette façon, une application multithread optimise l’efficacité du processeur, puisque ce dernier est actif tant que l’un des threads de l’application est prêt à s’exécuter.
LabVIEW divise automatiquement chaque application en plusieurs threads d’exécution. Les tâches de gestion de threads complexes sont intégrées de façon transparente au système d’exécution de LabVIEW.
Figure 4. LabVIEW utilise plusieurs threads d’exécution
LabVIEW utilise le multithread préemptif sur les systèmes d’exploitation qui proposent cette fonctionnalité. LabVIEW utilise également le multithread coopératif. Les systèmes d’exploitation et les processeurs prenant en charge le multithread préemptif utilisent un nombre limité de threads, de sorte que dans certains cas, ces systèmes reviennent à utiliser le multithread coopératif.
Le système d’exécution exécute les VIs en mode multitâche préemptif en utilisant des threads. Cependant, le nombre de threads disponibles est limité. Pour les applications fortement parallèles, le système d’exécution utilise le multitâche coopératif si les threads disponibles sont occupés. De plus, le système d’exploitation gère le multitâche préemptif entre l’application et les autres tâches.