oracular (7) sem_overview.7.gz

Provided by: manpages-ro_4.23.1-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
       ⟨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⟩.