Man page - sem_overview(7)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

sem_overview

NUME
DESCRIERE
Versiuni
Persistența
Vincularea
Accesarea semafoarelor cu nume prin intermediul sistemului de fișiere
NOTE
EXEMPLE
CONSULTAȚI ȘI
TRADUCERE

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 .