L’informatique distribuée est le domaine de l’informatique qui étudie la conception et le comportement des systèmes qui impliquent de nombreux composants faiblement couplés. Les composants de ces systèmes distribués peuvent être plusieurs threads dans un seul programme, plusieurs processus sur une seule machine, ou plusieurs processeurs connectés par une mémoire partagée ou un réseau. Les systèmes distribués sont exceptionnellement vulnérables au nondéterminisme, c’est-à-dire que le comportement du système dans son ensemble ou de ses composants individuels est difficile à prévoir. Une telle imprévisibilité nécessite un large éventail de nouvelles techniques au-delà de celles utilisées dans l’informatique traditionnelle.
Comme d’autres domaines de l’informatique, l’informatique distribuée couvre un large éventail de sujets allant de l’appliqué au très théorique. Du côté de la théorie, le calcul distribué est une riche source de problèmes mathématiquement intéressants dans lesquels un algorithme est opposé à un adversaire représentant les éléments imprévisibles du système. L’analyse des algorithmes distribués a souvent une forte saveur de théorie des jeux, car les exécutions impliquent une interaction complexe entre le comportement de l’algorithme et les réponses du système.
Michael Fischer est l’un des chercheurs pionniers de la théorie du calcul distribué. Son travail sur l’utilisation d’arguments adverses pour prouver des limites inférieures et des résultats d’impossibilité a façonné une grande partie de la recherche sur ce domaine. Il est actuellement activement impliqué dans l’étude des questions de sécurité dans les systèmes distribués, notamment les outils cryptographiques et la gestion de la confiance.
Les recherches de James Aspnes mettent l’accent sur l’utilisation de la randomisation pour résoudre les problèmes fondamentaux du calcul distribué. De nombreux problèmes qui s’avèrent difficiles ou impossibles à résoudre à l’aide d’un algorithme déterministe peuvent être résolus si les processus peuvent tirer à pile ou face. L’analyse des algorithmes qui en résultent nécessite souvent l’utilisation de techniques non triviales issues de la théorie des probabilités.
La recherche sur les systèmes distribués à Yale comprend des travaux portant à la fois sur le support des langages de programmation pour le calcul distribué et sur l’utilisation de techniques de systèmes distribués pour supporter la programmation parallèle. De tels travaux visent à soulager les concepteurs de systèmes distribués d’une partie du fardeau de la compréhension des systèmes distribués complexes en laissant le compilateur ou les bibliothèques d’exécution gérer les questions d’ordonnancement et de communication.
Le projet FLINT de Zhong Shao se concentre sur le développement d’une nouvelle architecture à code mobile pour soutenir la migration efficace des données et des programmes sur des plates-formes informatiques distribuées et hétérogènes. FLINT utilise un langage intermédiaire typé commun pour prendre en charge l’exécution sûre de codes écrits dans plusieurs langages de programmation tels que Java, C et ML.
Le travail de David Gelernter sur le développement du langage de coordination Linda et des outils associés est un exemple d’utilisation de techniques de systèmes distribués pour prendre en charge la programmation parallèle. Linda fournit un « espace de tuple » virtuel à travers lequel les processus peuvent communiquer sans tenir compte de leur emplacement. Son projet actuel Lifestreams simplifie également les tâches de gestion de l’information en libérant l’utilisateur de nombreuses tâches administratives imposées par les systèmes de fichiers traditionnels. Avi Silberschatz se spécialise dans les techniques de gestion des transactions, dans la mesure où elles concernent à la fois les systèmes de bases de données distribuées et les systèmes multi-bases de données.