[linux-l] Java Thread vs. c fork

Thomas Knop tknop at maxrelax.de
Di Okt 21 00:56:28 CEST 2003


* Peter Ross <Peter.Ross at alumni.tu-berlin.de> [20.10.03 23:04]:
> On Sun, Oct 19, 2003 at 10:51:25PM +0200, Thomas Knop wrote:
> > weil SUN behauptet unter Solaris würden Threads (lightwight processes)
> > viel schneller als reinrassige Prozesse gestartet werden.
> 
> Vielleicht kann jemand etwas zu den "Spezialitaeten" von Linux-Threads
> sagen, da ich immer wieder hoere, dass Linux-Threads wenig von einem
> lightwight process haben, sondern ein nur wenig abgespeckter Prozess
> seien?
Nich unbedingt zu Linux Threads. Der wesentliche Unterschied ist halt, dass
bei einem fork() alle Prozessstrukturen im Kernel dupliziert werden müssen.
Dann müssen alle Datensegmente (nicht die Textsegmente == code) dupliziert
werden (spätestens bei einem Schreibzugriff durch den Child). 
Bei einem Thread muss nur ein seperaten Stack und eine Scheduler Struktur
neu erzeugt werden.
Ich bin mir nicht sicher wie das unter aktuellen Linuxkerneln der Fall
ist, aber in älteren Versionen wurde für einen Thread die gleiche Kernel
Strktur angelegt, wie für einen Prozess; nur, dass halt eben kein Meomory
dupliziert wurde. In top sah das dann ganz witzig aus, ich hatte damals real
64 MB und angezeigt wurden bei einem Programm mit 64 Thread >> 256 MB 
residenter Speicher. 

Gruß Thomas



Mehr Informationen über die Mailingliste linux-l