Article de reference

Communication inter-processus

Un système de calcul distribué qui connecte de nombreux ordinateurs personnels via Internet grâce à une communication réseau interprocessus En informatique , la communication in...

Un système de calcul distribué qui connecte de nombreux ordinateurs personnels via Internet grâce à une communication réseau interprocessus

En informatique , la communication interprocessus ( CIP ) désigne le partage de données entre des processus s'exécutant au sein d'un système informatique, ou entre plusieurs systèmes de ce type. Les mécanismes de CIP peuvent être fournis par un système d'exploitation . Les applications utilisant la CIP sont souvent classées en clients et serveurs : le client demande des données et le serveur répond à ces demandes. De nombreuses applications combinent les fonctions de client et de serveur, comme c'est souvent le cas en informatique distribuée .

La communication interprocessus (IPC) est essentielle à la conception des micro-noyaux et des nano-noyaux , qui réduisent le nombre de fonctionnalités offertes par le noyau. Ces fonctionnalités sont ensuite obtenues par la communication avec des serveurs via l'IPC, ce qui entraîne une augmentation significative des communications par rapport à un noyau monolithique classique. Les interfaces IPC intègrent généralement des structures de cadres analytiques variables. Ces processus garantissent la compatibilité entre les protocoles multivectoriels sur lesquels reposent les modèles IPC.

Un mécanisme de communication interprocessus (IPC) est soit synchrone , soit asynchrone. Des primitives de synchronisation peuvent être utilisées pour obtenir un comportement synchrone avec un mécanisme IPC asynchrone.

exigences logicielles , telles que les performances , la modularité et les circonstances du système telles que la bande passante et la latence du réseau .

MéthodeDescription courteFourni par ( systèmes d'exploitation ou autres environnements)
DéposerUn enregistrement stocké sur disque, ou un enregistrement synthétisé à la demande par un serveur de fichiers, qui peut être consulté par plusieurs processus.La plupart des systèmes d'exploitation
Fichier de communicationsUne forme unique de communication interprocessus (IPC) apparue à la fin des années 1960, qui ressemble fortement au protocole 9P du Plan 9.Système de temps partagé de Dartmouth
Signal ; également piège de système asynchroneUn message système envoyé d'un processus à un autre, généralement non pas pour transférer des données, mais pour commander à distance le processus partenaire.La plupart des systèmes d'exploitation
DouilleDonnées transmises via une interface réseau, soit à un autre processus sur le même ordinateur, soit à un autre ordinateur du réseau. Orientées flux ( TCP ; les données écrites via un socket nécessitent un formatage pour préserver les limites des messages) ou, plus rarement, orientées messages ( UDP , SCTP ).La plupart des systèmes d'exploitation
socket de domaine UnixSimilaires aux sockets Internet, les sockets de domaine utilisent le système de fichiers comme espace d'adressage. Un processus référence un socket de domaine comme inode , et plusieurs processus peuvent communiquer avec un même socket.Tous les systèmes d'exploitation POSIX et Windows 10
File d'attente de messagesUn flux de données similaire à un socket, mais qui préserve généralement les limites des messages. Typiquement implémenté par le système d'exploitation, il permet à plusieurs processus de lire et d'écrire dans la file d'attente de messages sans être directement connectés entre eux.La plupart des systèmes d'exploitation
Pipe anonymeUn canal de données unidirectionnel utilisant les entrées et sorties standard . Les données écrites à l'extrémité d'écriture du canal sont mises en mémoire tampon par le système d'exploitation jusqu'à leur lecture à l'extrémité de lecture. Une communication bidirectionnelle entre processus peut être réalisée en utilisant deux canaux en sens inverse.Tous les systèmes POSIX , Windows
Tuyau nomméUn tube nommé est traité comme un fichier. Au lieu d'utiliser les entrées et sorties standard comme avec un tube anonyme, les processus écrivent et lisent depuis un tube nommé, comme s'il s'agissait d'un fichier classique.Tous les systèmes POSIX, Windows, AmigaOS 2.0+
Mémoire partagéePlusieurs processus ont accès au même bloc de mémoire , ce qui crée un tampon partagé permettant aux processus de communiquer entre eux.Tous les systèmes POSIX, Windows
Transmission de messagesPermet à plusieurs programmes de communiquer via des files d'attente de messages et/ou des canaux non gérés par le système d'exploitation. Couramment utilisé dans les modèles de concurrence.Utilisé dans les paradigmes LPC , RPC , RMI et MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX , et autres
Fichier mappé en mémoireUn fichier mappé en RAM et modifiable directement par changement d'adresse mémoire, sans passer par un flux de données. Il offre les mêmes avantages qu'un fichier standard .Tous les systèmes POSIX, Windows

Applications

Invocation de méthode à distance (RMI) en Java
  • ONC RPC
  • XML-RPC ou SOAP
  • JSON-RPC
  • M-Bus )
  • .NET Remoting
  • gRPC
  • Pile de communication de la plateforme

    Voici quelques exemples de systèmes de messagerie et d'information qui utilisent des mécanismes de communication interprocessus (IPC) mais qui n'implémentent pas eux-mêmes l'IPC :

    Protocole de communication de bureau (DCOP) de KDE obsolète et remplacé par D-Bus
  • D-Bus
  • OpenWrt utilise l'architecture de microbus ubus
  • API de communications multicœurs MCAPI
  • SIMPL Le projet de messagerie interprocessus synchrone pour Linux (SIMPL)
  • 9P (Protocole de système de fichiers Plan 9)
  • Environnement informatique distribué (DCE)
  • Épargne
  • Moteur de communication Internet (ICE) de ZeroC
  • ØMQ
  • YAMI4
  • Enlightenment_(logiciel) E16 utilise eesh comme IPC
  • Pile de communication du système d'exploitation

    Voici les API spécifiques à une plateforme ou à un langage de programmation :

    Les événements Apple d' Apple Computer , anciennement connus sous le nom de Communications inter-applications (IAC)
  • Ports ARexx
  • LINX d'Enea pour Linux (logiciel libre) et divers processeurs DSP et à usage général sous OSE
  • Les ports Mach du noyau Mach
  • ActiveX de Microsoft , le modèle d'objets de composants (COM), Microsoft Transaction Server ( COM+ ), le modèle d'objets de composants distribués (DCOM), l'échange dynamique de données (DDE), la liaison et l'incorporation d'objets (OLE), les canaux anonymes , les canaux nommés , l'appel de procédure locale , les emplacements de messagerie , la boucle de messages , MSRPC , la communication à distance .NET et Windows Communication Foundation (WCF)
  • SPX de Novell
  • POSIX mmap , files de messages , sémaphores , et mémoire partagée
  • Messages de RISC OS
  • Portes Solaris
  • Les files d'attente de messages, les sémaphores et la mémoire partagée de System V
  • Communication interprocessus transparente sous Linux (TIPC)
  • OpenBinder Ouvrir le classeur
  • Service PPS (publication/abonnement persistant) de QNX
  • Modèles d'objets distribués

    Voici des API spécifiques à une plateforme ou à un langage de programmation qui utilisent la communication interprocessus (IPC), mais qui ne l'implémentent pas elles-mêmes :

    sessions PHP
  • Ruby distribué
  • Architecture de courtier de requêtes d'objets communs (CORBA)
  • L'IPC asynchrone d' Electron partage des objets JSON entre un processus principal et un processus de rendu