En informatique, la simultanéité est l'exécution de plusieurs séquences d'instructions en même temps. Dans un système d'exploitation, cela se produit lorsque plusieurs threads de processus s'exécutent en parallèle. Ces fils peuvent communiquer entre eux via la mémoire partagée ou la transmission de messages.
La distribution est une forme de concurrence où toutes les communications entre les threads simultanés se font exclusivement via la transmission de messages. La distribution est utile car elle utilise une mise à l'échelle plus clémente de la consommation de ressources, ce qui économise ces ressources. Alors que la simultanéité de la mémoire partagée nécessite souvent un seul processeur par thread, la distribution permet à plusieurs threads de coexister et de communiquer entre eux.
La concurrence est également une philosophie de conception de programmation. En programmation concurrente, les programmeurs tentent de décomposer un problème complexe en plusieurs processus d'exécution simultanés qui peuvent être traités individuellement. Bien que la programmation concurrente offre une meilleure structure de programme que la programmation séquentielle, elle n'est pas toujours plus pratique. Dans un système concurrent, les calculs exécutés en même temps peuvent diverger, donnant des réponses indéterminées. Le système peut se terminer par un blocage si des maxima bien définis ne sont pas attribués pour la consommation de ressources de chacun des threads en cours d'exécution. Ainsi, pour concevoir une concurrence robuste dans un système d'exploitation, un programmeur doit à la fois réduire un problème en tâches individuelles et parallèles et coordonner l'exécution, l'allocation de mémoire et l'échange de données de ces tâches.