„Native POSIX Thread Library“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K Kategorie:POSIX hinzugefügt (mit HotCat) |
|||
(17 dazwischenliegende Versionen von 15 Benutzern werden nicht angezeigt) | |||
Zeile 1:
Die '''Native POSIX Thread Library''' ('''NPTL''') ist eine moderne Implementierung einer [[Thread (Informatik)|Threading]]-[[Programmbibliothek|Bibliothek]] für das Betriebssystem [[Linux]]. Sie wird in Verbindung mit der [[Glibc|GNU C Library]] (glibc) verwendet und erlaubt Linux-Programmen die Verwendung von [[
== 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)|Linux-Kernels]] 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
Folgende Probleme mit der existierenden ''LinuxThreads''-Implementation wurden identifiziert:
* Sie benötigt einen Manager-Thread im Prozess, der weitere Threads erzeugt, wieder aufräumt und die [[Signal (Unix)|Signalbehandlung]] kanalisiert.
* Sie ist nicht [[Portable Operating System Interface|POSIX]]-konform, da es zum Beispiel nicht möglich ist, ein Signal an den ganzen Prozess zu senden, bzw. der Kernel dafür sorgen muss, dass Signale wie SIGSTOP und SIGCONT an alle Threads im Prozess durchgereicht werden.
* Unter Last wird die [[Leistung (Informatik)|Performance]] schlecht, da das Signalsystem
* Jeder Thread führt fälschlicherweise eine eigene [[Prozess ID]].
* Auf der wichtigen [[IA-32]]-Architektur waren nur maximal 8192 Threads möglich.
Um die bestehenden Probleme zu lösen,
Das NPTL-Team setzte sich folgende Ziele für seine neue Bibliothek:
* POSIX-Konformität, um Userspace-[[Quelltext]]
* effektive Verwendung von [[Symmetrisches Multiprozessorsystem|SMP]] und gute [[Skalierbarkeit]], um
** darauf aufbauend: [[NUMA]]-Unterstützung
*
* [[Kompatibilität (Technik)|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 Linux-Kernel 2.5 für die NPTL vorbereitet. Dazu war es notwendig, einige neue Systemaufrufe einzuführen und vorhandene zu optimieren. In ersten Benchmarks konnten nun auf einem IA-32-System innerhalb von 2 Sekunden 100.000 parallele Threads erzeugt werden; ohne NPTL dauerte allein die Erzeugung der Threads fast 15 Minuten. Trotz dieser
[[Red Hat Linux]] 9 war die erste Linux-Distribution, in der die NPTL in einem [[
== 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
Die NPTL ist eine sogenannte 1:1-Threading-Bibliothek. Die vom Benutzer mit der
== Literatur ==
* [
[[Kategorie:Linux-Software]]
[[Kategorie:POSIX]]
|