Parallélisation d'une application

Une application peut être parallélisée sur un SMP de deux manières.

  • La méthode classique consiste à diviser l'application en plusieurs processus. Ces processus communiquent à l'aide de la communication interprocessus (IPC), tels que les canaux de communication, les sémaphores ou la mémoire partagée. Les processus doivent pouvoir bloquer l'attente d'événements tels que les messages provenant d'autres processus, et ils doivent coordonner l'accès aux objets partagés avec par exemple des verrous.
  • Une autre solution consiste à utiliser l'interface portable du système d'exploitation pour les threads UNIX (POSIX). Les unités d'exécution ont des problèmes de coordination similaires à ceux des processus, ainsi que des mécanismes similaires pour les traiter. Ainsi, n'importe quel nombre des unités d'exécution d'un processus unique peut être en cours d'exécution simultanément sur des processeurs différents. Le fait de les coordonner et de sérialiser l'accès aux données partagées sont la responsabilité du développeur.

Prenez en considération les avantages des unités d'exécution et des processus lorsque vous déterminez la méthode à utiliser pour paralléliser une application. Les unités d'exécution peuvent être plus rapides que les processus et le partage de mémoire est plus facile. D'autre part, une implémentation de processus se répartit plus facilement sur plusieurs machines ou clusters. Si une application doit créer ou supprimer de nouvelles instances, les unités d'exécution sont plus rapides (temps système plus élevé des processus fork). Pour les autres fonctions, le temps système des unités d'exécution est à peu près le même que celui des processus.