www.wikidata.de-de.nina.az
Die Native POSIX Thread Library NPTL ist eine moderne Implementierung einer Threading Bibliothek fur das Betriebssystem Linux Sie wird in Verbindung mit der GNU C Library glibc verwendet und erlaubt Linux Programmen die Verwendung von POSIX Threads pthreads Geschichte BearbeitenSeit der Kernel Version 2 0 existierte fur Linux die Threading Bibliothek LinuxThreads deren grundlegende Design Prinzipien unter Einfluss der 1996 vorhandenen Beschrankungen des Linux Kernels und der libc5 zustande gekommen waren Linux hatte keine echte Unterstutzung fur Threads im Kernel kannte aber den clone Systemaufruf der eine Kopie des aufrufenden Prozesses mit identischem Adressraum erzeugte LinuxThreads benutzte diesen Systemaufruf um Thread Unterstutzung im Userspace zu simulieren Die Bibliothek wurde zwar kontinuierlich verbessert war aber konzeptionell veraltet und eingeschrankt Folgende Probleme mit der existierenden LinuxThreads Implementation wurden identifiziert Sie benotigt einen Manager Thread im Prozess der weitere Threads erzeugt wieder aufraumt und die Signalbehandlung kanalisiert Sie ist nicht POSIX konform da es zum Beispiel nicht moglich ist ein Signal an den ganzen Prozess zu senden bzw der Kernel dafur sorgen muss dass Signale wie SIGSTOP und SIGCONT an alle Threads im Prozess durchgereicht werden Unter Last wird die Performance schlecht da das Signalsystem zur Synchronisierung verwendet wird Dies beeintrachtigt auch die Stabilitat Jeder Thread fuhrt falschlicherweise eine eigene Prozess ID Auf der wichtigen IA 32 Architektur waren nur maximal 8192 Threads moglich Um die bestehenden Probleme zu losen wurden zusatzliche Infrastruktur im Kernel und eine neu geschriebene Threading Bibliothek benotigt Es wurden zwei konkurrierende Projekte gestartet Next Generation POSIX Threads NGPT unter Leitung von IBM und NPTL unter Federfuhrung der bei Red Hat angestellten Kernel und glibc Programmierer Ingo Molnar und Ulrich Drepper Weil sich abzeichnete dass sich in der Praxis die NPTL durchsetzen wurde wurde das NGPT Projekt Mitte 2003 eingestellt Das NPTL Team setzte sich folgende Ziele fur seine neue Bibliothek POSIX Konformitat um Userspace Quelltext besser portierbar zu machen effektive Verwendung von SMP und gute Skalierbarkeit um die Leistungsfahigkeit auf Mehrprozessorsystemen zu steigern darauf aufbauend NUMA Unterstutzung wenig Erzeugungsaufwand pro Thread Kompatibilitat mit LinuxThreads das heisst 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 fur die NPTL vorbereitet Dazu war es notwendig einige neue Systemaufrufe einzufuhren 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 annahernd 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 hoher verwenden Konzept BearbeitenNPTL funktioniert ahnlich 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 benotigt allerdings spezielle Kernelunterstutzung und implementiert damit Synchronisationsmechanismen bei denen Threads schlafen gelegt und wieder aufgeweckt werden Dazu werden Futexes verwendet Die NPTL ist eine sogenannte 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 Implementierung Die Alternative ware m n Dabei existieren typischerweise mehr Threads im Userspace als es Prozesse im Kernel gibt Die Threading Bibliothek ware dann dafur verantwortlich die Prozessorzeit auf die einzelnen Threads im Prozess zu verteilen Mit diesem Konzept waren sehr schnelle Kontextwechsel moglich da die Anzahl der notwendigen Systemaufrufe minimiert wird andererseits wurde aber die Komplexitat erhoht und es konnte leichter zu Prioritatsinversion kommen Literatur BearbeitenThe Native POSIX Thread Library for Linux PDF 535 kB Abgerufen von https de wikipedia org w index php title Native POSIX Thread Library amp oldid 239454606