PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kernel-level threads



mcspam
16-07-2006, 13:32
Hallo zusammen,

gerade beschäftigt mich eine Frage, die ich trotz nachlesen in "Betriebsysteme" von Stallings und auf Wikipedia /Threads nicht beantwortet bekomme:

Welcher Teil / Welche Teile eines Betriebsystems (Unix/Windows) kümmert sich um die Verwaltung von Threads?
Ist es der gleiche Scheduler, der auch die Prozesse verwaltet? Oder bekommt jeder Thread vom Betriebsystem eine Art Scheduler zugeteilt, denn man bei User-Level Threads ja selbst implementiert.

Besten Dank und Gruß

nul
18-07-2006, 08:39
Schau dir dazu mal die Folien hier an:
http://www.dps.uibk.ac.at/~tf/lehre/ss06/bs/folien.html
Auf Linux/Unix-Threads ist die VL zwar nicht wirklich eingegangen, aber der Gastvortrag vom Windows-Typ und vom Solaris-Typ waren recht interessant.

peschmae
18-07-2006, 08:43
Zum Thema wie das in Linux realisiert ist steht im NPTL-Artikel der Wikipedia noch so einiges: http://en.wikipedia.org/wiki/NPTL

MfG Peschmä

nul
19-07-2006, 11:00
Da hab ich dann auch noch ne Frage: Wenn man POSIX-Threads benutzt sind das dann Threads im Userspache, oder?
Weil ein Bekannter von mir ist voll der Meinung dass die Threads von POSIX auf Kernel-Threads abgebildet werden.

peschmae
19-07-2006, 11:40
Es gibt beides soviel ich weiss.

"Posix Threads" ist ja nur eine Interface-Spezifikation. Dann gibts halt verschiedene Implementierungen. Unter Linux gibts LinuxThreads im UserSpace und z.B. die NPTL (New Posix Thread Library) im Kernel. Das ist so nicht wirklich fix vorgeschrieben. Implementierungsabhängig halt.

MfG Peschmä

anda_skoa
20-07-2006, 12:19
Soweit ich weiß ist das immer zu einem Teil im Kernel, es unterscheidet sich nur, wie es abgebildet wird. Die "alten" Linux Threads waren eine bestimmte Art von Prozess.

Threads auf jeder halbwegs aktuellen Plattform sind Kernelangelegenheit, weil es sonst ziemlich schwierig wird, atomare Operationen zu garantieren, besonders bei mehreren Exekutionseinheiten (Multit CPU, Dual Code, Hypthreading, etc)

Ciao,
_

nul
20-07-2006, 12:56
Also unterm 2.4er Kernel gab es ja noch keine echten Threads, das stimmt.

Ich finde eigentlich User-Threads besser als Kernel-Threads - nur so vom Gefuehl - hab da noch nicht so viel mit gemacht.

Ich meine um zwischen Kernel-Threads zu wechseln muss ja immer der Kernel aktiv werden. Das heisst dann aber auch dass der Context Switch relativ lange dauert, da erst wieder der Kernel gelanden werden muss, dann der Scheduler entscheidet und dann der Thread geladen und ausgefuehrt wird.
Wenn das alles im Userspace passiert kann das alles viel schneller passieren.

Von der Vorlesung her (siehe post weiter oben) hatt mir die Solaris-Loesung ziehmlich gut gefallen.

Aber wie gesagt, das ist ja nur die Meinung eines unbedeutenden Studenten.