Différences entre le multithread et le multitâche pour les programmeurs

Aperçu

Dans ce tutorial, vous comprendrez tout l'intérêt du multitâche et du multithread pour vos applications.

Contenu

Rappel

Un système multicœur est une unité centrale monoprocesseur qui contient deux cœurs ou plus, chacun d'entre eux contenant des microprocesseurs indépendants. Un microprocesseur multicœur effectue un multitraitement dans une seule et unique enceinte physique. Les systèmes multicœurs partagent les ressources de calcul qui sont souvent dupliquées dans les systèmes multiprocesseurs, comme le cache L2 et le bus frontal.

Les systèmes multicœurs offrent des performances qui s'apparentent à celles des systèmes multiprocesseurs, mais pour un coût souvent nettement inférieur car une carte mère qui supporte plusieurs processeurs, comme les sockets à plusieurs processeurs, n'est pas nécessaire.

Le multitâche

En informatique, le multitâche est une méthode où plusieurs tâches, aussi appelées processus, partagent des ressources de traitement communes comme une unité centrale. Avec un système d'exploitation multitâche, comme Windows XP, vous pouvez lancer plusieurs applications simultanément. Le multitâche fait référence à la capacité d'un système d'exploitation à passer rapidement d'une tâche informatique à l'autre pour donner l'impression que les différentes applications sont en train d'exécuter plusieurs actions simultanément.

Avec l'augmentation régulière des vitesses d'horloge de l'unité centrale ces dernières années, non seulement les applications s'exécutent désormais plus rapidement, mais les systèmes d'exploitation peuvent aussi passer d'une application à l'autre plus rapidement. Cela permet une augmentation générale des performances. Un grand nombre d'actions peuvent avoir lieu simultanément sur un ordinateur, et les applications individuelles peuvent s'exécuter plus rapidement.

Le monocœur

Dans le cas d'un ordinateur avec un seul et unique cœur d'unité centrale, seule une tâche s'exécute à un moment précis, ce qui signifie que l'unité centrale exécute de façon active des instructions pour cette tâche. Le multitâche résoud ce problème en prévoyant quelle tâche s'exécutera à un moment donné et quand une autre tâche en attente s'exécutera.

 

Les systèmes monocœurs permettent de procéder au multitâche des systèmes d'exploitation

Figure n°1. Les systèmes monocœurs prévoient des tâches sur une unité centrale sur laquelle procéder au multitâche

 

Le multicœur

Sur un système multicœur, des systèmes d'exploitation multitâches peuvent vraiment exécuter plusieurs tâches simultanément. Les nombreux moteurs informatiques fonctionnent de façon indépendante sur différentes tâches.

Par exemple, sur un système double-cœur, quatre applications (traitement de texte, e-mail, visite Web et logiciels antivirus) peuvent accéder à un cœur de processeur séparé en même temps. Vous pouvez procéder au multitâche en vérifiant votre e-mail et en tapant une lettre simultanément, améliorant ainsi les performances générales des applications.

 

Les systèmes double-cœurs permettent aux systèmes d'exploitation multitâches d'exécuter deux tâches simultanément

Figure n°2. Les systèmes double-cœurs 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 de façon plus efficace en divisant les différentes applications, ou processus, entre les cœurs des unités centrales séparées. L'ordinateur peut répartir le travail, chaque cœur gère et commute entre des applications deux fois moins nombreuses qu'auparavant, en offrant un débit et des performances supérieurs. En pratique, les applications fonctionnent en parallèle.

 

Le multithread

Le multithread étend l'idée du multitâche aux applications, de sorte que vous pouvez sous-diviser des opérations spécifiques au sein d'une même application en threads individuels. Chaque thread peut fonctionner en parallèle. Le système d'exploitation divise le temps de traitement non seulement entre différentes applications, mais aussi entre chaque thread dans une même application.

Dans un programme National Instruments multithread, un exemple d'application peut être divisé en quatre threads : un thread d'interface utilisateur, un thread d'acquisition de données, une communication en réseau et un thread d'enregistrement. Vous pouvez établir des priorités entre eux afin qu'ils fonctionnent séparément. Ainsi, dans des applications multithread, plusieurs tâches peuvent s'effectuer en parallèle avec d'autres applications qui fonctionnent sur le système.

Les systèmes double-cœurs permettent aux systèmes d'exploitation multitâches d'exécuter deux tâches simultanément

Figure n°3. Un système double-cœur permet le multithread.

Les applications qui tirent parti du multithread profitent de nombreux avantages, dont :

  • un usage plus efficace de l'UC
  • un système plus fiable
  • des performances améliorées sur les ordinateurs multiprocesseurs

Dans bon nombre d'applications, vous faites des appels synchrones à des ressources, comme des instruments. Ces appels d'instruments prennent souvent beaucoup de temps à s'effectuer. Dans une application monothread, un appel synchrone bloque réellement ou empêche les autres tâches de l'application de s'exécuter tant que l'acquisition n'est pas terminée. Le multithread empêche ce blocage.

Pendant que l'appel synchrone s'exécute sur un thread, d'autres parties du programme, qui ne dépendent pas de cet appel, fonctionnent sur différents threads. L'exécution de l'application suit son cours au lieu d'attendre que l'appel synchrone se termine. De cette façon, une application multithread optimise l'efficacité de l'unité centrale parce qu'elle ne reste pas inactive si l'un des threads de l'application est prêt à s'exécuter.

 

 

 

 

Le multithread avec LabVIEW

LabVIEW divise automatiquement chaque application en plusieurs threads d'exécution. Les tâches complexes de gestion de threads sont intégrées de façon transparente au système d'exécution de LabVIEW.

 

Figure n°4. LabVIEW utilise plusieurs threads d'exécution

Le multitâche dans LabVIEW

LabVIEW utilise le multithread préemptif sur les systèmes d'exploitation qui offrent cette fonctionnalité. LabVIEW utilise aussi le multithread coopératif. Les systèmes d'exploitation et les processeurs dotés du multithread préemptif utilisent un nombre limité de threads, de sorte que dans certains cas, ces systèmes reviennent à utiliser du 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 lorsque des threads sont occupés. De plus, le système d'exploitation gère le multitâche préemptif entre l'application et d'autres tâches.