Heim >Backend-Entwicklung >PHP-Problem >Was sind die Unterschiede zwischen dem PHP-Prozessmodell, Prozesskommunikationsmethoden und Prozessthreads?
Das PHP-Prozessmodell ist ein ausführendes Programm, eine Entität, die einem Prozessor zugewiesen und vom Prozessor ausgeführt werden kann. Zu den Kommunikationsmethoden des PHP-Prozesses gehören Pipes und Named Pipes, Signale, gemeinsam genutzter Speicher usw.; Threads Der Unterschied besteht darin, dass ein Prozess eine unabhängige Einheit für die Ressourcenzuweisung und -planung ist, während ein Thread die Grundeinheit der CPU-Planung ist.
Die Unterschiede zwischen PHP-Prozessmodell, Prozesskommunikationsmethode und Prozessthread sind:
1 . PHP-Prozessmodell
Das Konzept des Prozesses ist die Grundlage der Struktur des Betriebssystems. Die Designer von Multics verwendeten diesen Fachbegriff erstmals in den 1960er Jahren und er ist allgemeiner als Hausaufgaben. Die Definition eines Prozesses lautet wie folgt:
1. Ein ausführendes Programm.
2. Eine Instanz eines Programms, das auf dem Computer ausgeführt wird.
3. Eine Entität, die dem Auftragsverarbeiter zugewiesen und von diesem ausgeführt werden kann.
4. Eine Aktivitätseinheit, die durch einen einzelnen sequentiellen Ausführungsthread, einen aktuellen Status und eine Reihe verwandter Systemressourcen beschrieben wird.
Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung
2. Der Unterschied zwischen Prozessen und Threads
进程
ist die Grundeinheit der Ressourcenzuteilung. Alle mit dem Prozess verbundenen Ressourcen werden im Prozesskontrollblock PCB
erfasst. Zeigt an, dass der Prozess Eigentümer dieser Ressourcen ist oder sie verwendet.
Darüber hinaus ist der Prozess auch die Planungseinheit, die den Prozessor vorbelegt, und verfügt über einen vollständigen virtuellen Adressraum. Wenn Prozesse geplant werden, verfügen verschiedene Prozesse über unterschiedliche virtuelle Adressräume, und verschiedene Threads innerhalb desselben Prozesses teilen sich denselben Adressraum.
Entsprechend einem Prozess hat ein Thread nichts mit der Ressourcenzuweisung zu tun. Er gehört zu einem bestimmten Prozess und teilt die Ressourcen des Prozesses mit anderen Threads im Prozess.
线程
besteht nur aus relevanten Stack-Registern (System-Stack oder Benutzer-Stack) und der Thread-Steuertabelle TCB
. Register können zum Speichern lokaler Variablen innerhalb eines Threads verwendet werden, sie können jedoch keine Variablen speichern, die sich auf andere Threads beziehen.
Normalerweise kann ein Prozess mehrere Threads enthalten, die die Ressourcen des Prozesses nutzen können. In Betriebssystemen, die Threads einführen, werden Prozesse normalerweise als Grundeinheit der Ressourcenzuweisung und Threads als Grundeinheit für unabhängigen Betrieb und unabhängige Planung betrachtet. Da Threads kleiner als Prozesse sind und grundsätzlich keine Systemressourcen besitzen, ist der Aufwand für ihre Planung viel geringer, was den Grad der gleichzeitigen Ausführung mehrerer Programme im System effizienter erhöhen und dadurch die Systemressourcen deutlich erhöhen kann Durchsatz. Daher haben in den letzten Jahren eingeführte Allzweckbetriebssysteme Threads eingeführt, um die Parallelität des Systems weiter zu verbessern, und betrachten sie als wichtigen Indikator für moderne Betriebssysteme.
Der Unterschied zwischen Threads und Prozessen kann in den folgenden vier Punkten zusammengefasst werden:
(1) Ein Prozess ist eine unabhängige Einheit für die Ressourcenzuweisung und -planung, während a Thread ist eine CPU-Planung. Die Grundeinheit von
(2) Derselbe Prozess kann mehrere Threads umfassen, und die Threads teilen sich die Ressourcen des gesamten Prozesses (Register, Stapel, Kontext), und ein Prozess umfasst mindestens ein Thread.
(3) Die Erstellung eines Prozesses ruft fork oder vfork auf, und die Erstellung eines Threads ruft pthread_create auf. Nach Beendigung des Prozesses werden alle ihm gehörenden Threads zerstört und das Ende des Threads hat keine Auswirkungen Das Ende von
(4) Threads sind leichtgewichtige Prozesse, und ihre Erstellung und Zerstörung nimmt viel weniger Zeit in Anspruch als Prozesse. Alle Ausführungsfunktionen im Betriebssystem werden durch die Erstellung von Threads abgeschlossen
(5) Synchronisierung und gegenseitiger Ausschluss sind im Allgemeinen bei der Ausführung in Threads erforderlich, da sie alle Ressourcen desselben Prozesses gemeinsam nutzen
(6) Threads haben ihre eigenen privaten Attribute TCB, Thread-ID, Register, und Hardware-Kontext, und der Prozess verfügt auch über ein eigenes privates Attribut des Prozesssteuerungsblocks PCB. Diese privaten Attribute werden nicht gemeinsam genutzt und werden zur Identifizierung eines Prozesses oder Threads verwendet
3. Methoden zur Kommunikation zwischen Prozessen
1. Pipe (Pipe) und Named Pipe (Named Pipe): Pipes können für die Kommunikation zwischen Prozessen mit Affinität verwendet werden, um die Einschränkung zu überwinden, die Pipes nicht haben Daher ermöglicht es zusätzlich zu den Funktionen von Pipes auch die Kommunikation zwischen unabhängigen Prozessen.
2. Signal: Signal ist eine relativ komplexe Kommunikationsmethode, die für Benachrichtigungen bei einem bestimmten Ereignis verwendet wird Tritt in einem empfangenden Prozess auf, kann der Prozess nicht nur für die Kommunikation zwischen Prozessen verwendet werden, sondern auch Signale an den Prozess selbst senden. Zusätzlich zur Unterstützung der frühen Unix-Signalsemantikfunktion Sigal unterstützt Linux auch die Signalfunktion Sigaction, deren Semantik konform ist zum Posix.1-Standard (eigentlich basiert diese Funktion auf BSD. Um einen zuverlässigen Signalmechanismus zu erreichen und die externe Schnittstelle zu vereinheitlichen, hat BSD die Signalfunktion mithilfe der Sigaction-Funktion neu implementiert);
3. Nachrichtenwarteschlange (Nachrichtenwarteschlange): Die Nachrichtenwarteschlange ist eine verknüpfte Liste von Nachrichten, einschließlich der Nachrichtenwarteschlange des Posix-Nachrichtenwarteschlangensystems. Ein Prozess mit ausreichenden Berechtigungen kann Nachrichten zur Warteschlange hinzufügen, und ein Prozess mit Leseberechtigungen kann Nachrichten aus der Warteschlange lesen. Die Nachrichtenwarteschlange überwindet die Mängel von Signalen, die nur wenige Informationen übertragen, Pipes können nur unformatierte Byteströme übertragen und die Puffergröße ist begrenzt.
4. Gemeinsamer Speicher: ermöglicht mehreren Prozessen den Zugriff auf denselben Speicherplatz, was die schnellste verfügbare IPC-Form ist. Es ist auf die geringere Betriebseffizienz anderer Kommunikationsmechanismen ausgelegt. Es wird häufig in Verbindung mit anderen Kommunikationsmechanismen wie Semaphoren verwendet, um eine Synchronisierung und einen gegenseitigen Ausschluss zwischen Prozessen zu erreichen.
Semaphor: Wird hauptsächlich als Mittel zur Synchronisierung zwischen Prozessen und zwischen verschiedenen Threads desselben Prozesses verwendet.
5. Socket: Ein allgemeinerer prozessübergreifender Kommunikationsmechanismus, der für die prozessübergreifende Kommunikation zwischen verschiedenen Maschinen verwendet werden kann. Es wurde ursprünglich für den BSD-Zweig von Unix-Systemen entwickelt, ist aber mittlerweile allgemein auf andere Unix-ähnliche Systeme portierbar: Sowohl Linux- als auch System V-Varianten unterstützen Sockets.
Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen dem PHP-Prozessmodell, Prozesskommunikationsmethoden und Prozessthreads?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!