sem_overview(7) | Miscellaneous Information Manual | sem_overview(7) |
sem_overview - prezentare generală a semafoarelor POSIX
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.
Restul acestei secțiuni descrie câteva detalii specifice ale implementării în Linux a semafoarelor POSIX.
Î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.
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.
Programele care utilizează API-ul POSIX pentru semafoare trebuie compilate cu cc -pthread pentru a face legătura cu biblioteca „în timp real”, librt.
Î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.
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.
Un exemplu de utilizare a diferitelor funcții de semaforizare POSIX este prezentat în sem_wait(3).
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)
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 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.
4 decembrie 2022 | Pagini de manual de Linux 6.03 |