Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Prozess, Thread, PID, ... ?
- Ersteller Wubudu
- Erstellt am
7H3 N4C3R
Lt. Commander
- Registriert
- Feb. 2002
- Beiträge
- 1.816
Moin moin.
Kurze und knappe Antwort
Ein Prozess wird vom Betriebssystem gestartet. Eine normale Anwendung läuft z.B. in einem Prozess. Dieser Prozess läuft aus Sicht der Anwendung einfach konstant ab. Real hält das BS den Prozess immerwieder an und wechselt zwischen allen laufenden Prozessen nach diversen Regeln (z.B. Priorität) immer wieder ab. Das ist Multitasking.
Jeder Prozess verfügt dabei über einen eigenen virtuellen Speicherraum, der auf den realen, physischen Speicher abgebildet wird. D.h. verschiedene Prozesse können sich nicht gegenseitig "in den Speicher schauen".
Jeder Prozess bekommt vom BS eine ID zugeteilt, die ProzessID oder PID.
Ein Thread ist im wesentlichen nichts anderes als ein Prozess. Unter diversen unixoiden BS wird ein Thread auch LightWeightProcess (LWP) genannt. Ein Thread wird von einem Prozess aus gestartet. Damit ist Multithreading möglich. Er läuft zeitlich gesehen unabhänging vom Prozess, der ihn gestartet hat. Damit wird einen Synchronisation zwischen verschiedenen Threads nötig. Der eigentliche Prozess einer Anwendung wird oft auch Main Thread genannt. Ein wichtiger Unterschied zum Prozess ist, dass sich alle Threads eines Prozesses sich den virtuellen Speicher teilen, d.h. ihn gegenseitig lesen und schreiben können und somit miteinander kommunizieren.
Jeder Thread bekommt vom BS wieder eine ThreadID oder TID. Diese TID wird oft pro Prozess vergeben und macht daher nur im Kontext des dazugehörigen Prozesses Sinn.
Threads und Prozesse können übrigens auf verschiedenen Prozessoren/Kernen ablaufen, sofern mehrere vorhanden sind.
Frage beantwortet?
Kurze und knappe Antwort
Ein Prozess wird vom Betriebssystem gestartet. Eine normale Anwendung läuft z.B. in einem Prozess. Dieser Prozess läuft aus Sicht der Anwendung einfach konstant ab. Real hält das BS den Prozess immerwieder an und wechselt zwischen allen laufenden Prozessen nach diversen Regeln (z.B. Priorität) immer wieder ab. Das ist Multitasking.
Jeder Prozess verfügt dabei über einen eigenen virtuellen Speicherraum, der auf den realen, physischen Speicher abgebildet wird. D.h. verschiedene Prozesse können sich nicht gegenseitig "in den Speicher schauen".
Jeder Prozess bekommt vom BS eine ID zugeteilt, die ProzessID oder PID.
Ein Thread ist im wesentlichen nichts anderes als ein Prozess. Unter diversen unixoiden BS wird ein Thread auch LightWeightProcess (LWP) genannt. Ein Thread wird von einem Prozess aus gestartet. Damit ist Multithreading möglich. Er läuft zeitlich gesehen unabhänging vom Prozess, der ihn gestartet hat. Damit wird einen Synchronisation zwischen verschiedenen Threads nötig. Der eigentliche Prozess einer Anwendung wird oft auch Main Thread genannt. Ein wichtiger Unterschied zum Prozess ist, dass sich alle Threads eines Prozesses sich den virtuellen Speicher teilen, d.h. ihn gegenseitig lesen und schreiben können und somit miteinander kommunizieren.
Jeder Thread bekommt vom BS wieder eine ThreadID oder TID. Diese TID wird oft pro Prozess vergeben und macht daher nur im Kontext des dazugehörigen Prozesses Sinn.
Threads und Prozesse können übrigens auf verschiedenen Prozessoren/Kernen ablaufen, sofern mehrere vorhanden sind.
Frage beantwortet?
CHaos.Gentle
Lt. Commander
- Registriert
- Juni 2004
- Beiträge
- 1.594
Sgt.Speirs
Commander
- Registriert
- Mai 2007
- Beiträge
- 2.416
Kann man Quantenphysik so vereinfachen, dass auch Achtklässler sie versteht?
Ein gewisses Grundverständnis sollte man sich schon erarbeitet haben
Ein gewisses Grundverständnis sollte man sich schon erarbeitet haben
1
1668mib
Gast
Also ganze einfach gesagt:
Prozess entspricht quasi einer Anwendung.
Thread ist ein Ausführungsstrang eines Prozesses, also wenn ein Programm selbst mehrere Dinge gleichzeitig erledigen möchte (also z.B. die Kopierfenster im Explorer, von denen du mehrere offen haben kannst, sind über Threads realisiert, früher war das noch nicht so, da konnte man in dem Fall nicht mit dem Explorer weiterarbeiten)
PID = Prozess-ID, die ID, die der Prozess beim Erstellen vom Betriebssystem zugewiesen bekommt, anhand der er angesprochen werden kann (vergleichbar mit Personalausweisnummer, Sozialversicherungsnummer etc) - die PID ist nur von temporärer Gültigkeit, also nach dem Beenden und Neustarten eines Prozesses bekommt er sehr wahrscheinlich eine neue PID.
Prozess entspricht quasi einer Anwendung.
Thread ist ein Ausführungsstrang eines Prozesses, also wenn ein Programm selbst mehrere Dinge gleichzeitig erledigen möchte (also z.B. die Kopierfenster im Explorer, von denen du mehrere offen haben kannst, sind über Threads realisiert, früher war das noch nicht so, da konnte man in dem Fall nicht mit dem Explorer weiterarbeiten)
PID = Prozess-ID, die ID, die der Prozess beim Erstellen vom Betriebssystem zugewiesen bekommt, anhand der er angesprochen werden kann (vergleichbar mit Personalausweisnummer, Sozialversicherungsnummer etc) - die PID ist nur von temporärer Gültigkeit, also nach dem Beenden und Neustarten eines Prozesses bekommt er sehr wahrscheinlich eine neue PID.
S
samotyr
Gast
Als Metapher:
Wir stellen uns eine simple Firma vor:
Dort gibt es einen Chef. Der Chef ist das Betriebssystem, er verwaltet das ganze Irrenhaus. Prozesse sind seine Mitarbeiter, sie erfüllen irgendwelche Funktionen, wie deine PC Programme auch.
Die Mitarbeiter wiederrum haben selber kleine Helfer, das sind Threads. Die erfüllen irgendwelche Funktionen für die Mitarbeiter, so dass dieser sich auf andere Dinge konzentrieren kann.
Wenn der Chef einen Mitarbeiter beauftragt etwas zu erledigen, dann bekommt dieser eine Nummer auf die Stirn gestempelt, das ist ein PID (ProzessID). Nach Beenden seiner Aufgabe wird der Stempel wieder entfernt.
Zusammengefasst:
Firma -> dein PC
Chef -> das Betriebssystem
Mitarbeiter -> Prozess
Helfer d. Mitarbeiter -> Thread
Stempel auf Mitarbeiterstirn -> PID
Alle Klarheiten beseitigt?
Wir stellen uns eine simple Firma vor:
Dort gibt es einen Chef. Der Chef ist das Betriebssystem, er verwaltet das ganze Irrenhaus. Prozesse sind seine Mitarbeiter, sie erfüllen irgendwelche Funktionen, wie deine PC Programme auch.
Die Mitarbeiter wiederrum haben selber kleine Helfer, das sind Threads. Die erfüllen irgendwelche Funktionen für die Mitarbeiter, so dass dieser sich auf andere Dinge konzentrieren kann.
Wenn der Chef einen Mitarbeiter beauftragt etwas zu erledigen, dann bekommt dieser eine Nummer auf die Stirn gestempelt, das ist ein PID (ProzessID). Nach Beenden seiner Aufgabe wird der Stempel wieder entfernt.
Zusammengefasst:
Firma -> dein PC
Chef -> das Betriebssystem
Mitarbeiter -> Prozess
Helfer d. Mitarbeiter -> Thread
Stempel auf Mitarbeiterstirn -> PID
Alle Klarheiten beseitigt?
Zuletzt bearbeitet:
7H3 N4C3R
Lt. Commander
- Registriert
- Feb. 2002
- Beiträge
- 1.816
Also ich fange mal beim Urschleim an 
Ein Rechner hat überlicherweise nur eine CPU (bzw. eine begrenzte Anzahl davon, aber das lassen wir der Einfachheit halber mal weg).
Auf dieser CPU läuft ein einziges Programm der Reihe nach ab nach dem Prinzip "eines nach dem anderen", nichts geht gleichzeitig.
Wenn du nun ganz normal mit z.B. Windows arbeitest, hast du diverse Programme am Laufen, Browser, WinAmp, E-Mail-Client, etc. Haufenweise verschiedene Programme laufen auch im Hintergrund ab, z.B. Dienste. Und alles macht den Eindruck, dass es "gleichzeitig" passiert - was aber nicht geht, da eben nur eine CPU vorhanden ist.
Das Betriebssystem sorgt genau dafür, dass viele Programme scheinbar gleichzeitig laufen - indem es jedes Programm für eine kurze Weile auf dem Prozessor laufen lässt, dann wieder zum Nächsten wechselt, dieses laufen lässt, etc. Das geschieht so schnell, dass du als Anwender davon nichts bemerkst.
Als Entwickler eines Programmes muss man sich darum überhaupt nicht kümmern. Man schreibt seinen Code einfach der Reihe nach runter und muss sich keine Gedanken soweit darüber machen, dass das eigene Programm gelegentlich unterbrochen wird, damit andere dran kommen, und danach wieder fortgesetzt wird. Aus Entwicklersicht läuft das Programm einfach in einem Faden ab. Das ist ein Thread (engl. Thread = Faden). Ein Thread ist also ein "virtueller Prozessor", auf dem das Programm abläuft. Dieser wird vom Betriebssystem bereitgestellt. (genau genommen sind das Kernel-Threads - aber darüber brauchst du dir erstmal keine Gedanken zu machen)
Die verschiedenen Threads, die alle "gleichzeitig" ablaufen, werden vom Betriebssystem in Prozesse organisiert. Ein Prozess hat 1 bis x Threads. Ein Thread gehört also immer zu einem bestimmten Prozess.
Ein Prozess ist quasi eine laufende Anwendung. So ein Prozess hat immer mindestens einen Thread - den Hauptthread oder MainThread - denn ein Prozess selbst wird nicht ausgeführt, sondern nur Threads.
Wenn so ein Prozess / so eine Anwendung nun mehrere Dinge "gleichzeitig" tun will (z.B. eine Datei kopieren, etwas aus dem Internet runterladen und dazu noch etwas anderes ausdrucken), so startet er neue Threads.
Das Betriebssystem muss nun alle Prozesse, die es kennt, irgendwie organisieren. Dazu verpasst es jedem Prozess, der gerade läuft, eine Nummer - die Prozess ID (PID). Zusätzlich dazu bekommt auch jeder Thread eine Nummer verpasst, die Thread ID (TID). Diese werden normalerweise pro Prozess, zu dem sie gehören, durchnummeriert.
Bsp (völlig fiktive Nummern, nur als Beispiel):
Firefox : PID 652347.
- Thread (TID 1)
- Thread (TID 2)
- Thread (TID 3)
WinAmp : PID 543624
- Thread (TID 1)
- Thread (TID 2)
Mit einer TID alleine kann man also nichts anfangen, man braucht auch immer die PID dazu.
Diese IDs sind nur solange gültig, solange ein Programm läuft. Wird es neu gestartet, bekommt es eine andere PID. Auch wenn das Programm nach einem Betriebssystemneustart wieder gestartet wird, hat es eine neue PID.
War das so verständlicher? Eine Rückmeldung wäre nett.
Ein Rechner hat überlicherweise nur eine CPU (bzw. eine begrenzte Anzahl davon, aber das lassen wir der Einfachheit halber mal weg).
Auf dieser CPU läuft ein einziges Programm der Reihe nach ab nach dem Prinzip "eines nach dem anderen", nichts geht gleichzeitig.
Wenn du nun ganz normal mit z.B. Windows arbeitest, hast du diverse Programme am Laufen, Browser, WinAmp, E-Mail-Client, etc. Haufenweise verschiedene Programme laufen auch im Hintergrund ab, z.B. Dienste. Und alles macht den Eindruck, dass es "gleichzeitig" passiert - was aber nicht geht, da eben nur eine CPU vorhanden ist.
Das Betriebssystem sorgt genau dafür, dass viele Programme scheinbar gleichzeitig laufen - indem es jedes Programm für eine kurze Weile auf dem Prozessor laufen lässt, dann wieder zum Nächsten wechselt, dieses laufen lässt, etc. Das geschieht so schnell, dass du als Anwender davon nichts bemerkst.
Als Entwickler eines Programmes muss man sich darum überhaupt nicht kümmern. Man schreibt seinen Code einfach der Reihe nach runter und muss sich keine Gedanken soweit darüber machen, dass das eigene Programm gelegentlich unterbrochen wird, damit andere dran kommen, und danach wieder fortgesetzt wird. Aus Entwicklersicht läuft das Programm einfach in einem Faden ab. Das ist ein Thread (engl. Thread = Faden). Ein Thread ist also ein "virtueller Prozessor", auf dem das Programm abläuft. Dieser wird vom Betriebssystem bereitgestellt. (genau genommen sind das Kernel-Threads - aber darüber brauchst du dir erstmal keine Gedanken zu machen)
Die verschiedenen Threads, die alle "gleichzeitig" ablaufen, werden vom Betriebssystem in Prozesse organisiert. Ein Prozess hat 1 bis x Threads. Ein Thread gehört also immer zu einem bestimmten Prozess.
Ein Prozess ist quasi eine laufende Anwendung. So ein Prozess hat immer mindestens einen Thread - den Hauptthread oder MainThread - denn ein Prozess selbst wird nicht ausgeführt, sondern nur Threads.
Wenn so ein Prozess / so eine Anwendung nun mehrere Dinge "gleichzeitig" tun will (z.B. eine Datei kopieren, etwas aus dem Internet runterladen und dazu noch etwas anderes ausdrucken), so startet er neue Threads.
Das Betriebssystem muss nun alle Prozesse, die es kennt, irgendwie organisieren. Dazu verpasst es jedem Prozess, der gerade läuft, eine Nummer - die Prozess ID (PID). Zusätzlich dazu bekommt auch jeder Thread eine Nummer verpasst, die Thread ID (TID). Diese werden normalerweise pro Prozess, zu dem sie gehören, durchnummeriert.
Bsp (völlig fiktive Nummern, nur als Beispiel):
Firefox : PID 652347.
- Thread (TID 1)
- Thread (TID 2)
- Thread (TID 3)
WinAmp : PID 543624
- Thread (TID 1)
- Thread (TID 2)
Mit einer TID alleine kann man also nichts anfangen, man braucht auch immer die PID dazu.
Diese IDs sind nur solange gültig, solange ein Programm läuft. Wird es neu gestartet, bekommt es eine andere PID. Auch wenn das Programm nach einem Betriebssystemneustart wieder gestartet wird, hat es eine neue PID.
War das so verständlicher? Eine Rückmeldung wäre nett.
1
1668mib
Gast
@samotyr: Dieser Vergleich ist gar nicht schlecht, aber ich würde vielleicht die Firma direkt als Prozess betrachten, dann sind die Threads auch klar (die Mitarbeiter)...
S
samotyr
Gast
Ja, ist sich recht ähnlich, die Threads sind quasi die Mitarbeiter der Mitarbeiter 
CHaos.Gentle
Lt. Commander
- Registriert
- Juni 2004
- Beiträge
- 1.594
Naja, wenn schon den Vergleich mit der Firma, dann schon so:
Firma: PC
Chef: Betriebsystem (Vergibt Ressourcen und Aufgaben / Erlaubt und verbietet)
Abteilung: Prozess (Hat gewisse vom Chef zugeteilte Ressourcen zur Verfügung, darf aber nur über bestimmte vom Chef erlaube Kanäle (Interfaces) mit anderen Abteilungen kommunizeren)
Abteilungsname: PID
Mitarbeiter: Thread (Darf innerhalb seiner Abteilung die vom Chef und vom Abteilungsleiter genemigten Ressourcen nutzen, dabei können verschiedene Mitarbeiter die selben Ressourcen nacheinander nutzen)
Mitarbeitername: TID
Trotzdem finde ich passt die Erklärung von 7H3 N4C3R trotzdem besser
Firma: PC
Chef: Betriebsystem (Vergibt Ressourcen und Aufgaben / Erlaubt und verbietet)
Abteilung: Prozess (Hat gewisse vom Chef zugeteilte Ressourcen zur Verfügung, darf aber nur über bestimmte vom Chef erlaube Kanäle (Interfaces) mit anderen Abteilungen kommunizeren)
Abteilungsname: PID
Mitarbeiter: Thread (Darf innerhalb seiner Abteilung die vom Chef und vom Abteilungsleiter genemigten Ressourcen nutzen, dabei können verschiedene Mitarbeiter die selben Ressourcen nacheinander nutzen)
Mitarbeitername: TID
Trotzdem finde ich passt die Erklärung von 7H3 N4C3R trotzdem besser
Ähnliche Themen
- Antworten
- 4
- Aufrufe
- 1.142
- Antworten
- 7
- Aufrufe
- 903
L
- Antworten
- 15
- Aufrufe
- 1.777
- Antworten
- 26
- Aufrufe
- 2.998