Biblioteca de fire POSIX

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 20 septembrie 2017; verificările necesită 5 modificări .

Biblioteca POSIX Thread ( ing.  Native POSIX Thread Library , ing.  NPTL ) este un set de cod de program care permite nucleului sistemului de operare Linux să execute eficient programe care utilizează fire POSIX . În prezent integrat în biblioteca glibc .

Pe baza testelor efectuate pe o arhitectură pe 32 de biți ( IA-32 ), NPTL pornește cu succes 100.000 de fire în aproximativ 2 secunde. Pentru comparație, un nucleu fără suport NPTL durează aproximativ 15 minute. [1] [2]

Istorie

În versiunile de Linux anterioare versiunii 2.6, nu exista o arhitectură reală de threading, deși exista suport, de exemplu, pentru apelul de sistem clone () , care a creat o copie a procesului care l-a numit în același spațiu de adresă de memorie ca și procesul. în sine. În special, proiectul LinuxThreads a folosit acest apel de sistem pentru a oferi suport pentru firele din același spațiu de adrese. Din păcate, această bibliotecă a avut probleme de compatibilitate POSIX , inclusiv procesarea semnalului în timp real , dispecerizarea și primitivele de sincronizare între procese.

Pentru a remedia situația, au fost lansate două proiecte - NGPT (Next Generation POSIX Threads, POSIX Threads of the next generation), dezvoltat de dezvoltatorii IBM și NPTL, dezvoltat de angajații Red Hat . NGPT a fost închis la mijlocul anului 2003 la ceva timp după lansarea NPTL.

NPTL are unele asemănări cu LinuxThreads, cum ar fi abstracția primară a nucleului este, de asemenea, un proces, sau fire noi sunt create prin apelarea clone(). Pentru a sincroniza firele de execuție, NPTL folosește suportul din nucleu (apelul de sistem futex).

NPTL a fost inclus în distribuția Red Hat Enterprise Linux începând cu versiunea 3 și face parte din glibc .

Determinarea versiunii bibliotecii de threading pe sistem

Versiunea poate fi găsită cu următoarea linie de comandă:

getconf GNU_LIBPTHREAD_VERSION

Comanda vă va oferi versiunea bibliotecii implicite de threading pe orice sistem Linux.

Programe care folosesc NPTL

  • Versiunea Linux a Google Earth (client) declară necesitatea rulării NPTL.
  • Implementarea OpenMP de către Sun Microsystems se bazează pe biblioteca Solaris libpthread, care, la rândul ei, este o implementare a NPTL. Începând cu Solaris 10, biblioteca libpthread este un filtru, iar implementarea funcțiilor pe care le oferă este în biblioteca libc.

Note

  1. Robert Love. Prezentarea Kernel -ului 2.6  . Jurnalul Linux . Arhivat din original pe 21 ianuarie 2012, Belltown Media, Inc.
  2. Ulrich Drepper, Ingo Molnar. Biblioteca nativă de fire POSIX pentru Linux  (engleză) (PDF). Red Hat Inc. (21 februarie 2005). Arhivat din original pe 21 ianuarie 2012.

Link -uri

  • NPTL Trace Tool , utilitar de depanare pentru programele care utilizează   NPTL