8 Stimmen

Unterschied zwischen Prozess und Thread

Mir wurde heute im Vorstellungsgespräch eine Frage gestellt. Zuerst wurde gefragt, wie man die Synchronisierung zwischen Threads. Dann fragten sie, wie man Synchronisation zwischen Prozessen ermöglicht, weil ich ihnen gesagt habe, dass die Variablen innerhalb eines Prozesses nicht mit anderen Prozessen geteilt werden können, also baten sie mich zu erklären, wie zwei Prozesse miteinander kommunizieren können und wie man Synchronisation und wo die gemeinsame Variable deklariert werden soll? Jetzt ist das Gespräch beendet, aber ich möchte die Antwort wissen, kann mir das jemand erklären?Danke.

0voto

assen.todorov Punkte 36

チェック Terrakotta-Cluster oder Terracotta's DSO-Clustering Dokumentation, um zu sehen, wie dieses Problem gelöst werden kann (Bytecode-Manipulation, Beibehaltung der Semantik der Java Language Specification auf putfield/getfield-Ebene usw.)

0voto

Die einfachste Antwort lautet: Ein Prozess ist ein Programm, das ausgeführt wird, und ein Programm ist nichts anderes als eine Sammlung von Funktionen. wobei der Thread ein Teil des Prozesses ist, weil alle Threads Funktionen sind. Auf andere Weise können wir sagen, dass ein Prozess mehrere Threads haben kann. Das Betriebssystem weist immer den Speicher für einen Prozess zu, und dieser Speicher wird unter den Threads dieses Prozesses aufgeteilt.

0voto

Nyarts Punkte 21

In einem Satz: Prozesse sind unabhängiger gestaltet als Threads.
Ihre Hauptunterschiede lassen sich auf der Speicherebene beschreiben. Unterschiedliche Prozesse nichts miteinander teilen, von Registern über den Vorratsspeicher bis hin zum Heap-Speicher, was sie auf ihren eigenen Wegen sicher macht. Normalerweise jedoch Gewinde sind so konzipiert, dass sie sich einen gemeinsamen Heap-Speicher teilen, was eine engere Verbindung zwischen mehreren Prozessen bei der Berechnung von Aufgaben ermöglicht. Eine effizientere Art und Weise, Rechenressourcen zu nutzen.

Wenn ich z.B. mit 3 Prozessen rechne, muss ich sie jeweils ihre Aufgaben erledigen lassen und auf ihre Ergebnisse auf Systemebene warten, wobei in der Zwischenzeit immer Register und Stack-Speicher belegt werden. Wenn ich jedoch mit 3 Threads rechne, dann kann Thread 2, wenn er seine Arbeit glücklicherweise früher beendet, weil das von ihm berechnete Ergebnis bereits im gemeinsamen Heap-Speicherpool gespeichert wurde, einfach beendet werden, ohne auf die Ergebnisse der anderen Prozesse zu warten, und die frei gewordenen Ressourcen an Registern und Stapelspeicher können für andere Zwecke verwendet werden.

-1voto

Prozess:

  • Ein Prozess ist nichts anderes als ein Programm, das ausgeführt wird.
  • Jeder Prozess hat seinen eigenen Speicheradressraum.
  • Prozesse werden für schwergewichtige Aufgaben verwendet, d. h. im Wesentlichen für die Ausführung von Anwendungen.
  • Die Kosten für die Kommunikation zwischen den Prozessen sind hoch.
  • Der Wechsel von einem Prozess zu einem anderen erfordert einige Zeit zum Speichern und Laden von Registern, Speicherabbildungen usw.
  • Der Prozess ist der Ansatz des Betriebssystems.

Fäden:

  • Ein Thread ist ein leichtgewichtiger Unterprozess.
  • Threads teilen sich denselben Adressraum.
  • Die Kosten für die Kommunikation zwischen den Threads sind gering.

Hinweis: Für jeden Thread ist mindestens ein Prozess erforderlich.

-2voto

Ich nehme an, die Prozesse können über einen Dritten kommunizieren: eine Datei oder eine Datenbank...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X