Cuprins:
Definiție - Ce înseamnă Semafor?
Un semafor este un obiect de sincronizare care controlează accesul prin mai multe procese la o resursă comună într-un mediu de programare paralel. Semafoarele sunt utilizate pe scară largă pentru a controla accesul la fișiere și memoria partajată. Cele trei funcționalități de bază asociate cu semafoare sunt setate, verificați și așteptați până când se șterge pentru a-l seta din nou. |
Semafoarele sunt utilizate pentru a rezolva problemele de sincronizare de referință.
Conceptul de semafor a fost pus la punct de informaticianul olandez Edsger Dijkstra.
Techopedia explică Semaforul
Semaforii sunt valori întregi non-negative care acceptă operațiunile semafor-> P () și semafor-> V (). P este o operație atomică care așteaptă ca un semafor să fie pozitiv și apoi îl decrementează cu unul, în timp ce V este o operație atomică care crește un semafor cu unul, ceea ce implică că trezește un P. P. în așteptare și setul asociat cu semaforul sunt rutine. implementat în hardware pentru coordonarea secțiunilor critice de nivel inferior.
Semaforii sunt în mod normal implementați folosind descriptori de fișiere. Creațiile semafore nu sunt atomice. Dacă două procese încearcă să creeze, să inițializeze și să folosească în același timp un semafor, se creează o condiție de rasă. Semafoarele sunt create și inițializate la o valoare pozitivă pentru a arăta disponibilitatea unei resurse care va fi utilizată. Semafoarele pot fi puse în aplicare prin întreruperi sau folosind operații set-test.
Fiecare semafor menține seturi de permise. Acesta restricționează numărul de fire care accesează resursele. Semafoarele cu un singur permis și inițializate la unul servesc ca lacături de excludere reciprocă. Acestea sunt denumite astfel deoarece au doar două state: permis disponibil sau permis zero. Aceasta închide proprietatea, astfel încât o blocare să poată fi eliberată de un thread în afară de proprietar, ajutând la recuperarea blocajului. Semafoarele sunt utilizate pentru excluderi reciproce în care semaforul are o valoare inițială de unul, iar P () și V () sunt numite înainte și după secțiunile critice.