POSIX szálkönyvtár

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2017. szeptember 20-án áttekintett verziótól ; az ellenőrzések 5 szerkesztést igényelnek .

A POSIX Thread Library ( eng.  Native POSIX Thread Library , eng.  NPTL ) egy olyan programkód készlet , amely lehetővé teszi a Linux operációs rendszer kernelének a POSIX szálakat használó programok hatékony végrehajtását . Jelenleg a glibc könyvtárba integrálva .

A 32 bites architektúrán ( IA-32 ) végzett tesztek alapján az NPTL körülbelül 2 másodperc alatt sikeresen elindít 100 000 szálat. Összehasonlításképpen egy NPTL támogatás nélküli kernel körülbelül 15 percig tart. [1] [2]

Történelem

A Linux 2.6 előtti verzióiban nem volt valódi szálfűző architektúra, bár támogatták például a klón () rendszerhívást , amely létrehozta az azt meghívó folyamat másolatát a folyamattal azonos memóriacímtérben. maga. Konkrétan a LinuxThreads projekt ezt a rendszerhívást használta arra, hogy támogatást nyújtson az azonos címtartományon belüli szálak számára. Sajnos ennek a könyvtárnak POSIX -kompatibilitási problémái voltak , beleértve a valós idejű jelfeldolgozást , az elosztást és a folyamatok közötti szinkronizálási primitíveket.

A helyzet orvoslására két projekt indult: az NGPT (Next Generation POSIX Threads, POSIX Threads of the next generáció), amelyet az IBM fejlesztői fejlesztettek ki , és az NPTL, amelyet a Red Hat alkalmazottai fejlesztettek ki . Az NGPT-t 2003 közepén zárták be, valamivel az NPTL megjelenése után.

Az NPTL-nek van némi hasonlósága a LinuxThreads-szel, például a kernel elsődleges absztrakciója is egy folyamat, vagy új szálak jönnek létre a clone() meghívásával. A szálak szinkronizálásához az NPTL a kernel támogatását használja (a futex rendszerhívás).

Az NPTL a 3. verzió óta szerepel a Red Hat Enterprise Linux disztribúcióban , és a glibc része .

A szálfűzési könyvtár verziójának meghatározása a rendszeren

A verzió a következő parancssorból érhető el:

getconf GNU_LIBPTHREAD_VERSION

A parancs megadja az alapértelmezett szálfűzési könyvtár verzióját bármely Linux rendszeren.

NPTL-t használó programok

  • A Google Earth (kliens) Linux verziója deklarálja az NPTL futtatásának szükségességét.
  • A Sun Microsystems OpenMP implementációja a Solaris libpthread könyvtáron alapul, amely viszont az NPTL megvalósítása. A Solaris 10-től kezdve a libpthread könyvtár egy szűrő, és az általa biztosított funkciók megvalósítása a libc könyvtárban található.

Jegyzetek

  1. Robert Love. A 2.6-os kernel  bemutatása . Linux Journal . Archiválva az eredetiből 2012. január 21-én, Belltown Media, Inc.
  2. Ulrich Drepper, Ingo Molnar. A natív POSIX szálkönyvtár Linuxhoz  (angol) (PDF). Red Hat Inc. (2005. február 21.). Archiválva az eredetiből 2012. január 21-én.

Linkek