oracular (7) nptl.7.gz

Provided by: manpages-ro_4.23.1-1_all bug

NUME

       nptl - biblioteca nativă POSIX pentru fire de execuție „Native POSIX Threads Library”

DESCRIERE

       NPTL  (Native  POSIX  Threads  Library) este o implementare POSIX de fire de execuție a bibliotecii GNU C
       care este utilizată în sistemele Linux moderne.

   NPTL și semnalele
       NPTL utilizează intern primele două semnale în timp real (numerele de semnal  32  și  33).   Unul  dintre
       aceste  semnale  este  utilizat pentru a susține anularea firelor de execuție și cronometrele POSIX (a se
       vedea timer_create(2)); celălalt este utilizat ca parte a unui mecanism care asigură că toate  firele  de
       execuție dintr-un proces au întotdeauna aceleași UID și GID, așa cum este cerut de POSIX.  Aceste semnale
       nu pot fi utilizate în aplicații.

       Pentru a preveni utilizarea accidentală a acestor semnale în aplicații, care ar putea să  interfereze  cu
       funcționarea implementării NPTL, diverse funcții de bibliotecă glibc și funcții de învăluire a apelurilor
       de sistem încearcă să ascundă aceste semnale de aplicații, după cum urmează:

       •  SIGRTMIN este definit cu valoarea 34 (în loc de 32).

       •  Interfețele sigwaitinfo(2),  sigtimedwait(2)  și  sigwait(3)  ignoră  în  mod  silențios  cererile  de
          așteptare a acestor două semnale dacă acestea sunt specificate în argumentul set de semnale al acestor
          apeluri.

       •  Interfețele sigprocmask(2) și pthread_sigmask(3) ignoră în mod  silențios  încercările  de  blocare  a
          acestor două semnale.

       •  Interfețele  sigaction(2),  pthread_kill(3)  și  pthread_sigqueue(3)  eșuează  cu eroarea EINVAL (care
          indică un număr de semnal nevalid) dacă sunt specificate aceste semnale.

       •  sigfillset(3) nu include aceste două semnale atunci când creează un set complet de semnale.

   NPTL și modificări ale acreditărilor de proces
       La nivelul nucleului Linux, acreditările (ID-urile de utilizator și  de  grup)  sunt  un  atribut  pentru
       fiecare  fir  de  execuție.  Cu toate acestea, POSIX impune ca toate firele POSIX dintr-un proces să aibă
       aceleași credențiale.  Pentru a se conforma acestei cerințe, implementarea NPTL include  toate  apelurile
       de  sistem  care  modifică acreditările procesului cu funcții care, pe lângă apelul de sistem de bază, se
       ocupă de modificarea acreditărilor tuturor celorlalte fire din proces.

       Implementarea fiecăruia dintre aceste apeluri de sistem implică utilizarea unui semnal în timp real  care
       este  trimis  (folosind  tgkill(2))  către  fiecare  dintre  celelalte  fire  care trebuie să își schimbe
       acreditările.  Înainte de a trimite aceste  semnale,  firul  care  schimbă  acreditările  salvează  noile
       acreditări  și  înregistrează  apelul  de sistem utilizat într-o memorie tampon globală.  Un gestionar de
       semnal din firul (firele) de execuție receptoar(e) preia aceste informații  și  apoi  utilizează  același
       apel de sistem pentru a-și schimba acreditările.

       Funcțiile  de  învăluire  care  utilizează  această  tehnică  sunt furnizate pentru setgid(2), setuid(2),
       setegid(2), seteuid(2), setregid(2), setreuid(2), setresgid(2), setresuid(2) și setgroups(2).

STANDARDE

       Pentru detalii privind conformitatea NPTL cu standardul POSIX, a se vedea pthreads(7).

NOTE

       POSIX spune că orice fir din orice proces care are acces la memoria care conține  un  mutex  partajat  de
       proces  (PTHREAD_PROCESS_SHARED)  poate opera pe acel mutex.  Cu toate acestea, pe sistemele x86 pe 64 de
       biți, definiția mutex-ului pentru x86-64 este incompatibilă cu definiția mutex-ului pentru i386, ceea  ce
       înseamnă că binarele pe 32 de biți și 64 de biți nu pot partaja mutex-uri pe sistemele x86-64.

CONSULTAȚI ȘI

       credentials(7), pthreads(7), signal(7), standards(7)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel   Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU  Versiunea   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară  cu privire la condiții privind
       drepturile de autor.  NU se asumă NICIO RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți  un  e-mail  la  ⟨translation-team-
       ro@lists.sourceforge.net⟩.