Maison  >  Article  >  Opération et maintenance  >  Quelles sont les méthodes de communication inter-processus sous Linux ?

Quelles sont les méthodes de communication inter-processus sous Linux ?

王林
王林original
2020-06-29 13:16:397062parcourir

Les méthodes de communication entre les processus Linux comprennent : 1. Les canaux (y compris les canaux anonymes et les canaux nommés) ; 2. Les files d'attente de messages ; 4. Les sémaphores ; L'essence du canal est un tampon du noyau et le processus utilise le canal pour transférer des informations.

Quelles sont les méthodes de communication inter-processus sous Linux ?

Méthode de communication inter-processus Linux :

(apprentissage recommandé : tutoriel Linux)

Les méthodes de communication de base entre les processus Linux comprennent principalement : les canaux (y compris les canaux anonymes et les canaux nommés), les signaux, les files d'attente de messages, la mémoire partagée, les sémaphores et les sockets.

Les méthodes suivantes sont présentées respectivement :

1. Pipe

L'essence du pipe est un tampon de noyau. suggère que les deux processus qui doivent communiquer se trouvent aux deux extrémités du canal et que les processus utilisent le canal pour transférer des informations. Pour les processus aux deux extrémités du tube, un tube est un fichier, mais ce fichier est spécial. Il n'appartient pas au système de fichiers et n'existe qu'en mémoire.

2. Signal

Le signal est une simulation du mécanisme d'interruption au niveau logiciel. C'est une méthode de communication asynchrone. signal à travers toute opération arriver. Les signaux peuvent interagir directement entre les processus de l'espace utilisateur et le noyau, et le noyau peut utiliser des signaux pour informer les processus de l'espace utilisateur des événements système qui se sont produits.

3. File d'attente des messages

La file d'attente des messages est une liste chaînée de messages, avec un format spécifique, stockée en mémoire et identifiée par l'identifiant de la file d'attente des messages, et permet un ou plusieurs processus y écrivent et lisent des messages

4. Mémoire partagée

permet à plusieurs processus de lire et d'écrire directement le même espace mémoire, qui est destiné à d'autres communications. les mécanismes sont conçus pour fonctionner de manière inefficace.

Afin d'échanger des informations entre plusieurs processus, le noyau réserve spécialement une zone mémoire, qui peut être mappée sur son propre espace d'adressage privé par le processus qui doit y accéder. Le processus peut directement lire et écrire cette mémoire sans copier les données, améliorant ainsi considérablement l'efficacité.

Remarque : la mémoire partagée ne fournit pas de mécanisme de synchronisation. Avant qu'un processus ait fini d'écrire dans la mémoire partagée, il n'existe aucun mécanisme automatique pour empêcher deux autres processus de commencer à la lire. Par conséquent, nous devons généralement utiliser d’autres mécanismes pour synchroniser l’accès à la mémoire partagée.

5. Sémaphore

Un sémaphore est essentiellement un compteur qui identifie le nombre de ressources disponibles, et sa valeur est toujours un entier non négatif. Un sémaphore avec seulement deux valeurs ​​0 et 1 est appelé sémaphore binaire (ou sémaphore binaire), qui peut être utilisé pour identifier si une certaine ressource est disponible.

6. Sockets

Les sockets sont un mécanisme de communication inter-processus plus basique. Contrairement à d'autres méthodes, les sockets peuvent être utilisées sur différentes machines.

Il existe deux types de sockets : basés sur des fichiers et orientés réseau.

(1) Les sockets Unix sont basées sur des fichiers et ont un "nom de famille" - AF_UNIX, qui représente la famille d'adresses : UNIX.

(2) Le deuxième type de socket est basé sur le réseau. Il a également son propre nom de famille - AF_INET, qui représente la famille d'adresses : INTERNET

Peu importe laquelle est utilisée. familles, toutes ont deux types différents de connexions socket : orientées connexion et sans connexion.

(1) Socket orienté connexion (SOCK_STREAM)

Une connexion doit être établie avant la communication. La communication orientée connexion fournit une livraison de données sérialisées, fiables et non dupliquées. Il n'y a pas de limites d'enregistrement. .

Cela signifie que chaque élément d'information peut être divisé en plusieurs éléments, et chaque élément est assuré d'atteindre sa destination, où les informations peuvent ensuite être recollées.

Le principal protocole implémentant ce type de connexion est le Transmission Control Protocol (TCP).

(2) Prise sans connexion (SOCK_DGRAM)

Il n'est pas nécessaire d'établir une connexion avant le début de la communication, et sa séquence, sa fiabilité ou sa fiabilité ne peuvent pas être garanties pendant la transmission des données.

Cependant, les datagrammes préservent les limites des enregistrements, ce qui signifie que le message est envoyé dans son ensemble plutôt que d'abord divisé en fragments.

En raison des garanties apportées par les sockets orientés connexion, leur configuration et leur maintenance des connexions de circuits virtuels nécessitent une surcharge importante. Cependant, les datagrammes ne nécessitent pas ces frais généraux, c'est-à-dire qu'ils sont plus « bon marché ».

Le principal protocole implémentant ce type de connexion est le User Datagram Protocol (UDP).

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