Native POSIX Thread LibraryDie Native POSIX Thread Library (NPTL) ist eine moderne Implementierung einer Threading-Bibliothek für das Betriebssystem Linux. Sie wird in Verbindung mit der GNU C Library (glibc) verwendet und erlaubt Linux-Programmen die Verwendung von POSIX-Threads (pthreads). GeschichteSeit 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-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 im Userspace zu simulieren. Die Bibliothek wurde zwar kontinuierlich verbessert, war aber konzeptionell veraltet und eingeschränkt. Folgende Probleme mit der existierenden LinuxThreads-Implementation wurden identifiziert:
Um die bestehenden Probleme zu lösen, wurden zusätzliche Infrastruktur im Kernel und eine neu geschriebene Threading-Bibliothek benötigt. Es wurden zwei konkurrierende Projekte gestartet: Next Generation POSIX Threads (NGPT) unter Leitung von IBM und NPTL unter Federführung der bei Red Hat angestellten Kernel- und glibc-Programmierer Ingo Molnár und Ulrich Drepper. Weil sich abzeichnete, dass sich in der Praxis die NPTL durchsetzen würde, wurde das NGPT-Projekt Mitte 2003 eingestellt. Das NPTL-Team setzte sich folgende Ziele für seine neue Bibliothek:
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 Last blieb das Testsystem mit annähernd gleicher Geschwindigkeit benutzbar. Red Hat Linux 9 war die erste Linux-Distribution, in der die NPTL in einem gepatchten 2.4er-Kernel verwendet wurde (und deren Benutzer dadurch bisweilen zu unfreiwilligen Betatestern wurden). Inzwischen benutzen alle modernen Distributionen die NPTL, wenn sie einen Kernel der Version 2.6 oder höher verwenden. KonzeptNPTL 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
|