2016-08-10 1 views
1

Jedesmal, wenn ich über etwas, wie „Prozess 0 tut x Aufgabe“, ich bin geneigt, sie Prozessor zu denken, bedeutet.Unterschied zwischen Prozessor und Prozess in paralleler Berechnung?

Nach etwas mehr darüber zu lesen, finde ich, dass es zwei Speicher Klassifikationen, Shared Memory und verteiltem Speicher: Ein gemeinsam genutzter Speicher ist für alle processors- daher verfügbar etwas wie ein roter Faden (was impliziert, gleiche Daten ausführt es ist sinnvoll, es einen Prozess zu nennen), aber auch für den verteilten Speicher wird ein Prozess anstelle eines Prozessors genannt. Zum Beispiel: "Prozess 0 berechnet das partielle Skalarprodukt"

Warum ist das so? Warum heißt es Prozess und nicht Prozessor?

PS. Ich hoffe, diese Frage ist nicht trivial :)

Antwort

2

Diese anderen Antworten sind alle ziemlich genau auf. Prozessoren sind physikalisch, Prozesse sind Software. Eine Quad-Core-CPU wird also vier Prozessoren haben, kann aber viel mehr Prozesse ausführen.

Ihre Verwirrung um verteilte Terminologie ist jedoch fair. Bei verteilter Datenverarbeitung wird typischerweise die X-Anzahl von Prozessen gleich der Anzahl von Hardware-Prozessoren ausgeführt. In diesem Szenario erhält jeder Prozess eine ID in der Software, die oft als Rang bezeichnet wird. Ränge sind unabhängig von Prozessoren und verschiedene Ränge haben unterschiedliche Aufgaben. Wenn Sie also einen Status melden, beziehen sich Informationen auf den Prozessrang und nicht auf den physischen Prozessor.

Um es anders auszudrücken, in verteilten Computern wird normalerweise ein Prozess auf jedem Prozessor ausgeführt. Der Prozess wird eine eindeutige ID haben, die in der Software wichtiger ist als der physische Prozessor, auf dem sie läuft, so dass Statusinformationen über den Prozess gegeben werden. Da die Anzahl der Prozesse und Prozessoren gleich ist, kann diese Unterscheidung ein wenig unscharf werden.

+0

Genau das habe ich gesucht! Tatsächlich sind alle Antworten ziemlich genau, aber die ganze Idee, wie jeder Prozess einen Rang hat und wie dieser lose mit Prozessoren verbunden ist, macht jetzt viel mehr Sinn! Vielen Dank! :) – ashishv

0

Für mich bezieht sich Prozessor auf Maschine, die für Rechenoperationen verantwortlich ist. Process ist eine einzelne Instanz eines Programms. (Ich hoffe, ich habe verstanden, was du meintest).

0

Ich würde sagen, dass sie die Begriffe undeutlich verwenden, weil die meiste Zeit der Kontext es erlaubt und der Unterschied zu einem gewissen Grad subtil sein kann. Das heißt, da jeder Prozess (wenn er single-threaded ist) auf einem Prozessor ausgeführt wird, wollen die Leute typischerweise nicht zwischen der physischen Entität (Prozessor) und der logischen Entität (Prozess) unterscheiden.

Diese Annahme ist möglicherweise falsch, wenn Prozessoren mit Multithreading-Funktionen (SMT und Hyper-Threading für Intel-Prozessoren) und/oder Multithread-Anwendungen berücksichtigt werden, da Prozesse auf jedem verfügbaren Prozessor (oder Thread) ausgeführt werden. In diesen Situationen sollten die Menschen strenger sein, wenn sie diese Aussagen machen. Da es möglich ist, einen Prozess (und sogar einen Thread) mit affinity Befehlen an einen Prozessor (oder Prozessor-Thread) zu binden, können sie beide Ausdrücke unter diesen Umständen undeutlich verwenden.

2

Die Unterscheidung ist Hardware vs Software.

Der Prozess ist die logische Instanz Ihres Programms. Der Prozessor ist die Hardwareeinheit, die den Prozess ausführt. Die meiste Zeit interessiert Sie nicht der eigentliche Prozessor, sondern nur der Prozess, der ausgeführt wird.

Zum Beispiel kann das Betriebssystem beschließen, Ihre Prozesse vorübergehend in den Ruhezustand zu versetzen, um anderen Anwendungen Laufzeit zu geben, und später kann es sie auf verschiedenen Prozessoren aufwecken. Solange Ihre Prozesse zu den erwarteten Ergebnissen führen, sollte dies für Sie nicht von Interesse sein: Alles, was Ihnen wichtig ist, ist die Berechnung, nicht wo sie stattfindet.

Verwandte Themen