POSIX trådbibliotek

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 20 september 2017; kontroller kräver 5 redigeringar .

POSIX Thread Library ( eng.  Native POSIX Thread Library , eng.  NPTL ) är en uppsättning programkod som tillåter kärnan i operativsystemet Linux att effektivt köra program som använder POSIX-trådar . För närvarande integrerad i glibc- biblioteket .

Baserat på tester utförda på en 32-bitars arkitektur ( IA-32 ), startar NPTL framgångsrikt 100 000 trådar på cirka 2 sekunder. Som jämförelse tar en kärna utan NPTL-stöd cirka 15 minuter. [1] [2]

Historik

I versioner av Linux före 2.6 fanns det ingen riktig trådningsarkitektur, även om det fanns stöd för till exempel clone () systemanropet , som skapade en kopia av processen som anropade den i samma minnesadressutrymme som processen sig. I synnerhet LinuxThreads- projektet använde detta systemanrop för att ge stöd för trådar inom samma adressutrymme. Tyvärr hade det här biblioteket POSIX -kompatibilitetsproblem , inklusive signalbehandling i realtid , sändning och synkronisering mellan processer.

För att råda bot på situationen lanserades två projekt - NGPT (Next Generation POSIX Threads, POSIX Threads of the next generation), utvecklad av IBM -utvecklare , och NPTL, utvecklad av Red Hat -anställda . NGPT stängdes i mitten av 2003 en tid efter lanseringen av NPTL.

NPTL har vissa likheter med LinuxThreads, som att den primära abstraktionen av kärnan också är en process, eller så skapas nya trådar genom att anropa clone(). För att synkronisera trådar använder NPTL stöd från kärnan (futex-systemanropet).

NPTL har inkluderats i Red Hat Enterprise Linux-distributionen sedan version 3, och är en del av glibc .

Bestämma versionen av trådningsbiblioteket på systemet

Versionen kan hittas med följande kommandorad:

getconf GNU_LIBPTHREAD_VERSION

Kommandot ger dig versionen av standardtrådsbiblioteket på alla Linux-system.

Program som använder NPTL

  • Linux-versionen av Google Earth (klient) förklarar behovet av att NPTL körs.
  • Sun Microsystems implementering av OpenMP är baserad på Solaris libpthread-bibliotek, som i sin tur är en implementering av NPTL. Från och med Solaris 10 är libpthread-biblioteket ett filter, och implementeringen av funktionerna som det tillhandahåller är i libc-biblioteket.

Anteckningar

  1. Robert Love. Vi presenterar 2.6 Kernel  . Linux Journal . Arkiverad från originalet den 21 januari 2012, Belltown Media, Inc.
  2. Ulrich Drepper, Ingo Molnar. The Native POSIX Thread Library for Linux  (engelska) (PDF). Red Hat Inc. (21 februari 2005). Arkiverad från originalet den 21 januari 2012.

Länkar