Ich werde viel Text aus dem Buch Operating Systems Concepts von ABRAHAM SILBERSCHATZ, PETER BAER GALVIN und GREG GAGNE zusammen mit meinem eigenen Verständnis der Dinge verwenden.
Prozess
Jede Anwendung befindet sich in Form von Text (oder Code) auf dem Computer.
Wir betonen, dass ein Programm an sich kein Prozess ist. Ein Programm ist eine passive Entität, z. B. eine Datei mit einer Liste von Anweisungen, die auf der Festplatte gespeichert sind (häufig als ausführbare Datei bezeichnet).
Wenn wir eine Anwendung starten, erstellen wir eine Ausführungsinstanz. Diese Ausführungsinstanz wird als Prozess bezeichnet. EDIT: (Gemäß meiner Interpretation, analog zu einer Klasse und einer Instanz einer Klasse, wobei die Instanz einer Klasse ein Prozess ist.)
Ein Beispiel für Prozesse ist Google Chrome. Wenn wir Google Chrome starten, werden 3 Prozesse erzeugt:
• Das Browserprozess ist für die Verwaltung der Benutzeroberfläche sowie der Festplatten- und Netzwerk-E / A verantwortlich. Beim Starten von Chrome wird ein neuer Browserprozess erstellt. Es wird nur ein Browserprozess erstellt.
• • Renderer- Prozesse enthalten Logik zum Rendern von Webseiten. Daher enthalten sie die Logik für den Umgang mit HTML, Javascript, Bildern usw. In der Regel wird für jede in einem neuen Tab geöffnete Website ein neuer Rendererprozess erstellt, sodass möglicherweise mehrere Rendererprozesse gleichzeitig aktiv sind.
• Für jeden verwendeten Plug-In-Typ (z. B. Flash oder QuickTime) wird ein Plug-In- Prozess erstellt. Plug-In-Prozesse enthalten den Code für das Plug-In sowie zusätzlichen Code, mit dem das Plug-In mit den zugehörigen Renderer-Prozessen und dem Browser-Prozess kommunizieren kann.
Faden
Um dies zu beantworten, sollten Sie zunächst wissen, was ein Prozessor ist. Ein Prozessor ist die Hardware, die die Berechnungen tatsächlich ausführt. BEARBEITEN: (Berechnungen wie das Hinzufügen von zwei Zahlen, das Sortieren eines Arrays und das Ausführen des geschriebenen Codes)
Fahren Sie nun mit der Definition eines Threads fort.
Ein Thread ist eine Grundeinheit der CPU-Auslastung . Es umfasst eine Thread-ID, einen Programmzähler, einen Registersatz und einen Stapel.
EDIT: Definition eines Threads von der Intel-Website:
Ein Thread oder Thread der Ausführung ist ein Softwarebegriff für die grundlegende geordnete Folge von Anweisungen, die von einem einzelnen CPU-Kern durchlaufen oder verarbeitet werden können.
Wenn der Renderer-Prozess in der Chrome-Anwendung ein Array von Zahlen sortiert, erfolgt die Sortierung nach einem Thread / Thread der Ausführung. (Die Grammatik in Bezug auf Threads scheint mir verwirrend)
Meine Interpretation der Dinge
Ein Prozess ist eine Ausführungsinstanz. Threads sind die eigentlichen Worker, die die Berechnungen über den CPU-Zugriff durchführen. Wenn für einen Prozess mehrere Threads ausgeführt werden, stellt der Prozess gemeinsamen Speicher bereit.
BEARBEITEN:
Andere Informationen, die ich nützlich fand, um mehr Kontext zu geben
Alle modernen Computer haben mehr als einen Thread. Die Anzahl der Threads in einem Computer hängt von der Anzahl der Kerne in einem Computer ab.
Concurrent Computing :
Aus Wikipedia:
Concurrent Computing ist eine Form des Rechnens, bei der mehrere Berechnungen in überlappenden Zeiträumen - gleichzeitig - statt nacheinander ausgeführt werden (eine wird vor dem nächsten abgeschlossen). Dies ist eine Eigenschaft eines Systems - dies kann ein einzelnes Programm, ein Computer oder ein Netzwerk sein - und es gibt einen separaten Ausführungspunkt oder "Kontrollthread" für jede Berechnung ("Prozess").
Also könnte ich ein Programm schreiben, das die Summe von 4 Zahlen berechnet:
(1 + 3) + (4 + 5)
In dem Programm zur Berechnung dieser Summe (dies ist ein Prozess, der auf einem Ausführungsthread ausgeführt wird) kann ich einen anderen Prozess aufteilen, der auf einem anderen zu berechnenden Thread ausgeführt werden kann (4 + 5) und das Ergebnis an den ursprünglichen Prozess zurückgeben, während der Der ursprüngliche Prozess berechnet die Summe von (1 + 3).