„Native POSIX Thread Library“ – Versionsunterschied
[ungesichtete Version] | [ungesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K Bot: Ergänze: fi:Native POSIX Thread Library |
stil, links, Interpunktion |
||
Zeile 2:
== Geschichte ==
Seit der Kernel-Version 2.0 existierte für Linux die Threading-Bibliothek ''[[LinuxThreads]]'', deren grundlegende Design-Prinzipien unter Einfluss der [[1996]] vorhandenen Beschränkungen des [[Linux-Kernel]]s und der libc5 zustande gekommen waren. Linux hatte keine echte Unterstützung für Threads im Kernel, kannte aber den ''[[clone]]()''-Systemaufruf, der eine Kopie des aufrufenden Prozesses mit identischem Adressraum erzeugte. LinuxThreads benutzte diesen [[Systemaufruf]], um Thread-Unterstützung so gut es ging im [[Userspace]] zu simulieren. Die Bibliothek wurde zwar kontinuierlich verbessert, war aber schon lange nicht mehr zeitgemäß
Folgende Probleme wurden mit der existierenden ''LinuxThreads''-Implementation identifiziert:
Zeile 11:
* Auf der wichtigen [[IA-32]]-Architektur waren nur maximal 8192 Threads möglich.
Um die bestehenden Probleme zu lösen, wurde zusätzliche Infrastruktur im Kernel und eine neugeschriebene Threading-Bibliothek benötigt. Es wurden zwei konkurrierende Projekte gestartet: [[Next Generation POSIX Threads]] (NGPT) unter Leitung von [[IBM]]
Das NPTL-Team setzte sich folgende Ziele für
* [[POSIX-Konformität]], um Userspace-[[Quellcode]] wieder besser portierbar zu machen
* effektive Verwendung von [[SMP]] und gute [[Skalierbarkeit]], um auf Mehrprozessorsystemen die Performance zu steigern
** darauf aufbauend: [[NUMA]]-Unterstützung
* niedrige Erzeugungskosten pro Thread
* [[Kompatibilität]] mit ''LinuxThreads'', das heißt, alte Programme sollten ohne Neukompilierung mit der NPTL laufen
Unter diesen Voraussetzungen begann Mitte [[2002]] die Arbeit an der neuen Native POSIX Thread Library. Im August/September 2002 wurde der 2.5er Linux-Kernel für die NPTL fit gemacht. Dazu war es notwendig, einige neue
[[Red Hat Linux]] 9 war die erste Linux-Distribution, in der die NPTL in einem [[Patch_(Software)|gepatchten]] 2.4er Kernel verwendet wurde (und deren Benutzer dadurch bisweilen zu unfreiwilligen [[Betatester#Betatester|Betatestern]] wurden). Inzwischen benutzen praktisch alle modernen Distributionen die NPTL, wenn
== Konzept ==
<!-- Ich bin kein Informatiker. Die Chancen stehen gut, dass ich hier Blödsinn erzähle. -->
NPTL funktioniert ähnlich wie ''LinuxThreads''. Der Kernel verwaltet immer noch Prozesse und keine Threads, und neue Threads werden mit einem von der NPTL aufgerufenen ''clone()'' erzeugt. Die NPTL benötigt allerdings spezielle Kernelunterstützung
Die NPTL ist eine so genannte 1×1-Threading-Bibliothek. Die vom Benutzer mit der ''pthread_create()''-Funktion erzeugten Threads stehen dabei in einer 1-zu-1-Beziehung mit Prozessen in den Scheduler-Queues des Kernels. Dies ist die einfachste denkbare Threading-Implementation. Die Alternative wäre m×n. Dabei existieren typischerweise mehr Threads im Userspace, als es Prozesse im Kernel gibt. Die Threading-Bibliothek wäre dann dafür verantwortlich, die Prozessorzeit auf die einzelnen Threads im Prozess zu verteilen. Mit diesem Konzept wären sehr schnelle [[Kontextumschaltung|Kontextumschaltungen]] möglich, da die Anzahl der notwendigen Systemaufrufe minimiert wird, andererseits würde aber die Komplexität erhöht
[[Kategorie:Linux]]
|