Prozesse vs. Threads

Post Reply
Message
Author
A. Storch

Prozesse vs. Threads

#1 Post by A. Storch »

Wer hat Zeit und Lust, mir mal die Unterschiede zwischen Threads und Processes zu erklären ? Beides taucht immer wieder auf, sie es bei Hardware (Intels P4 mit Hyperthreading), SMP (Programme müssen multithreadingfähig sein) bei Apache 2 ("...Apache in a hybrid thread/process mode on any platform that supports both threads and processes) oder auch bei der Diskussion um die "neue" libc (posix Threads für libc).

Das Thema ist sicherlich komplex, aber vielleicht kann jemand grob den Unterschied erklären. Ich dachte immer, ein Prozess sei ein Programm (siehe: ps aux), wenn dieses Unterprozesse oder Kindprozesse erzeugt, sind das threads. Nur, wie soll ein Betriebssytem funktionieren, das nur eines von beiden Unterstützt (siehe das Apache2 Zitat) ?

marc
Posts: 444
Joined: 20. Apr 2001 23:31
Location: Arnsberg

Re: Prozesse vs. Threads

#2 Post by marc »

Hi.

Einer der wesentlichen Unterschiede zwischen Prozessen und Threads ist, daß sich mehrere Threads eines Programmes den gleichen Speicherbereich teilen und darauf schreibend und lesend zugreifen können.
Unter <!--http--><a href="http://www.cag.lcs.mit.edu/~rinard/osnotes/h2.html" target="_blank">www.cag.lcs.mit.edu/~rinard/osnotes/h2. ... ><!--url--> findest Du eine kurze Übersicht über Prozesse und Threads.

> Ich dachte immer, ein Prozess sei ein Programm (siehe: ps aux), wenn dieses Unterprozesse oder Kindprozesse erzeugt, sind das threads.

Im groben kann man das so stehen lassen. Ein Prozess besteht allerdings immer aus mindestens einem Thread. Stell Dir einen Prozess wie eine Hülle für Threads vor, die im Kontext dieses Prozesses laufen.

Gruß
Marc

rübezahl

Re: Prozesse vs. Threads

#3 Post by rübezahl »

Atomistisch gedacht, gibt es keinen. In beiden Fällen werden mur Einzen und Nullen wie blöd im Speicher hin
und her geschaufelt.
Praktisch ist es so, wenn ich ein Prog schreibst, musst ich minnestens ein Prozess starten. Wenn ich dann
in meinen Prog was paralet machen will, starte ich ein externes (von mir geschriebenes) Prog und über gebe
ihm vieleicht Daten und bekomme welche welche zurück.
Ich kann aber auch ein Thread öffnen. So bleibt das programmtechnisch tanzperenter.

Post Reply