Maison  >  Article  >  Opération et maintenance  >  Quelles sont les trois méthodes de communication entre les processus Linux ?

Quelles sont les trois méthodes de communication entre les processus Linux ?

青灯夜游
青灯夜游original
2021-07-23 16:46:407189parcourir

Trois façons de communiquer entre les processus Linux : 1. Communication canalisée Le processus qui envoie des informations est appelé processus d'écriture, et le processus qui reçoit des informations est appelé processus de lecture. 2. La communication par tampon de messages utilise le tampon de messages comme support intermédiaire, et les opérations d'envoi et de réception des deux parties communicantes sont basées sur des messages. 3. Communication en mémoire partagée.

Quelles sont les trois méthodes de communication entre les processus Linux ?

L'environnement d'exploitation de ce tutoriel : système Ubuntu 16.04, ordinateur Dell G3.

3 façons de communication inter-processus sous Linux

Étant donné que différents processus s'exécutent dans différents espaces mémoire. Les modifications de variables par une partie sont invisibles pour l'autre partie. donc. Le transfert d'informations entre les processus ne peut pas être effectué directement via des variables ou d'autres structures de données, et ne peut être réalisé que via une communication inter-processus.

Selon la différence dans la quantité d'informations lors de la communication de processus, la communication de processus peut être divisée en deux grands types : la communication d'informations de contrôle et la communication de grandes quantités d'informations de données. La première est appelée communication de bas niveau et la seconde, communication de haut niveau.

La communication de bas niveau est principalement utilisée pour le transfert d'informations de contrôle telles que la synchronisation, l'exclusion mutuelle, la résiliation, la suspension, etc. entre les processus.

La communication avancée est principalement utilisée pour l'échange et le partage de blocs de données entre les processus. Les communications avancées courantes incluent les pipelines (PIPE), les files d'attente de messages (MESSAGE), la mémoire partagée (SHARED MEM0RY), etc.

Ici, nous comparons principalement les caractéristiques de ces trois méthodes de communication avancées.

Pipeline Communication (PIPE)

Lorsque deux processus communiquent à l'aide de tuyaux. Le processus qui envoie des informations est appelé processus d’écriture. Le processus qui reçoit des informations est appelé processus de lecture. Le support intermédiaire de communication du pipeline est constitué par les fichiers. Ce type de fichier est généralement appelé fichier pipeline. Il relie un processus d'écriture et un processus de lecture comme un tuyau pour établir la communication entre les deux processus. Le processus d'écriture écrit les informations dans le fichier pipe via l'extrémité d'écriture (extrémité d'envoi) ; le processus de lecture lit les informations du fichier pipe jusqu'à l'extrémité de lecture (extrémité de réception). Les deux processus se coordonnent et écrivent et lisent en continu, formant un pipeline dans lequel les deux parties transfèrent des informations via des tuyaux.

Utilisez l'appel système PIPE() pour créer un fichier de canal sans nom, généralement appelé canal sans nom ou PIPE ; utilisez l'appel système MKNOD() pour créer un fichier de canal nommé. Souvent appelé tube nommé ou FIFO. Le canal sans nom est un mécanisme de communication par canal non permanent. Il sera annulé lorsque tous les processus auxquels il a accédé seront terminés. Les canaux sans nom ne peuvent être utilisés qu’entre des processus ayant des liens familiaux. Des canalisations bien connues peuvent exister dans le système pendant longtemps. Il est également prévu pour être utilisé par des processus de toute relation, mais une utilisation inappropriée peut facilement conduire à des erreurs. Par conséquent, le système d'exploitation transmet les droits de gestion du canal nommé au système pour le contrôle. Une fois le fichier canal créé, les opérations de lecture et d'écriture sur le canal peuvent être réalisées par les appels système WRITE() et READ(); la communication est terminée, CLOSE() peut être utilisé pour Le fichier pipeline est fermé.

Communication du tampon de messages (MESSAGE)

Plusieurs processus indépendants peuvent communiquer entre eux via le mécanisme du tampon de messages. Ce type de communication est réalisé avec le tampon de messages comme support intermédiaire. Les opérations d'envoi et de réception des deux parties communicantes sont basées sur des messages. En mémoire, les tampons de messages sont organisés en files d'attente, souvent appelées files d'attente de messages. Une fois créée, la file d'attente de messages peut être partagée par plusieurs processus. Le processus qui envoie un message peut envoyer n'importe quel nombre de messages à la file d'attente de messages spécifiée à tout moment et vérifier si un processus récepteur attend le message qu'il envoie. Si tel est le cas, réveillez-le : et le processus recevant le message peut récupérer le message de la file d'attente de messages désignée lorsqu'il en a besoin. Si la nouvelle n'est pas encore arrivée. Ensuite, il se met en veille et attend.

Communication à mémoire partagée (MÉMOIRE PARTAGÉE)

​​​​Visant les lacunes de la mise en mémoire tampon des messages qui nécessite le processeur pour copier les messages. Le système d'exploitation fournit une méthode de communication pour l'échange direct de données entre les processus : la mémoire partagée. Cette méthode de communication permet à plusieurs processus de communiquer en utilisant le même segment de mémoire (comme support intermédiaire) avec le support de protocoles de communication externes ou de mécanismes de synchronisation et d'exclusion mutuelle. Il s’agit de l’une des méthodes de communication de données les plus efficaces et sa particularité est qu’il n’y a pas de liens intermédiaires. Attachez directement les pages de mémoire partagée. Mappez les espaces d’adressage virtuels respectifs des processus communiquant entre eux. Cela permet à plusieurs processus d'accéder directement à la même page de mémoire physique. C'est comme accéder à votre propre espace privé (mais ce n'est pas réellement privé mais partagé). Par conséquent, cette méthode de communication inter-processus est le moyen le plus rapide d’établir une communication entre les processus d’un même système informatique. Et c’est là que réside sa limite. Autrement dit, les processus partageant la mémoire doivent coexister sur le même système informatique. Seule la mémoire physique peut être partagée.

Caractéristiques (avantages et inconvénients) des trois méthodes : 1. Les tuyaux sans nom sont simples et pratiques. Mais cela se limite au mode de fonctionnement de la communication à sens unique. Et le partage de canaux ne peut être réalisé qu'entre le processus qui l'a créé et ses processus descendants : bien que des canaux nommés puissent être fournis à des processus ayant n'importe quelle relation. Cependant, comme il existe dans le système depuis longtemps, il est sujet à des erreurs s’il est mal utilisé.

2. La mise en mémoire tampon des messages ne peut plus être limitée aux processus parent-enfant. Il permet à n'importe quel processus d'établir une communication inter-processus via une file d'attente de messages partagée. Et le système appelle des fonctions pour réaliser la synchronisation entre l’envoi et la réception des messages. En conséquence, les utilisateurs n'ont plus besoin de prendre en compte les problèmes de synchronisation lorsqu'ils utilisent des tampons de messages pour la communication. Il est facile à utiliser, mais la copie d'informations nécessite du temps CPU supplémentaire. Ne convient pas aux situations comportant de grandes quantités d’informations ou des opérations fréquentes.

3. La mémoire partagée utilise le tampon mémoire pour échanger directement des informations en réponse aux défauts du tampon de messages. Il n'est pas nécessaire de copier et ses avantages sont la rapidité et la grande quantité d'informations. Cependant, la communication en mémoire partagée est réalisée en attachant le tampon de mémoire partagée directement à l'espace d'adressage virtuel du processus. Par conséquent, le problème de synchronisation des opérations de lecture et d’écriture entre ces processus ne peut pas être réalisé par le système d’exploitation. Ce problème doit être résolu par chaque processus à l'aide d'autres outils de synchronisation. De plus, puisque l'entité mémoire existe dans le système informatique. Par conséquent, il ne peut être partagé que par les processus du même système informatique. Peu pratique pour la communication réseau.

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn