Provided by: manpages-ro_4.27.0-1_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   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  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.

Pagini de manual de Linux 6.9.1                    2 mai 2024                                    sem_overview(7)