.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2006 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sem_overview 7 "31 octombrie 2023" "Pagini de manual de Linux 6.06" .SH NUME sem_overview \- prezentare generală a semafoarelor POSIX .SH DESCRIERE Semafoarele POSIX permit proceselor și firelor de execuție să își sincronizeze acțiunile. .P 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 (\fBsem_post\fP(3)); și descreșterea valorii semafoarelor cu unu (\fBsem_wait\fP(3)). În cazul în care valoarea unui semafor este în prezent zero, atunci o operațiune \fBsem_wait\fP(3) se blochează până când valoarea devine mai mare decât zero. .P Semafoarele POSIX se prezintă sub două forme: semafoare cu nume și semafoare fără nume. .TP \fBSemafoare cu nume\fP .\" glibc allows the initial slash to be omitted, and makes .\" multiple initial slashes equivalent to a single slash. .\" This differs from the implementation of POSIX message queues. .\" glibc allows subdirectory components in the name, in which .\" case the subdirectory tree must exist under /dev/shm, and .\" the fist subdirectory component must exist as the name .\" sem.name, and all of the subdirectory components must allow the .\" required permissions if a user wants to create a semaphore .\" object in a subdirectory. Un semafor cu nume este identificat printr\-un nume de forma \fI/nume\-oarecare\fP; adică un șir de până la \fBNAME_MAX\fP\fI\-4\fP (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 \fBsem_open\fP(3). .IP Funcția \fBsem_open\fP(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 \fBsem_post\fP(3) și \fBsem_wait\fP(3). Atunci când un proces a terminat de utilizat semaforul, acesta poate utiliza \fBsem_close\fP(3) pentru a închide semaforul. Atunci când toate procesele au terminat de utilizat semaforul, acesta poate fi eliminat din sistem folosind \fBsem_unlink\fP(3). .TP \fBSemafoare fără nume (semafoare bazate pe memorie)\fP 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 \fIthread\-shared semaphore\fP) sau procese (un semafor \fIprocess\-shared semaphore\fP). 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 \fBshmget\fP(2) sau un obiect de memorie partajată POSIX creat cu ajutorul \fBshm_open\fP(3)). .IP Înainte de a fi utilizat, un semafor fără nume trebuie inițializat cu ajutorul \fBsem_init\fP(3). Acesta poate fi apoi operat cu ajutorul \fBsem_post\fP(3) și \fBsem_wait\fP(3). Atunci când nu mai este necesar și înainte ca memoria în care este localizat să fie eliberată, semaforul trebuie distrus folosind \fBsem_destroy\fP(3). .P Restul acestei secțiuni descrie câteva detalii specifice ale implementării în Linux a semafoarelor POSIX. .SS 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. .SS Persistența Semafoarele POSIX cu nume sunt persistente în nucleu: dacă nu este eliminat de \fBsem_unlink\fP(3), un semafor va exista până la închiderea sistemului. .SS Vincularea Programele care utilizează API\-ul POSIX pentru semafoare trebuie compilate cu \fIcc \-pthread\fP pentru a face legătura cu biblioteca „în timp real”, \fIlibrt\fP. .SS "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 \fI/dev/shm\fP, cu nume de forma \fBsem.\fP\fInume\-oarecare\fP (acesta este motivul pentru care numele de semafoare sunt limitate la \fBNAME_MAX\fP\fI\-4\fP, mai degrabă decât la \fBNAME_MAX\fP caractere). .P Î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. .SH NOTE Semafoarele din System V (\fBsemget\fP(2), \fBsemop\fP(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. .SH EXEMPLE Un exemplu de utilizare a diferitelor funcții de semaforizare POSIX este prezentat în \fBsem_wait\fP(3). .SH "CONSULTAȚI ȘI" \fBsem_close\fP(3), \fBsem_destroy\fP(3), \fBsem_getvalue\fP(3), \fBsem_init\fP(3), \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3), \fBpthreads\fP(7), \fBshm_overview\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .