Provided by: manpages-ro_4.21.0-2_all bug

NUME

       sem_overview - prezentare generală a semafoarelor POSIX

DESCRIERE

       Semafoarele POSIX permit proceselor și firelor de execuție să își sincronizeze acțiunile.

       Un  semafor  este  un  număr întreg a cărui valoare nu este permisă niciodată să scadă sub
       zero.  Se pot efectua două operații asupra semafoarelor: creșterea valorii semafoarelor cu
       unu (sem_post(3)); și descreșterea valorii semafoarelor cu unu (sem_wait(3)).  În cazul în
       care valoarea unui semafor este în  prezent  zero,  atunci  o  operațiune  sem_wait(3)  se
       blochează până când valoarea devine mai mare decât zero.

       Semafoarele POSIX se prezintă sub două forme: semafoare cu nume și semafoare fără nume.

       Semafoare cu nume
              Un  semafor  cu nume este identificat printr-un nume de forma /nume-oarecare; adică
              un șir de până la NAME_MAX-4 (adică 251) de caractere cu  terminație  nulă,  format
              dintr-o  bară  oblică inițială, urmată de unul sau mai multe caractere, dintre care
              niciunul nu este o bară oblică.  Două procese pot funcționa pe același  semafor  cu
              nume, trecând același nume la sem_open(3).

              Funcția  sem_open(3) creează un nou semafor cu nume sau deschide un semafor cu nume
              existent.  După ce semaforul a fost deschis, acesta poate  fi  operat  cu  ajutorul
              funcțiilor  sem_post(3)  și  sem_wait(3).   Atunci  când  un  proces  a terminat de
              utilizat semaforul, acesta poate utiliza sem_close(3) pentru a  închide  semaforul.
              Atunci  când  toate  procesele  au  terminat de utilizat semaforul, acesta poate fi
              eliminat din sistem folosind sem_unlink(3).

       Semafoare fără nume (semafoare bazate pe memorie)
              Un semafor fără nume nu are un nume.   În  schimb,  semaforul  este  plasat  într-o
              regiune de memorie care este partajată între mai multe fire de execuție (un semafor
              thread-shared semaphore) sau procese (un  semafor  process-shared  semaphore).   Un
              semafor  partajat de fire este plasat într-o zonă de memorie partajată între firele
              unui proces, de exemplu, o  variabilă  globală.   Un  semafor  partajat  de  proces
              trebuie  plasat  într-o  regiune  de  memorie  partajată (de exemplu, un segment de
              memorie partajată System V creat cu ajutorul shmget(2) sau  un  obiect  de  memorie
              partajată POSIX creat cu ajutorul shm_open(3)).

              Înainte  de  a  fi  utilizat,  un semafor fără nume trebuie inițializat cu ajutorul
              sem_init(3).  Acesta poate fi apoi operat cu ajutorul sem_post(3)  și  sem_wait(3).
              Atunci când nu mai este necesar și înainte ca memoria în care este localizat să fie
              eliberată, semaforul trebuie distrus folosind sem_destroy(3).

       Restul acestei secțiuni descrie câteva detalii specifice  ale  implementării  în  Linux  a
       semafoarelor POSIX.

   Versiuni
       Înainte  de  Linux  2.6,  Linux  a acceptat doar semafoare fără nume, partajate pe fire de
       execuție.  Într-un sistem cu Linux 2.6 și o bibliotecă „glibc”  care  oferă  implementarea
       NPTL a firelor de execuție, este furnizată o implementare completă a semafoarelor POSIX.

   Persistența
       Semafoarele  POSIX  cu  nume  sunt  persistente  în  nucleu:  dacă  nu  este  eliminat  de
       sem_unlink(3), un semafor va exista până la închiderea sistemului.

   Vincularea
       Programele care utilizează API-ul POSIX pentru semafoare trebuie compilate cu cc  -pthread
       pentru a face legătura cu biblioteca „în timp real”, librt.

   Accesarea semafoarelor cu nume prin intermediul sistemului de fișiere
       În Linux, semafoarele cu nume sunt create într-un sistem de fișiere virtual, montat în mod
       normal sub /dev/shm, cu nume de forma sem.nume-oarecare (acesta este motivul  pentru  care
       numele de semafoare sunt limitate la NAME_MAX-4, mai degrabă decât la NAME_MAX caractere).

       Începând  cu  Linux 2.6.19, se pot plasa ACL-uri pe fișierele din acest director, pentru a
       controla permisiunile obiectelor pentru fiecare utilizator și grup în parte.

NOTE

       Semafoarele din System V (semget(2), semop(2) etc.) reprezintă  o  API  de  semafoare  mai
       veche.   Semafoarele  POSIX  oferă  o  interfață  mai  simplă  și mai bine concepută decât
       semafoarele System V; pe de altă parte, semafoarele POSIX sunt mai  puțin  disponibile  pe
       scară largă (în special pe sistemele mai vechi) decât semafoarele System V.

EXEMPLE

       Un  exemplu  de  utilizare  a  diferitelor funcții de semaforizare POSIX este prezentat în
       sem_wait(3).

CONSULTAȚI ȘI

       sem_close(3),  sem_destroy(3),  sem_getvalue(3),  sem_init(3),  sem_open(3),  sem_post(3),
       sem_unlink(3), sem_wait(3), pthreads(7), shm_overview(7)

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  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⟩.