Indbygget POSIX -trådbibliotek - Native POSIX Thread Library

Den Native POSIX Tråd Bibliotek ( NPTL ) er en implementering af POSIX Tråde specifikationen for Linux -operativsystemet.

Historie

Før 2.6 -versionen af Linux -kernen var processer de planlagte enheder, og der var ingen særlige faciliteter til tråde . Det havde imidlertid et systemopkald - klon - som skaber en kopi af opkaldsprocessen, hvor kopien deler opkaldets adresserum. De linuxthreads projekt brugte dette system kald til at levere kerne-niveau tråde (de fleste af de tidligere tråd implementeringer i Linux arbejdede helt i userland ). Desværre overholdt den kun delvist POSIX, især inden for områderne signalhåndtering, planlægning og primitiver mellem synkronisering mellem processer.

For at forbedre LinuxThreads var det klart, at der ville være brug for nogle kernestøtte og et nyt trådbibliotek. To konkurrerende projekter blev startet for at imødekomme kravet: NGPT (Next Generation POSIX Threads) arbejdet på af et team, der omfattede udviklere fra IBM , og NPTL af udviklere hos Red Hat . NGPT -teamet samarbejdede tæt med NPTL -teamet og kombinerede de bedste funktioner i begge implementeringer i NPTL. NGPT-projektet blev efterfølgende opgivet i midten af ​​2003 efter at have flettet sine bedste funktioner i NPTL.

NPTL blev først udgivet i Red Hat Linux 9. Gammel Linux POSIX-trådning er kendt for at have problemer med tråde, der af og til nægter at give efter for systemet, fordi det ikke benytter lejligheden til at forhindre dem, når det opstår, noget som Windows var kendt for at gøre det bedre dengang. Red Hat hævdede, at NPTL rettet dette problem i en artikel på Java -webstedet om Java om Red Hat Linux 9.

NPTL har været en del af Red Hat Enterprise Linux siden version 3, og i Linux -kernen siden version 2.6. Det er nu en fuldt integreret del af GNU C -biblioteket .

Der findes et sporingsværktøj til NPTL, kaldet POSIX Thread Trace Tool ( PTT ). Og der blev skrevet en Open POSIX Test Suite ( OPTS ) til test af NPTL -biblioteket mod POSIX -standarden.

Design

NPTL bruger en lignende tilgang til LinuxThreads, idet den primære abstraktion, som kernen kender, stadig er en proces, og nye tråde oprettes med klonen () systemopkald (kaldet fra NPTL -biblioteket). NPTL kræver imidlertid specialiseret kernestøtte til at implementere (f.eks.) Det påståede tilfælde af synkroniseringsprimitiver, som kan kræve tråde at sove og vågne igen. Den primitive, der bruges til dette, er kendt som en futex .

NPTL er et såkaldt 1 × 1 trådbibliotek, idet tråde oprettet af brugeren (via pthread_create()biblioteksfunktionen) er i 1-1 korrespondance med planlagte enheder i kernen (opgaver, i Linux-sagen). Dette er den enkleste mulige implementering af gevind.

Et alternativ til NPTL's 1 × 1 -model er m × n -modellen .

Se også

Referencer

eksterne links

  • NPTL -sporingsværktøj OpenSource -værktøj til at spore og fejlsøge flertrådede applikationer ved hjælp af NPTL.