Le SMP se caractérise par une architecture « en couplage serré » : tous les processeurs peuvent accéder à toutes les ressources du systèmes,
Un seul système d'exploitation gère l'ensemble des ressources du système.
Le matériel nécessite donc de prendre en compte des problèmes de parallélisme : accès mémoire, cohérence du cache, i/o…
L'ensemble des processeurs sont réliés entre eux grâce à un bus, et les interactions avec le reste du système (accès mémoire et entrées - sorties) sont gérées par le contrôleur mémoire et le contrôleur d'entrées - sorties. L'intégrité et les performances du système repose donc sur les ces deux contrôleurs.
Les
limitations d'un système SMP sont imposées par les caractèristiques de ces
deux contrôleurs, mais surtout par le nombre de processeur :
Plus il y a de processeur plus les conflits
d'accès au niveau matériel (bus) et logiciel (système d'exploitation) sont
difficilement gérable :
Les systèmes possédant un nombre de processeurs supérieur ne correspondent pas à une architecture SMP (couplage sérré), il s'agit soit d'assemblage de systèmes SMP, soit d'architecture répartie (cluster, architecture massivement parallèle).
Sur un système non SMP, l'ordonnanceur traite les processus les uns après les autres.
Le débit de l'ordonnanceur est donc fonction du seul processeur.
Sur un système SMP, l'ordonnanceur fonctionne de
la même manière, mais son débit est augmenté : chaque processeur peut traiter un
processus, l'ordonnanceur peut donc affecter plus de processus aux processeurs
dans un temps donné.
Bien sur, le traitement d'un
processus donné ne se fera pas plus rapidement; mais la parallèlisation de
l'exécution des taches donne l'illusion d'une accélération du traitement.
En contre parti, la parallèlisation entraine un "overhead" de temps d'exécution pour gérer les conflits d'accès aux ressources du système :
Le traitement simultané de plusieurs processus induit des conflits d'accès aux ressources. Un processus monothread s'exécutera donc, au mieux, aussi rapidement que sur un système monoprocesseur. Si un processus est multithread, son traitement peut fortement s'accélérer (parallèlisation du traitement).
Pour tirer profit des capacités du SMP, le système d'exploitation doit être fondé sur le concept de thread. Ainsi on augmente l'efficacité de la commutation thread à thread. Il est nécessaire d'utiliser des mécanismes de verrous pour gérer les conflits d'accès aux ressources. Il est nécessaire d'utiliser des verrous adaptés aux besoins du système (taille du verrouillage, verrou à grain fin ou à gros grain).