2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
La collaboration est requise entre les processus. Par exemple, tous les niveaux de gestion d’une école sont interconnectés et ne peuvent pas être gérés verticalement. C'est précisément parce que les processus doivent collaborer. La condition préalable à la collaboration est que les processus doivent communiquer. Certaines données sont prêtes à être notifiées, certaines données sont simplement des données transmises et d'autres sont des données liées au contrôle.
Fait : les processus sont indépendants, processus = structure de données du noyau, code et données du processus
Le but de la communication de processus :
Le coût de la communication entre les processus peut être légèrement plus élevé : les processus sont indépendants et les ressources ouvertes par un processus ne sont pas visibles par un autre processus. Lorsque nous avons parlé du processus parent-enfant auparavant, les données du processus parent ont été héritées par le processus enfant. Cela n'appartient pas à la communication. Il peut être hérité mais pas toujours. Il y a une différence entre pouvoir transmettre des informations. et toujours être capable de transmettre des informations.
Le principe de la communication inter-processus : laissez d'abord les différents processus voir la même ressource (du système d'exploitation) ("un morceau de mémoire"). Les deux processus sont indépendants. Pour parvenir à communiquer, il faut un outil, à savoir le système d'exploitation, pour permettre aux deux processus d'avoir la même mémoire. La raison pour laquelle le système d'exploitation fait cela est déterminée par l'utilisateur.
Comment demander au système d'exploitation de créer des ressources :
Un pipeline est essentiellement un fichier au niveau de la mémoire qui n'a pas besoin d'être vidé sur le disque.
Tout d'abord, le processus parent ouvre un fichier deux fois en mode lecture et écriture. La raison de l'ouverture du fichier deux fois est d'obtenir deux objets de fichier struct, de sorte qu'il y ait deux pointeurs de lecture et d'écriture pour un fichier, afin que les opérations de lecture et d'écriture soient effectuées. utilisez des pointeurs indépendants. De cette façon, la lecture et l’écriture ne s’influenceront pas.Le pointeur de lecture-écriture enregistre la position actuelle de lecture ou d'écriture du fichier, unstruct file
Il n'y a qu'un seul pointeur de lecture-écriture dans le fichier. Lors de l'écriture (ou de la lecture) dans le fichier, le pointeur de lecture-écriture se déplacera, puis lira (écrira) à nouveau. À ce moment, le pointeur de lecture-écriture n'est plus. à la position d'origine et ne peut pas lire le contenu qui vient d'être écrit, vous devez donc ouvrir le même fichier deux fois de différentes manières. Créez ensuite un processus enfant. Le processus enfant héritera du fichier ouvert dans le processus parent, c'est-à-dire qu'il héritera de la table de descripteurs de fichier du processus parent. À ce stade, les processus parent et enfant partageront la même ressource de fichier. Le processus peut transmettre le descripteur de fichier n° 4 au fichier. Lors de l'écriture dans le fichier, le processus parent peut lire le fichier via le descripteur de fichier n° 3. À ce stade, les processus parent et enfant réalisent la transmission de données, c'est-à-dire la communication. . Les processus parent et enfant voient le même tampon mémoire, que nous appelons ici un fichier tube. Les tuyaux permettent uniquement une communication à sens unique en raison de leur simplicité.
Pourquoi les processus parent-enfant impriment-ils les données sur le même terminal de moniteur ?
Parce que le processus enfant correspondant héritera de la table de descripteurs de fichier correspondant au processus parent, puis pointera vers le même fichier, ce qui signifie que le processus parent saisira un fichier, et le processus enfant saisira également un fichier, et le la même chose sera écrite dans un tampon, le système d’exploitation sera vidé sur le même moniteur.
Le processus ouvrira trois entrées standard et sorties standard par défaut : 0, 1, 2... Comment ouvrir 0, 1, 2 par défaut ?
Toutes les commandes sontbash
processus enfant, à condition quebash
Lorsqu'il est activé, tous les processus enfants sont activés par défaut.
Pourquoi le processus enfant se ferme-t-il activement (0/1/2) sans affecter l'utilisation continue du fichier de surveillance par le processus parent ?
comptage de références au niveau de la mémoire--
, lorsque le nombre de références au niveau de la mémoire diminue jusqu'à 0, les ressources du fichier sont libérées.
Le processus parent-enfant ferme les descripteurs de fichiers inutiles, pourquoi devaient-ils être ouverts auparavant ?
Afin de permettre au processus enfant d'hériter. Il n'est pas nécessaire de le fermer, mais il est recommandé de le fermer pour éviter toute écriture accidentelle.
Pourquoi les tuyaux communiquent-ils à sens unique ?
La méthode est simple, réduit les coûts de développement et permet uniquement une communication unidirectionnelle. Tout fichier est actualisé dans le tampon, puis les données sont actualisées dans le fichier. Ce processus lui-même est unidirectionnel.
Les conduites simples que nous voyons dans la vie sont toutes à sens unique, comme les conduites d'eau, avec une entrée et une sortie, ce qui est conforme aux caractéristiques des conduites.
peut utiliserpipe
Pour créer un canal sans nom, les paramètres ne nécessitent pas de chemin de fichier ni de nom de fichier
int pipe(int pipefd[2]);