2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Zwischen den Prozessen ist eine Zusammenarbeit erforderlich. Beispielsweise sind alle Führungsebenen einer Schule miteinander verbunden und können nicht vertikal verwaltet werden. Gerade weil Prozesse zusammenarbeiten müssen, müssen Daten Kategorien haben, einige Daten sind einfach übermittelte Daten und andere sind steuerungsbezogene Daten.
Tatsache: Prozesse sind unabhängig, Prozess = Kernel-Datenstruktur, Code und Daten des Prozesses
Der Zweck der Prozesskommunikation:
Die Kosten für die Kommunikation zwischen Prozessen können etwas höher sein: Prozesse sind unabhängig und alle von einem Prozess geöffneten Ressourcen sind für einen anderen Prozess nicht sichtbar. Als wir zuvor über den Eltern-Kind-Prozess gesprochen haben, wurden die Daten des Eltern-Prozesses vom Kind-Prozess geerbt. Dies kann nicht vererbt werden, aber es gibt keinen Unterschied zwischen der Fähigkeit, Informationen zu übertragen und immer in der Lage zu sein, Informationen zu übermitteln.
Die Prämisse der Kommunikation zwischen Prozessen: Lassen Sie zunächst verschiedene Prozesse dieselbe (Betriebssystem-)Ressource („ein Stück Speicher“) sehen. Um die Kommunikation zu erreichen, ist ein Tool, nämlich das Betriebssystem, erforderlich, damit die beiden Prozesse über denselben Speicher verfügen. Der Grund, warum das Betriebssystem dies tut, wird vom Benutzer bestimmt.
So weisen Sie das Betriebssystem an, Ressourcen zu erstellen:
Eine Pipeline ist im Wesentlichen eine Datei auf Speicherebene, die nicht auf die Festplatte geleert werden muss.
Erstens öffnet der übergeordnete Prozess eine Datei zweimal im Lese- und Schreibmodus. Der Grund für das zweimalige Öffnen der Datei besteht darin, zwei Strukturdateiobjekte zu erhalten, sodass es zwei Lese- und Schreibzeiger für eine Datei gibt, sodass die Lese- und Schreibvorgänge ausgeführt werden können Verwenden Sie unabhängige Zeiger. Auf diese Weise beeinflussen sich Lesen und Schreiben nicht gegenseitig.Der Lese-/Schreibzeiger zeichnet die aktuelle Lese- oder Schreibposition der Datei auf, astruct file
Es gibt nur einen Lese-/Schreibzeiger in der Datei. Beim Schreiben (oder Lesen) wird der Lese-/Schreibzeiger verschoben und dann wieder gelesen (geschrieben). Zu diesem Zeitpunkt ist der Lese-/Schreibzeiger nicht mehr vorhanden an der ursprünglichen Position und kann den gerade geschriebenen Inhalt nicht lesen, sodass Sie dieselbe Datei zweimal auf unterschiedliche Weise öffnen müssen. Erstellen Sie dann einen untergeordneten Prozess. Der untergeordnete Prozess erbt die im übergeordneten Prozess geöffnete Datei, dh die Dateideskriptortabelle des übergeordneten Prozesses. Zu diesem Zeitpunkt teilen sich der übergeordnete und untergeordnete Prozess die gleiche Dateiressource Der Prozess kann den Dateideskriptor Nr. 4 an die Datei übergeben. Beim Schreiben in die Datei kann der übergeordnete Prozess über den Dateideskriptor Nr. 3 aus der Datei lesen. Zu diesem Zeitpunkt realisieren der übergeordnete und untergeordnete Prozess die Datenübertragung, dh die Kommunikation . Die übergeordneten und untergeordneten Prozesse sehen denselben Speicherpuffer, den wir hier als Pipe-Datei bezeichnen. Der Einfachheit halber erlauben Pipes nur eine einseitige Kommunikation.
Warum drucken Eltern-Kind-Prozesse Daten auf demselben Monitorterminal?
Da der entsprechende untergeordnete Prozess die dem übergeordneten Prozess entsprechende Dateideskriptortabelle erbt und dann auf dieselbe Datei verweist, bedeutet dies, dass der übergeordnete Prozess eine Datei eingibt und der untergeordnete Prozess ebenfalls eine Datei eingibt Dasselbe wird in einen Puffer geschrieben, das Betriebssystem wird auf denselben Monitor geschrieben.
Der Prozess öffnet standardmäßig drei Standardeingaben und Standardausgaben: 0, 1, 2 ... Wie öffne ich standardmäßig 0, 1, 2?
Alle Befehle sindbash
Untergeordneter Prozess, solangebash
Wenn es aktiviert ist, sind alle untergeordneten Prozesse standardmäßig aktiviert.
Warum wird der untergeordnete Prozess aktiv geschlossen (0/1/2), ohne die weitere Verwendung der Monitordatei durch den übergeordneten Prozess zu beeinträchtigen?
Referenzzählung auf Speicherebene--
Wenn der Referenzzähler auf Speicherebene auf 0 sinkt, werden die Dateiressourcen freigegeben.
Der Eltern-Kind-Prozess schließt unnötige Dateideskriptoren. Warum mussten sie vorher geöffnet werden?
Damit der untergeordnete Prozess erben kann. Es muss nicht geschlossen werden, es wird jedoch empfohlen, es zu schließen, um versehentliches Schreiben zu verhindern.
Warum sind Rohre eine Einwegkommunikation?
Die Methode ist einfach, reduziert die Entwicklungskosten und ermöglicht nur die Aktualisierung einer beliebigen Datei im Puffer. Anschließend werden die Daten in der Datei aktualisiert.
Die einfachen Rohre, die wir im Leben sehen, sind alle Einwegrohre, wie zum Beispiel Wasserrohre, mit einem Eingang und einem Ausgang, was den Eigenschaften von Pipelines entspricht.
Kann benutzenpipe
Um eine unbenannte Pipe zu erstellen, sind für die Parameter weder Dateipfad noch Dateiname erforderlich
int pipe(int pipefd[2]);